• Home
  • Raw
  • Download

Lines Matching refs:efx

134 #define FALCON_XMAC_STATS_DMA_FLAG(efx)				\  argument
135 (*(u32 *)((efx)->stats_buffer.addr + XgDmaDone_offset))
302 static int falcon_reset_hw(struct efx_nic *efx, enum reset_type method);
303 static void falcon_reconfigure_mac_wrapper(struct efx_nic *efx);
329 struct efx_nic *efx = (struct efx_nic *)data; in falcon_setsda() local
332 efx_reado(efx, &reg, FR_AB_GPIO_CTL); in falcon_setsda()
334 efx_writeo(efx, &reg, FR_AB_GPIO_CTL); in falcon_setsda()
339 struct efx_nic *efx = (struct efx_nic *)data; in falcon_setscl() local
342 efx_reado(efx, &reg, FR_AB_GPIO_CTL); in falcon_setscl()
344 efx_writeo(efx, &reg, FR_AB_GPIO_CTL); in falcon_setscl()
349 struct efx_nic *efx = (struct efx_nic *)data; in falcon_getsda() local
352 efx_reado(efx, &reg, FR_AB_GPIO_CTL); in falcon_getsda()
358 struct efx_nic *efx = (struct efx_nic *)data; in falcon_getscl() local
361 efx_reado(efx, &reg, FR_AB_GPIO_CTL); in falcon_getscl()
378 struct efx_nic *efx = channel->efx; in falcon_push_irq_moderation() local
394 efx_writed_page_locked(efx, &timer_cmd, FR_BZ_TIMER_COMMAND_P0, in falcon_push_irq_moderation()
398 static void falcon_deconfigure_mac_wrapper(struct efx_nic *efx);
400 static void falcon_prepare_flush(struct efx_nic *efx) in falcon_prepare_flush() argument
402 falcon_deconfigure_mac_wrapper(efx); in falcon_prepare_flush()
420 static inline void falcon_irq_ack_a1(struct efx_nic *efx) in falcon_irq_ack_a1() argument
425 efx_writed(efx, &reg, FR_AA_INT_ACK_KER); in falcon_irq_ack_a1()
426 efx_readd(efx, &reg, FR_AA_WORK_AROUND_BROKEN_PCI_READS); in falcon_irq_ack_a1()
431 struct efx_nic *efx = dev_id; in falcon_legacy_interrupt_a1() local
432 efx_oword_t *int_ker = efx->irq_status.addr; in falcon_legacy_interrupt_a1()
440 netif_vdbg(efx, intr, efx->net_dev, in falcon_legacy_interrupt_a1()
445 efx->last_irq_cpu = raw_smp_processor_id(); in falcon_legacy_interrupt_a1()
446 netif_vdbg(efx, intr, efx->net_dev, in falcon_legacy_interrupt_a1()
450 if (!likely(ACCESS_ONCE(efx->irq_soft_enabled))) in falcon_legacy_interrupt_a1()
456 return efx_farch_fatal_interrupt(efx); in falcon_legacy_interrupt_a1()
465 falcon_irq_ack_a1(efx); in falcon_legacy_interrupt_a1()
468 efx_schedule_channel_irq(efx_get_channel(efx, 0)); in falcon_legacy_interrupt_a1()
470 efx_schedule_channel_irq(efx_get_channel(efx, 1)); in falcon_legacy_interrupt_a1()
480 static int dummy_rx_push_rss_config(struct efx_nic *efx, bool user, in dummy_rx_push_rss_config() argument
483 (void) efx; in dummy_rx_push_rss_config()
489 static int falcon_b0_rx_push_rss_config(struct efx_nic *efx, bool user, in falcon_b0_rx_push_rss_config() argument
496 memcpy(&temp, efx->rx_hash_key, sizeof(temp)); in falcon_b0_rx_push_rss_config()
497 efx_writeo(efx, &temp, FR_BZ_RX_RSS_TKEY); in falcon_b0_rx_push_rss_config()
499 memcpy(efx->rx_indir_table, rx_indir_table, in falcon_b0_rx_push_rss_config()
500 sizeof(efx->rx_indir_table)); in falcon_b0_rx_push_rss_config()
501 efx_farch_rx_push_indir_table(efx); in falcon_b0_rx_push_rss_config()
514 static int falcon_spi_poll(struct efx_nic *efx) in falcon_spi_poll() argument
517 efx_reado(efx, &reg, FR_AB_EE_SPI_HCMD); in falcon_spi_poll()
522 static int falcon_spi_wait(struct efx_nic *efx) in falcon_spi_wait() argument
532 if (!falcon_spi_poll(efx)) in falcon_spi_wait()
538 if (!falcon_spi_poll(efx)) in falcon_spi_wait()
541 netif_err(efx, hw, efx->net_dev, in falcon_spi_wait()
550 falcon_spi_cmd(struct efx_nic *efx, const struct falcon_spi_device *spi, in falcon_spi_cmd() argument
564 rc = falcon_spi_poll(efx); in falcon_spi_cmd()
571 efx_writeo(efx, &reg, FR_AB_EE_SPI_HADR); in falcon_spi_cmd()
577 efx_writeo(efx, &reg, FR_AB_EE_SPI_HDATA); in falcon_spi_cmd()
590 efx_writeo(efx, &reg, FR_AB_EE_SPI_HCMD); in falcon_spi_cmd()
593 rc = falcon_spi_wait(efx); in falcon_spi_cmd()
599 efx_reado(efx, &reg, FR_AB_EE_SPI_HDATA); in falcon_spi_cmd()
614 falcon_spi_read(struct efx_nic *efx, const struct falcon_spi_device *spi, in falcon_spi_read() argument
625 rc = falcon_spi_cmd(efx, spi, command, start + pos, NULL, in falcon_spi_read()
664 falcon_spi_wait_write(struct efx_nic *efx, const struct falcon_spi_device *spi) in falcon_spi_wait_write() argument
671 rc = falcon_spi_cmd(efx, spi, SPI_RDSR, -1, NULL, in falcon_spi_wait_write()
678 netif_err(efx, hw, efx->net_dev, in falcon_spi_wait_write()
689 falcon_spi_write(struct efx_nic *efx, const struct falcon_spi_device *spi, in falcon_spi_write() argument
698 rc = falcon_spi_cmd(efx, spi, SPI_WREN, -1, NULL, NULL, 0); in falcon_spi_write()
705 rc = falcon_spi_cmd(efx, spi, command, start + pos, in falcon_spi_write()
710 rc = falcon_spi_wait_write(efx, spi); in falcon_spi_write()
715 rc = falcon_spi_cmd(efx, spi, command, start + pos, in falcon_spi_write()
741 struct efx_nic *efx = part->common.mtd.priv; in falcon_spi_slow_wait() local
750 rc = falcon_spi_cmd(efx, spi, SPI_RDSR, -1, NULL, in falcon_spi_slow_wait()
765 falcon_spi_unlock(struct efx_nic *efx, const struct falcon_spi_device *spi) in falcon_spi_unlock() argument
772 rc = falcon_spi_cmd(efx, spi, SPI_RDSR, -1, NULL, in falcon_spi_unlock()
780 rc = falcon_spi_cmd(efx, spi, SPI_WREN, -1, NULL, NULL, 0); in falcon_spi_unlock()
783 rc = falcon_spi_cmd(efx, spi, SPI_SST_EWSR, -1, NULL, NULL, 0); in falcon_spi_unlock()
788 rc = falcon_spi_cmd(efx, spi, SPI_WRSR, -1, &status, in falcon_spi_unlock()
792 rc = falcon_spi_wait_write(efx, spi); in falcon_spi_unlock()
805 struct efx_nic *efx = part->common.mtd.priv; in falcon_spi_erase() local
817 rc = falcon_spi_unlock(efx, spi); in falcon_spi_erase()
820 rc = falcon_spi_cmd(efx, spi, SPI_WREN, -1, NULL, NULL, 0); in falcon_spi_erase()
823 rc = falcon_spi_cmd(efx, spi, spi->erase_command, start, NULL, in falcon_spi_erase()
833 rc = falcon_spi_read(efx, spi, start + pos, block_len, in falcon_spi_erase()
851 struct efx_nic *efx = part->mtd.priv; in falcon_mtd_rename() local
854 efx->name, part->type_name); in falcon_mtd_rename()
861 struct efx_nic *efx = mtd->priv; in falcon_mtd_read() local
862 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_mtd_read()
868 rc = falcon_spi_read(efx, part->spi, part->offset + start, in falcon_mtd_read()
877 struct efx_nic *efx = mtd->priv; in falcon_mtd_erase() local
878 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_mtd_erase()
893 struct efx_nic *efx = mtd->priv; in falcon_mtd_write() local
894 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_mtd_write()
900 rc = falcon_spi_write(efx, part->spi, part->offset + start, in falcon_mtd_write()
909 struct efx_nic *efx = mtd->priv; in falcon_mtd_sync() local
910 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_mtd_sync()
919 static int falcon_mtd_probe(struct efx_nic *efx) in falcon_mtd_probe() argument
921 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_mtd_probe()
963 rc = efx_mtd_add(efx, &parts[0].common, n_parts, sizeof(*parts)); in falcon_mtd_probe()
979 static void falcon_setup_xaui(struct efx_nic *efx) in falcon_setup_xaui() argument
985 if (efx->phy_type == PHY_TYPE_NONE) in falcon_setup_xaui()
988 efx_reado(efx, &sdctl, FR_AB_XX_SD_CTL); in falcon_setup_xaui()
997 efx_writeo(efx, &sdctl, FR_AB_XX_SD_CTL); in falcon_setup_xaui()
1008 efx_writeo(efx, &txdrv, FR_AB_XX_TXDRV_CTL); in falcon_setup_xaui()
1011 int falcon_reset_xaui(struct efx_nic *efx) in falcon_reset_xaui() argument
1013 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_reset_xaui()
1022 efx_writeo(efx, &reg, FR_AB_XX_PWR_RST); in falcon_reset_xaui()
1026 efx_reado(efx, &reg, FR_AB_XX_PWR_RST); in falcon_reset_xaui()
1029 falcon_setup_xaui(efx); in falcon_reset_xaui()
1034 netif_err(efx, hw, efx->net_dev, in falcon_reset_xaui()
1039 static void falcon_ack_status_intr(struct efx_nic *efx) in falcon_ack_status_intr() argument
1041 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_ack_status_intr()
1044 if ((efx_nic_rev(efx) != EFX_REV_FALCON_B0) || LOOPBACK_INTERNAL(efx)) in falcon_ack_status_intr()
1048 if (!efx->link_state.up) in falcon_ack_status_intr()
1056 efx_reado(efx, &reg, FR_AB_XM_MGT_INT_MSK); in falcon_ack_status_intr()
1059 static bool falcon_xgxs_link_ok(struct efx_nic *efx) in falcon_xgxs_link_ok() argument
1066 efx_reado(efx, &reg, FR_AB_XX_CORE_STAT); in falcon_xgxs_link_ok()
1077 efx_writeo(efx, &reg, FR_AB_XX_CORE_STAT); in falcon_xgxs_link_ok()
1082 static bool falcon_xmac_link_ok(struct efx_nic *efx) in falcon_xmac_link_ok() argument
1090 return (efx->loopback_mode == LOOPBACK_XGMII || in falcon_xmac_link_ok()
1091 falcon_xgxs_link_ok(efx)) && in falcon_xmac_link_ok()
1092 (!(efx->mdio.mmds & (1 << MDIO_MMD_PHYXS)) || in falcon_xmac_link_ok()
1093 LOOPBACK_INTERNAL(efx) || in falcon_xmac_link_ok()
1094 efx_mdio_phyxgxs_lane_sync(efx)); in falcon_xmac_link_ok()
1097 static void falcon_reconfigure_xmac_core(struct efx_nic *efx) in falcon_reconfigure_xmac_core() argument
1101 bool rx_fc = !!(efx->link_state.fc & EFX_FC_RX); in falcon_reconfigure_xmac_core()
1102 bool tx_fc = !!(efx->link_state.fc & EFX_FC_TX); in falcon_reconfigure_xmac_core()
1109 efx_writeo(efx, &reg, FR_AB_XM_GLB_CFG); in falcon_reconfigure_xmac_core()
1119 efx_writeo(efx, &reg, FR_AB_XM_TX_CFG); in falcon_reconfigure_xmac_core()
1126 FRF_AB_XM_ACPT_ALL_UCAST, !efx->unicast_filter, in falcon_reconfigure_xmac_core()
1128 efx_writeo(efx, &reg, FR_AB_XM_RX_CFG); in falcon_reconfigure_xmac_core()
1131 max_frame_len = EFX_MAX_FRAME_LEN(efx->net_dev->mtu); in falcon_reconfigure_xmac_core()
1133 efx_writeo(efx, &reg, FR_AB_XM_RX_PARAM); in falcon_reconfigure_xmac_core()
1137 efx_writeo(efx, &reg, FR_AB_XM_TX_PARAM); in falcon_reconfigure_xmac_core()
1142 efx_writeo(efx, &reg, FR_AB_XM_FC); in falcon_reconfigure_xmac_core()
1145 memcpy(&reg, &efx->net_dev->dev_addr[0], 4); in falcon_reconfigure_xmac_core()
1146 efx_writeo(efx, &reg, FR_AB_XM_ADR_LO); in falcon_reconfigure_xmac_core()
1147 memcpy(&reg, &efx->net_dev->dev_addr[4], 2); in falcon_reconfigure_xmac_core()
1148 efx_writeo(efx, &reg, FR_AB_XM_ADR_HI); in falcon_reconfigure_xmac_core()
1151 static void falcon_reconfigure_xgxs_core(struct efx_nic *efx) in falcon_reconfigure_xgxs_core() argument
1154 bool xgxs_loopback = (efx->loopback_mode == LOOPBACK_XGXS); in falcon_reconfigure_xgxs_core()
1155 bool xaui_loopback = (efx->loopback_mode == LOOPBACK_XAUI); in falcon_reconfigure_xgxs_core()
1156 bool xgmii_loopback = (efx->loopback_mode == LOOPBACK_XGMII); in falcon_reconfigure_xgxs_core()
1161 efx_reado(efx, &reg, FR_AB_XX_CORE_STAT); in falcon_reconfigure_xgxs_core()
1165 efx_reado(efx, &reg, FR_AB_XX_SD_CTL); in falcon_reconfigure_xgxs_core()
1172 falcon_reset_xaui(efx); in falcon_reconfigure_xgxs_core()
1174 efx_reado(efx, &reg, FR_AB_XX_CORE_STAT); in falcon_reconfigure_xgxs_core()
1180 efx_writeo(efx, &reg, FR_AB_XX_CORE_STAT); in falcon_reconfigure_xgxs_core()
1182 efx_reado(efx, &reg, FR_AB_XX_SD_CTL); in falcon_reconfigure_xgxs_core()
1187 efx_writeo(efx, &reg, FR_AB_XX_SD_CTL); in falcon_reconfigure_xgxs_core()
1192 static bool falcon_xmac_link_ok_retry(struct efx_nic *efx, int tries) in falcon_xmac_link_ok_retry() argument
1194 bool mac_up = falcon_xmac_link_ok(efx); in falcon_xmac_link_ok_retry()
1196 if (LOOPBACK_MASK(efx) & LOOPBACKS_EXTERNAL(efx) & LOOPBACKS_WS || in falcon_xmac_link_ok_retry()
1197 efx_phy_mode_disabled(efx->phy_mode)) in falcon_xmac_link_ok_retry()
1201 falcon_stop_nic_stats(efx); in falcon_xmac_link_ok_retry()
1204 netif_dbg(efx, hw, efx->net_dev, "bashing xaui\n"); in falcon_xmac_link_ok_retry()
1205 falcon_reset_xaui(efx); in falcon_xmac_link_ok_retry()
1208 mac_up = falcon_xmac_link_ok(efx); in falcon_xmac_link_ok_retry()
1212 falcon_start_nic_stats(efx); in falcon_xmac_link_ok_retry()
1217 static bool falcon_xmac_check_fault(struct efx_nic *efx) in falcon_xmac_check_fault() argument
1219 return !falcon_xmac_link_ok_retry(efx, 5); in falcon_xmac_check_fault()
1222 static int falcon_reconfigure_xmac(struct efx_nic *efx) in falcon_reconfigure_xmac() argument
1224 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_reconfigure_xmac()
1226 efx_farch_filter_sync_rx_mode(efx); in falcon_reconfigure_xmac()
1228 falcon_reconfigure_xgxs_core(efx); in falcon_reconfigure_xmac()
1229 falcon_reconfigure_xmac_core(efx); in falcon_reconfigure_xmac()
1231 falcon_reconfigure_mac_wrapper(efx); in falcon_reconfigure_xmac()
1233 nic_data->xmac_poll_required = !falcon_xmac_link_ok_retry(efx, 5); in falcon_reconfigure_xmac()
1234 falcon_ack_status_intr(efx); in falcon_reconfigure_xmac()
1239 static void falcon_poll_xmac(struct efx_nic *efx) in falcon_poll_xmac() argument
1241 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_poll_xmac()
1244 if (!efx->link_state.up || !nic_data->xmac_poll_required) in falcon_poll_xmac()
1247 nic_data->xmac_poll_required = !falcon_xmac_link_ok_retry(efx, 1); in falcon_poll_xmac()
1248 falcon_ack_status_intr(efx); in falcon_poll_xmac()
1258 static void falcon_push_multicast_hash(struct efx_nic *efx) in falcon_push_multicast_hash() argument
1260 union efx_multicast_hash *mc_hash = &efx->multicast_hash; in falcon_push_multicast_hash()
1262 WARN_ON(!mutex_is_locked(&efx->mac_lock)); in falcon_push_multicast_hash()
1264 efx_writeo(efx, &mc_hash->oword[0], FR_AB_MAC_MC_HASH_REG0); in falcon_push_multicast_hash()
1265 efx_writeo(efx, &mc_hash->oword[1], FR_AB_MAC_MC_HASH_REG1); in falcon_push_multicast_hash()
1268 static void falcon_reset_macs(struct efx_nic *efx) in falcon_reset_macs() argument
1270 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_reset_macs()
1274 if (efx_nic_rev(efx) < EFX_REV_FALCON_B0) { in falcon_reset_macs()
1279 efx_writeo(efx, &reg, FR_AB_XM_GLB_CFG); in falcon_reset_macs()
1282 efx_reado(efx, &reg, FR_AB_XM_GLB_CFG); in falcon_reset_macs()
1289 netif_err(efx, hw, efx->net_dev, in falcon_reset_macs()
1296 efx_reado(efx, &mac_ctrl, FR_AB_MAC_CTRL); in falcon_reset_macs()
1298 efx_writeo(efx, &mac_ctrl, FR_AB_MAC_CTRL); in falcon_reset_macs()
1300 efx_reado(efx, &reg, FR_AB_GLB_CTL); in falcon_reset_macs()
1304 efx_writeo(efx, &reg, FR_AB_GLB_CTL); in falcon_reset_macs()
1308 efx_reado(efx, &reg, FR_AB_GLB_CTL); in falcon_reset_macs()
1312 netif_dbg(efx, hw, efx->net_dev, in falcon_reset_macs()
1318 netif_err(efx, hw, efx->net_dev, "MAC reset failed\n"); in falcon_reset_macs()
1327 efx_writeo(efx, &mac_ctrl, FR_AB_MAC_CTRL); in falcon_reset_macs()
1329 falcon_setup_xaui(efx); in falcon_reset_macs()
1332 static void falcon_drain_tx_fifo(struct efx_nic *efx) in falcon_drain_tx_fifo() argument
1336 if ((efx_nic_rev(efx) < EFX_REV_FALCON_B0) || in falcon_drain_tx_fifo()
1337 (efx->loopback_mode != LOOPBACK_NONE)) in falcon_drain_tx_fifo()
1340 efx_reado(efx, &reg, FR_AB_MAC_CTRL); in falcon_drain_tx_fifo()
1345 falcon_reset_macs(efx); in falcon_drain_tx_fifo()
1348 static void falcon_deconfigure_mac_wrapper(struct efx_nic *efx) in falcon_deconfigure_mac_wrapper() argument
1352 if (efx_nic_rev(efx) < EFX_REV_FALCON_B0) in falcon_deconfigure_mac_wrapper()
1356 efx_reado(efx, &reg, FR_AZ_RX_CFG); in falcon_deconfigure_mac_wrapper()
1358 efx_writeo(efx, &reg, FR_AZ_RX_CFG); in falcon_deconfigure_mac_wrapper()
1361 falcon_drain_tx_fifo(efx); in falcon_deconfigure_mac_wrapper()
1364 static void falcon_reconfigure_mac_wrapper(struct efx_nic *efx) in falcon_reconfigure_mac_wrapper() argument
1366 struct efx_link_state *link_state = &efx->link_state; in falcon_reconfigure_mac_wrapper()
1370 isolate = !!ACCESS_ONCE(efx->reset_pending); in falcon_reconfigure_mac_wrapper()
1386 FRF_AB_MAC_UC_PROM, !efx->unicast_filter, in falcon_reconfigure_mac_wrapper()
1391 if (efx_nic_rev(efx) >= EFX_REV_FALCON_B0) { in falcon_reconfigure_mac_wrapper()
1396 efx_writeo(efx, &reg, FR_AB_MAC_CTRL); in falcon_reconfigure_mac_wrapper()
1399 falcon_push_multicast_hash(efx); in falcon_reconfigure_mac_wrapper()
1401 efx_reado(efx, &reg, FR_AZ_RX_CFG); in falcon_reconfigure_mac_wrapper()
1406 if (efx_nic_rev(efx) >= EFX_REV_FALCON_B0) in falcon_reconfigure_mac_wrapper()
1408 efx_writeo(efx, &reg, FR_AZ_RX_CFG); in falcon_reconfigure_mac_wrapper()
1411 static void falcon_stats_request(struct efx_nic *efx) in falcon_stats_request() argument
1413 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_stats_request()
1419 FALCON_XMAC_STATS_DMA_FLAG(efx) = 0; in falcon_stats_request()
1427 efx->stats_buffer.dma_addr); in falcon_stats_request()
1428 efx_writeo(efx, &reg, FR_AB_MAC_STAT_DMA); in falcon_stats_request()
1433 static void falcon_stats_complete(struct efx_nic *efx) in falcon_stats_complete() argument
1435 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_stats_complete()
1441 if (FALCON_XMAC_STATS_DMA_FLAG(efx)) { in falcon_stats_complete()
1445 efx->stats_buffer.addr, true); in falcon_stats_complete()
1447 netif_err(efx, hw, efx->net_dev, in falcon_stats_complete()
1454 struct efx_nic *efx = (struct efx_nic *)context; in falcon_stats_timer_func() local
1455 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_stats_timer_func()
1457 spin_lock(&efx->stats_lock); in falcon_stats_timer_func()
1459 falcon_stats_complete(efx); in falcon_stats_timer_func()
1461 falcon_stats_request(efx); in falcon_stats_timer_func()
1463 spin_unlock(&efx->stats_lock); in falcon_stats_timer_func()
1466 static bool falcon_loopback_link_poll(struct efx_nic *efx) in falcon_loopback_link_poll() argument
1468 struct efx_link_state old_state = efx->link_state; in falcon_loopback_link_poll()
1470 WARN_ON(!mutex_is_locked(&efx->mac_lock)); in falcon_loopback_link_poll()
1471 WARN_ON(!LOOPBACK_INTERNAL(efx)); in falcon_loopback_link_poll()
1473 efx->link_state.fd = true; in falcon_loopback_link_poll()
1474 efx->link_state.fc = efx->wanted_fc; in falcon_loopback_link_poll()
1475 efx->link_state.up = true; in falcon_loopback_link_poll()
1476 efx->link_state.speed = 10000; in falcon_loopback_link_poll()
1478 return !efx_link_state_equal(&efx->link_state, &old_state); in falcon_loopback_link_poll()
1481 static int falcon_reconfigure_port(struct efx_nic *efx) in falcon_reconfigure_port() argument
1485 WARN_ON(efx_nic_rev(efx) > EFX_REV_FALCON_B0); in falcon_reconfigure_port()
1491 if (LOOPBACK_INTERNAL(efx)) in falcon_reconfigure_port()
1492 falcon_loopback_link_poll(efx); in falcon_reconfigure_port()
1494 efx->phy_op->poll(efx); in falcon_reconfigure_port()
1496 falcon_stop_nic_stats(efx); in falcon_reconfigure_port()
1497 falcon_deconfigure_mac_wrapper(efx); in falcon_reconfigure_port()
1499 falcon_reset_macs(efx); in falcon_reconfigure_port()
1501 efx->phy_op->reconfigure(efx); in falcon_reconfigure_port()
1502 rc = falcon_reconfigure_xmac(efx); in falcon_reconfigure_port()
1505 falcon_start_nic_stats(efx); in falcon_reconfigure_port()
1508 efx_link_status_changed(efx); in falcon_reconfigure_port()
1520 static void falcon_a1_prepare_enable_fc_tx(struct efx_nic *efx) in falcon_a1_prepare_enable_fc_tx() argument
1523 efx_schedule_reset(efx, RESET_TYPE_INVISIBLE); in falcon_a1_prepare_enable_fc_tx()
1526 static void falcon_b0_prepare_enable_fc_tx(struct efx_nic *efx) in falcon_b0_prepare_enable_fc_tx() argument
1529 falcon_stop_nic_stats(efx); in falcon_b0_prepare_enable_fc_tx()
1530 falcon_drain_tx_fifo(efx); in falcon_b0_prepare_enable_fc_tx()
1531 falcon_reconfigure_xmac(efx); in falcon_b0_prepare_enable_fc_tx()
1532 falcon_start_nic_stats(efx); in falcon_b0_prepare_enable_fc_tx()
1543 static int falcon_gmii_wait(struct efx_nic *efx) in falcon_gmii_wait() argument
1550 efx_reado(efx, &md_stat, FR_AB_MD_STAT); in falcon_gmii_wait()
1554 netif_err(efx, hw, efx->net_dev, in falcon_gmii_wait()
1564 netif_err(efx, hw, efx->net_dev, "timed out waiting for GMII\n"); in falcon_gmii_wait()
1572 struct efx_nic *efx = netdev_priv(net_dev); in falcon_mdio_write() local
1573 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_mdio_write()
1577 netif_vdbg(efx, hw, efx->net_dev, in falcon_mdio_write()
1584 rc = falcon_gmii_wait(efx); in falcon_mdio_write()
1590 efx_writeo(efx, &reg, FR_AB_MD_PHY_ADR); in falcon_mdio_write()
1594 efx_writeo(efx, &reg, FR_AB_MD_ID); in falcon_mdio_write()
1598 efx_writeo(efx, &reg, FR_AB_MD_TXD); in falcon_mdio_write()
1603 efx_writeo(efx, &reg, FR_AB_MD_CS); in falcon_mdio_write()
1606 rc = falcon_gmii_wait(efx); in falcon_mdio_write()
1612 efx_writeo(efx, &reg, FR_AB_MD_CS); in falcon_mdio_write()
1625 struct efx_nic *efx = netdev_priv(net_dev); in falcon_mdio_read() local
1626 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_mdio_read()
1633 rc = falcon_gmii_wait(efx); in falcon_mdio_read()
1638 efx_writeo(efx, &reg, FR_AB_MD_PHY_ADR); in falcon_mdio_read()
1642 efx_writeo(efx, &reg, FR_AB_MD_ID); in falcon_mdio_read()
1646 efx_writeo(efx, &reg, FR_AB_MD_CS); in falcon_mdio_read()
1649 rc = falcon_gmii_wait(efx); in falcon_mdio_read()
1651 efx_reado(efx, &reg, FR_AB_MD_RXD); in falcon_mdio_read()
1653 netif_vdbg(efx, hw, efx->net_dev, in falcon_mdio_read()
1661 efx_writeo(efx, &reg, FR_AB_MD_CS); in falcon_mdio_read()
1663 netif_dbg(efx, hw, efx->net_dev, in falcon_mdio_read()
1674 static int falcon_probe_port(struct efx_nic *efx) in falcon_probe_port() argument
1676 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_probe_port()
1679 switch (efx->phy_type) { in falcon_probe_port()
1681 efx->phy_op = &falcon_sfx7101_phy_ops; in falcon_probe_port()
1685 efx->phy_op = &falcon_qt202x_phy_ops; in falcon_probe_port()
1688 efx->phy_op = &falcon_txc_phy_ops; in falcon_probe_port()
1691 netif_err(efx, probe, efx->net_dev, "Unknown PHY type %d\n", in falcon_probe_port()
1692 efx->phy_type); in falcon_probe_port()
1698 efx->mdio.mdio_read = falcon_mdio_read; in falcon_probe_port()
1699 efx->mdio.mdio_write = falcon_mdio_write; in falcon_probe_port()
1700 rc = efx->phy_op->probe(efx); in falcon_probe_port()
1705 efx->link_state.speed = 10000; in falcon_probe_port()
1706 efx->link_state.fd = true; in falcon_probe_port()
1709 if (efx_nic_rev(efx) >= EFX_REV_FALCON_B0) in falcon_probe_port()
1710 efx->wanted_fc = EFX_FC_RX | EFX_FC_TX; in falcon_probe_port()
1712 efx->wanted_fc = EFX_FC_RX; in falcon_probe_port()
1713 if (efx->mdio.mmds & MDIO_DEVS_AN) in falcon_probe_port()
1714 efx->wanted_fc |= EFX_FC_AUTO; in falcon_probe_port()
1717 rc = efx_nic_alloc_buffer(efx, &efx->stats_buffer, in falcon_probe_port()
1721 netif_dbg(efx, probe, efx->net_dev, in falcon_probe_port()
1723 (u64)efx->stats_buffer.dma_addr, in falcon_probe_port()
1724 efx->stats_buffer.addr, in falcon_probe_port()
1725 (u64)virt_to_phys(efx->stats_buffer.addr)); in falcon_probe_port()
1730 static void falcon_remove_port(struct efx_nic *efx) in falcon_remove_port() argument
1732 efx->phy_op->remove(efx); in falcon_remove_port()
1733 efx_nic_free_buffer(efx, &efx->stats_buffer); in falcon_remove_port()
1740 struct efx_nic *efx = channel->efx; in falcon_handle_global_event() local
1741 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_handle_global_event()
1749 if ((efx_nic_rev(efx) == EFX_REV_FALCON_B0) && in falcon_handle_global_event()
1755 if (efx_nic_rev(efx) <= EFX_REV_FALCON_A1 ? in falcon_handle_global_event()
1758 netif_err(efx, rx_err, efx->net_dev, in falcon_handle_global_event()
1762 atomic_inc(&efx->rx_reset); in falcon_handle_global_event()
1763 efx_schedule_reset(efx, EFX_WORKAROUND_6555(efx) ? in falcon_handle_global_event()
1778 falcon_read_nvram(struct efx_nic *efx, struct falcon_nvconfig *nvconfig_out) in falcon_read_nvram() argument
1780 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_read_nvram()
1801 rc = falcon_spi_read(efx, spi, 0, FALCON_NVCONFIG_END, NULL, region); in falcon_read_nvram()
1804 netif_err(efx, hw, efx->net_dev, "Failed to read %s\n", in falcon_read_nvram()
1816 netif_err(efx, hw, efx->net_dev, in falcon_read_nvram()
1821 netif_err(efx, hw, efx->net_dev, in falcon_read_nvram()
1835 netif_err(efx, hw, efx->net_dev, in falcon_read_nvram()
1849 static int falcon_test_nvram(struct efx_nic *efx) in falcon_test_nvram() argument
1851 return falcon_read_nvram(efx, NULL); in falcon_test_nvram()
1894 falcon_b0_test_chip(struct efx_nic *efx, struct efx_self_tests *tests) in falcon_b0_test_chip() argument
1899 mutex_lock(&efx->mac_lock); in falcon_b0_test_chip()
1900 if (efx->loopback_modes) { in falcon_b0_test_chip()
1903 if (efx->loopback_modes & (1 << LOOPBACK_XGMII)) in falcon_b0_test_chip()
1904 efx->loopback_mode = LOOPBACK_XGMII; in falcon_b0_test_chip()
1906 efx->loopback_mode = __ffs(efx->loopback_modes); in falcon_b0_test_chip()
1908 __efx_reconfigure_port(efx); in falcon_b0_test_chip()
1909 mutex_unlock(&efx->mac_lock); in falcon_b0_test_chip()
1911 efx_reset_down(efx, reset_method); in falcon_b0_test_chip()
1914 efx_farch_test_registers(efx, falcon_b0_register_tests, in falcon_b0_test_chip()
1918 rc = falcon_reset_hw(efx, reset_method); in falcon_b0_test_chip()
1919 rc2 = efx_reset_up(efx, reset_method, rc == 0); in falcon_b0_test_chip()
1974 static int __falcon_reset_hw(struct efx_nic *efx, enum reset_type method) in __falcon_reset_hw() argument
1976 struct falcon_nic_data *nic_data = efx->nic_data; in __falcon_reset_hw()
1980 netif_dbg(efx, hw, efx->net_dev, "performing %s hardware reset\n", in __falcon_reset_hw()
1985 rc = pci_save_state(efx->pci_dev); in __falcon_reset_hw()
1987 netif_err(efx, drv, efx->net_dev, in __falcon_reset_hw()
1992 if (efx_nic_is_dual_func(efx)) { in __falcon_reset_hw()
1995 netif_err(efx, drv, efx->net_dev, in __falcon_reset_hw()
2021 efx_writeo(efx, &glb_ctl_reg_ker, FR_AB_GLB_CTL); in __falcon_reset_hw()
2023 netif_dbg(efx, hw, efx->net_dev, "waiting for hardware reset\n"); in __falcon_reset_hw()
2028 if (efx_nic_is_dual_func(efx)) in __falcon_reset_hw()
2030 pci_restore_state(efx->pci_dev); in __falcon_reset_hw()
2031 netif_dbg(efx, drv, efx->net_dev, in __falcon_reset_hw()
2036 efx_reado(efx, &glb_ctl_reg_ker, FR_AB_GLB_CTL); in __falcon_reset_hw()
2039 netif_err(efx, hw, efx->net_dev, in __falcon_reset_hw()
2043 netif_dbg(efx, hw, efx->net_dev, "hardware reset complete\n"); in __falcon_reset_hw()
2049 pci_restore_state(efx->pci_dev); in __falcon_reset_hw()
2055 static int falcon_reset_hw(struct efx_nic *efx, enum reset_type method) in falcon_reset_hw() argument
2057 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_reset_hw()
2061 rc = __falcon_reset_hw(efx, method); in falcon_reset_hw()
2067 static void falcon_monitor(struct efx_nic *efx) in falcon_monitor() argument
2072 BUG_ON(!mutex_is_locked(&efx->mac_lock)); in falcon_monitor()
2074 rc = falcon_board(efx)->type->monitor(efx); in falcon_monitor()
2076 netif_err(efx, hw, efx->net_dev, in falcon_monitor()
2079 efx->phy_mode |= PHY_MODE_LOW_POWER; in falcon_monitor()
2080 rc = __efx_reconfigure_port(efx); in falcon_monitor()
2084 if (LOOPBACK_INTERNAL(efx)) in falcon_monitor()
2085 link_changed = falcon_loopback_link_poll(efx); in falcon_monitor()
2087 link_changed = efx->phy_op->poll(efx); in falcon_monitor()
2090 falcon_stop_nic_stats(efx); in falcon_monitor()
2091 falcon_deconfigure_mac_wrapper(efx); in falcon_monitor()
2093 falcon_reset_macs(efx); in falcon_monitor()
2094 rc = falcon_reconfigure_xmac(efx); in falcon_monitor()
2097 falcon_start_nic_stats(efx); in falcon_monitor()
2099 efx_link_status_changed(efx); in falcon_monitor()
2102 falcon_poll_xmac(efx); in falcon_monitor()
2108 static int falcon_reset_sram(struct efx_nic *efx) in falcon_reset_sram() argument
2114 efx_reado(efx, &gpio_cfg_reg_ker, FR_AB_GPIO_CTL); in falcon_reset_sram()
2117 efx_writeo(efx, &gpio_cfg_reg_ker, FR_AB_GPIO_CTL); in falcon_reset_sram()
2123 efx_writeo(efx, &srm_cfg_reg_ker, FR_AZ_SRM_CFG); in falcon_reset_sram()
2128 netif_dbg(efx, hw, efx->net_dev, in falcon_reset_sram()
2135 efx_reado(efx, &srm_cfg_reg_ker, FR_AZ_SRM_CFG); in falcon_reset_sram()
2137 netif_dbg(efx, hw, efx->net_dev, in falcon_reset_sram()
2144 netif_err(efx, hw, efx->net_dev, "timed out waiting for SRAM reset\n"); in falcon_reset_sram()
2148 static void falcon_spi_device_init(struct efx_nic *efx, in falcon_spi_device_init() argument
2174 static int falcon_probe_nvconfig(struct efx_nic *efx) in falcon_probe_nvconfig() argument
2176 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_probe_nvconfig()
2184 rc = falcon_read_nvram(efx, nvconfig); in falcon_probe_nvconfig()
2188 efx->phy_type = nvconfig->board_v2.port0_phy_type; in falcon_probe_nvconfig()
2189 efx->mdio.prtad = nvconfig->board_v2.port0_phy_addr; in falcon_probe_nvconfig()
2193 efx, &nic_data->spi_flash, FFE_AB_SPI_DEVICE_FLASH, in falcon_probe_nvconfig()
2197 efx, &nic_data->spi_eeprom, FFE_AB_SPI_DEVICE_EEPROM, in falcon_probe_nvconfig()
2203 ether_addr_copy(efx->net_dev->perm_addr, nvconfig->mac_address[0]); in falcon_probe_nvconfig()
2205 netif_dbg(efx, probe, efx->net_dev, "PHY is %d phy_id %d\n", in falcon_probe_nvconfig()
2206 efx->phy_type, efx->mdio.prtad); in falcon_probe_nvconfig()
2208 rc = falcon_probe_board(efx, in falcon_probe_nvconfig()
2215 static int falcon_dimension_resources(struct efx_nic *efx) in falcon_dimension_resources() argument
2217 efx->rx_dc_base = 0x20000; in falcon_dimension_resources()
2218 efx->tx_dc_base = 0x26000; in falcon_dimension_resources()
2223 static void falcon_probe_spi_devices(struct efx_nic *efx) in falcon_probe_spi_devices() argument
2225 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_probe_spi_devices()
2229 efx_reado(efx, &gpio_ctl, FR_AB_GPIO_CTL); in falcon_probe_spi_devices()
2230 efx_reado(efx, &nic_stat, FR_AB_NIC_STAT); in falcon_probe_spi_devices()
2231 efx_reado(efx, &ee_vpd_cfg, FR_AB_EE_VPD_CFG0); in falcon_probe_spi_devices()
2236 netif_dbg(efx, probe, efx->net_dev, "Booted from %s\n", in falcon_probe_spi_devices()
2243 netif_dbg(efx, probe, efx->net_dev, in falcon_probe_spi_devices()
2251 efx_writeo(efx, &ee_vpd_cfg, FR_AB_EE_VPD_CFG0); in falcon_probe_spi_devices()
2257 falcon_spi_device_init(efx, &nic_data->spi_flash, in falcon_probe_spi_devices()
2261 falcon_spi_device_init(efx, &nic_data->spi_eeprom, in falcon_probe_spi_devices()
2266 static unsigned int falcon_a1_mem_map_size(struct efx_nic *efx) in falcon_a1_mem_map_size() argument
2271 static unsigned int falcon_b0_mem_map_size(struct efx_nic *efx) in falcon_b0_mem_map_size() argument
2280 static int falcon_probe_nic(struct efx_nic *efx) in falcon_probe_nic() argument
2286 efx->primary = efx; /* only one usable function per controller */ in falcon_probe_nic()
2292 efx->nic_data = nic_data; in falcon_probe_nic()
2296 if (efx_farch_fpga_ver(efx) != 0) { in falcon_probe_nic()
2297 netif_err(efx, probe, efx->net_dev, in falcon_probe_nic()
2302 if (efx_nic_rev(efx) <= EFX_REV_FALCON_A1) { in falcon_probe_nic()
2305 u8 pci_rev = efx->pci_dev->revision; in falcon_probe_nic()
2308 netif_err(efx, probe, efx->net_dev, in falcon_probe_nic()
2312 efx_reado(efx, &nic_stat, FR_AB_NIC_STAT); in falcon_probe_nic()
2314 netif_err(efx, probe, efx->net_dev, in falcon_probe_nic()
2319 netif_err(efx, probe, efx->net_dev, in falcon_probe_nic()
2324 dev = pci_dev_get(efx->pci_dev); in falcon_probe_nic()
2328 if (dev->bus == efx->pci_dev->bus && in falcon_probe_nic()
2329 dev->devfn == efx->pci_dev->devfn + 1) { in falcon_probe_nic()
2335 netif_err(efx, probe, efx->net_dev, in falcon_probe_nic()
2343 rc = __falcon_reset_hw(efx, RESET_TYPE_ALL); in falcon_probe_nic()
2345 netif_err(efx, probe, efx->net_dev, "failed to reset NIC\n"); in falcon_probe_nic()
2350 rc = efx_nic_alloc_buffer(efx, &efx->irq_status, sizeof(efx_oword_t), in falcon_probe_nic()
2354 BUG_ON(efx->irq_status.dma_addr & 0x0f); in falcon_probe_nic()
2356 netif_dbg(efx, probe, efx->net_dev, in falcon_probe_nic()
2358 (u64)efx->irq_status.dma_addr, in falcon_probe_nic()
2359 efx->irq_status.addr, in falcon_probe_nic()
2360 (u64)virt_to_phys(efx->irq_status.addr)); in falcon_probe_nic()
2362 falcon_probe_spi_devices(efx); in falcon_probe_nic()
2365 rc = falcon_probe_nvconfig(efx); in falcon_probe_nic()
2368 netif_err(efx, probe, efx->net_dev, "NVRAM is invalid\n"); in falcon_probe_nic()
2372 efx->max_channels = (efx_nic_rev(efx) <= EFX_REV_FALCON_A1 ? 4 : in falcon_probe_nic()
2374 efx->max_tx_channels = efx->max_channels; in falcon_probe_nic()
2375 efx->timer_quantum_ns = 4968; /* 621 cycles */ in falcon_probe_nic()
2378 board = falcon_board(efx); in falcon_probe_nic()
2381 board->i2c_data.data = efx; in falcon_probe_nic()
2383 board->i2c_adap.dev.parent = &efx->pci_dev->dev; in falcon_probe_nic()
2390 rc = falcon_board(efx)->type->init(efx); in falcon_probe_nic()
2392 netif_err(efx, probe, efx->net_dev, in falcon_probe_nic()
2399 (unsigned long)efx); in falcon_probe_nic()
2407 efx_nic_free_buffer(efx, &efx->irq_status); in falcon_probe_nic()
2416 kfree(efx->nic_data); in falcon_probe_nic()
2420 static void falcon_init_rx_cfg(struct efx_nic *efx) in falcon_init_rx_cfg() argument
2427 efx_reado(efx, &reg, FR_AZ_RX_CFG); in falcon_init_rx_cfg()
2428 if (efx_nic_rev(efx) <= EFX_REV_FALCON_A1) { in falcon_init_rx_cfg()
2464 efx_writeo(efx, &reg, FR_AZ_RX_CFG); in falcon_init_rx_cfg()
2471 static int falcon_init_nic(struct efx_nic *efx) in falcon_init_nic() argument
2477 efx_reado(efx, &temp, FR_AB_NIC_STAT); in falcon_init_nic()
2479 efx_writeo(efx, &temp, FR_AB_NIC_STAT); in falcon_init_nic()
2481 rc = falcon_reset_sram(efx); in falcon_init_nic()
2488 if (EFX_WORKAROUND_5129(efx)) { in falcon_init_nic()
2489 efx_reado(efx, &temp, FR_AZ_CSR_SPARE); in falcon_init_nic()
2491 efx_writeo(efx, &temp, FR_AZ_CSR_SPARE); in falcon_init_nic()
2494 if (EFX_WORKAROUND_7244(efx)) { in falcon_init_nic()
2495 efx_reado(efx, &temp, FR_BZ_RX_FILTER_CTL); in falcon_init_nic()
2500 efx_writeo(efx, &temp, FR_BZ_RX_FILTER_CTL); in falcon_init_nic()
2507 efx_reado(efx, &temp, FR_AA_RX_SELF_RST); in falcon_init_nic()
2510 if (EFX_WORKAROUND_5583(efx)) in falcon_init_nic()
2512 efx_writeo(efx, &temp, FR_AA_RX_SELF_RST); in falcon_init_nic()
2517 efx_reado(efx, &temp, FR_AZ_TX_CFG); in falcon_init_nic()
2519 efx_writeo(efx, &temp, FR_AZ_TX_CFG); in falcon_init_nic()
2521 falcon_init_rx_cfg(efx); in falcon_init_nic()
2523 if (efx_nic_rev(efx) >= EFX_REV_FALCON_B0) { in falcon_init_nic()
2524 falcon_b0_rx_push_rss_config(efx, false, efx->rx_indir_table); in falcon_init_nic()
2528 efx_writeo(efx, &temp, FR_BZ_DP_CTRL); in falcon_init_nic()
2531 efx_farch_init_common(efx); in falcon_init_nic()
2536 static void falcon_remove_nic(struct efx_nic *efx) in falcon_remove_nic() argument
2538 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_remove_nic()
2539 struct falcon_board *board = falcon_board(efx); in falcon_remove_nic()
2541 board->type->fini(efx); in falcon_remove_nic()
2547 efx_nic_free_buffer(efx, &efx->irq_status); in falcon_remove_nic()
2549 __falcon_reset_hw(efx, RESET_TYPE_ALL); in falcon_remove_nic()
2558 kfree(efx->nic_data); in falcon_remove_nic()
2559 efx->nic_data = NULL; in falcon_remove_nic()
2562 static size_t falcon_describe_nic_stats(struct efx_nic *efx, u8 *names) in falcon_describe_nic_stats() argument
2568 static size_t falcon_update_nic_stats(struct efx_nic *efx, u64 *full_stats, in falcon_update_nic_stats() argument
2571 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_update_nic_stats()
2576 efx_reado(efx, &cnt, FR_AZ_RX_NODESC_DROP); in falcon_update_nic_stats()
2581 FALCON_XMAC_STATS_DMA_FLAG(efx)) { in falcon_update_nic_stats()
2587 stats, efx->stats_buffer.addr, true); in falcon_update_nic_stats()
2595 efx_update_sw_stats(efx, stats); in falcon_update_nic_stats()
2626 void falcon_start_nic_stats(struct efx_nic *efx) in falcon_start_nic_stats() argument
2628 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_start_nic_stats()
2630 spin_lock_bh(&efx->stats_lock); in falcon_start_nic_stats()
2632 falcon_stats_request(efx); in falcon_start_nic_stats()
2633 spin_unlock_bh(&efx->stats_lock); in falcon_start_nic_stats()
2639 static void falcon_pull_nic_stats(struct efx_nic *efx) in falcon_pull_nic_stats() argument
2644 void falcon_stop_nic_stats(struct efx_nic *efx) in falcon_stop_nic_stats() argument
2646 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_stop_nic_stats()
2651 spin_lock_bh(&efx->stats_lock); in falcon_stop_nic_stats()
2653 spin_unlock_bh(&efx->stats_lock); in falcon_stop_nic_stats()
2660 if (FALCON_XMAC_STATS_DMA_FLAG(efx)) in falcon_stop_nic_stats()
2665 spin_lock_bh(&efx->stats_lock); in falcon_stop_nic_stats()
2666 falcon_stats_complete(efx); in falcon_stop_nic_stats()
2667 spin_unlock_bh(&efx->stats_lock); in falcon_stop_nic_stats()
2670 static void falcon_set_id_led(struct efx_nic *efx, enum efx_led_mode mode) in falcon_set_id_led() argument
2672 falcon_board(efx)->type->set_id_led(efx, mode); in falcon_set_id_led()
2682 static void falcon_get_wol(struct efx_nic *efx, struct ethtool_wolinfo *wol) in falcon_get_wol() argument
2689 static int falcon_set_wol(struct efx_nic *efx, u32 type) in falcon_set_wol() argument