Lines Matching refs:efx

133 #define FALCON_XMAC_STATS_DMA_FLAG(efx)				\  argument
134 (*(u32 *)((efx)->stats_buffer.addr + XgDmaDone_offset))
301 static int falcon_reset_hw(struct ef4_nic *efx, enum reset_type method);
302 static void falcon_reconfigure_mac_wrapper(struct ef4_nic *efx);
328 struct ef4_nic *efx = (struct ef4_nic *)data; in falcon_setsda() local
331 ef4_reado(efx, &reg, FR_AB_GPIO_CTL); in falcon_setsda()
333 ef4_writeo(efx, &reg, FR_AB_GPIO_CTL); in falcon_setsda()
338 struct ef4_nic *efx = (struct ef4_nic *)data; in falcon_setscl() local
341 ef4_reado(efx, &reg, FR_AB_GPIO_CTL); in falcon_setscl()
343 ef4_writeo(efx, &reg, FR_AB_GPIO_CTL); in falcon_setscl()
348 struct ef4_nic *efx = (struct ef4_nic *)data; in falcon_getsda() local
351 ef4_reado(efx, &reg, FR_AB_GPIO_CTL); in falcon_getsda()
357 struct ef4_nic *efx = (struct ef4_nic *)data; in falcon_getscl() local
360 ef4_reado(efx, &reg, FR_AB_GPIO_CTL); in falcon_getscl()
377 struct ef4_nic *efx = channel->efx; in falcon_push_irq_moderation() local
383 ticks = ef4_usecs_to_ticks(efx, channel->irq_moderation_us); in falcon_push_irq_moderation()
396 ef4_writed_page_locked(efx, &timer_cmd, FR_BZ_TIMER_COMMAND_P0, in falcon_push_irq_moderation()
400 static void falcon_deconfigure_mac_wrapper(struct ef4_nic *efx);
402 static void falcon_prepare_flush(struct ef4_nic *efx) in falcon_prepare_flush() argument
404 falcon_deconfigure_mac_wrapper(efx); in falcon_prepare_flush()
422 static inline void falcon_irq_ack_a1(struct ef4_nic *efx) in falcon_irq_ack_a1() argument
427 ef4_writed(efx, &reg, FR_AA_INT_ACK_KER); in falcon_irq_ack_a1()
428 ef4_readd(efx, &reg, FR_AA_WORK_AROUND_BROKEN_PCI_READS); in falcon_irq_ack_a1()
433 struct ef4_nic *efx = dev_id; in falcon_legacy_interrupt_a1() local
434 ef4_oword_t *int_ker = efx->irq_status.addr; in falcon_legacy_interrupt_a1()
442 netif_vdbg(efx, intr, efx->net_dev, in falcon_legacy_interrupt_a1()
447 efx->last_irq_cpu = raw_smp_processor_id(); in falcon_legacy_interrupt_a1()
448 netif_vdbg(efx, intr, efx->net_dev, in falcon_legacy_interrupt_a1()
452 if (!likely(READ_ONCE(efx->irq_soft_enabled))) in falcon_legacy_interrupt_a1()
458 return ef4_farch_fatal_interrupt(efx); in falcon_legacy_interrupt_a1()
467 falcon_irq_ack_a1(efx); in falcon_legacy_interrupt_a1()
470 ef4_schedule_channel_irq(ef4_get_channel(efx, 0)); in falcon_legacy_interrupt_a1()
472 ef4_schedule_channel_irq(ef4_get_channel(efx, 1)); in falcon_legacy_interrupt_a1()
482 static int dummy_rx_push_rss_config(struct ef4_nic *efx, bool user, in dummy_rx_push_rss_config() argument
485 (void) efx; in dummy_rx_push_rss_config()
491 static int falcon_b0_rx_push_rss_config(struct ef4_nic *efx, bool user, in falcon_b0_rx_push_rss_config() argument
498 memcpy(&temp, efx->rx_hash_key, sizeof(temp)); in falcon_b0_rx_push_rss_config()
499 ef4_writeo(efx, &temp, FR_BZ_RX_RSS_TKEY); in falcon_b0_rx_push_rss_config()
501 memcpy(efx->rx_indir_table, rx_indir_table, in falcon_b0_rx_push_rss_config()
502 sizeof(efx->rx_indir_table)); in falcon_b0_rx_push_rss_config()
503 ef4_farch_rx_push_indir_table(efx); in falcon_b0_rx_push_rss_config()
516 static int falcon_spi_poll(struct ef4_nic *efx) in falcon_spi_poll() argument
519 ef4_reado(efx, &reg, FR_AB_EE_SPI_HCMD); in falcon_spi_poll()
524 static int falcon_spi_wait(struct ef4_nic *efx) in falcon_spi_wait() argument
534 if (!falcon_spi_poll(efx)) in falcon_spi_wait()
540 if (!falcon_spi_poll(efx)) in falcon_spi_wait()
543 netif_err(efx, hw, efx->net_dev, in falcon_spi_wait()
552 falcon_spi_cmd(struct ef4_nic *efx, const struct falcon_spi_device *spi, in falcon_spi_cmd() argument
566 rc = falcon_spi_poll(efx); in falcon_spi_cmd()
573 ef4_writeo(efx, &reg, FR_AB_EE_SPI_HADR); in falcon_spi_cmd()
579 ef4_writeo(efx, &reg, FR_AB_EE_SPI_HDATA); in falcon_spi_cmd()
592 ef4_writeo(efx, &reg, FR_AB_EE_SPI_HCMD); in falcon_spi_cmd()
595 rc = falcon_spi_wait(efx); in falcon_spi_cmd()
601 ef4_reado(efx, &reg, FR_AB_EE_SPI_HDATA); in falcon_spi_cmd()
616 falcon_spi_read(struct ef4_nic *efx, const struct falcon_spi_device *spi, in falcon_spi_read() argument
627 rc = falcon_spi_cmd(efx, spi, command, start + pos, NULL, in falcon_spi_read()
666 falcon_spi_wait_write(struct ef4_nic *efx, const struct falcon_spi_device *spi) in falcon_spi_wait_write() argument
673 rc = falcon_spi_cmd(efx, spi, SPI_RDSR, -1, NULL, in falcon_spi_wait_write()
680 netif_err(efx, hw, efx->net_dev, in falcon_spi_wait_write()
691 falcon_spi_write(struct ef4_nic *efx, const struct falcon_spi_device *spi, in falcon_spi_write() argument
700 rc = falcon_spi_cmd(efx, spi, SPI_WREN, -1, NULL, NULL, 0); in falcon_spi_write()
707 rc = falcon_spi_cmd(efx, spi, command, start + pos, in falcon_spi_write()
712 rc = falcon_spi_wait_write(efx, spi); in falcon_spi_write()
717 rc = falcon_spi_cmd(efx, spi, command, start + pos, in falcon_spi_write()
743 struct ef4_nic *efx = part->common.mtd.priv; in falcon_spi_slow_wait() local
752 rc = falcon_spi_cmd(efx, spi, SPI_RDSR, -1, NULL, in falcon_spi_slow_wait()
767 falcon_spi_unlock(struct ef4_nic *efx, const struct falcon_spi_device *spi) in falcon_spi_unlock() argument
774 rc = falcon_spi_cmd(efx, spi, SPI_RDSR, -1, NULL, in falcon_spi_unlock()
782 rc = falcon_spi_cmd(efx, spi, SPI_WREN, -1, NULL, NULL, 0); in falcon_spi_unlock()
785 rc = falcon_spi_cmd(efx, spi, SPI_SST_EWSR, -1, NULL, NULL, 0); in falcon_spi_unlock()
790 rc = falcon_spi_cmd(efx, spi, SPI_WRSR, -1, &status, in falcon_spi_unlock()
794 rc = falcon_spi_wait_write(efx, spi); in falcon_spi_unlock()
807 struct ef4_nic *efx = part->common.mtd.priv; in falcon_spi_erase() local
819 rc = falcon_spi_unlock(efx, spi); in falcon_spi_erase()
822 rc = falcon_spi_cmd(efx, spi, SPI_WREN, -1, NULL, NULL, 0); in falcon_spi_erase()
825 rc = falcon_spi_cmd(efx, spi, spi->erase_command, start, NULL, in falcon_spi_erase()
835 rc = falcon_spi_read(efx, spi, start + pos, block_len, in falcon_spi_erase()
853 struct ef4_nic *efx = part->mtd.priv; in falcon_mtd_rename() local
856 efx->name, part->type_name); in falcon_mtd_rename()
863 struct ef4_nic *efx = mtd->priv; in falcon_mtd_read() local
864 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_mtd_read()
870 rc = falcon_spi_read(efx, part->spi, part->offset + start, in falcon_mtd_read()
879 struct ef4_nic *efx = mtd->priv; in falcon_mtd_erase() local
880 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_mtd_erase()
895 struct ef4_nic *efx = mtd->priv; in falcon_mtd_write() local
896 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_mtd_write()
902 rc = falcon_spi_write(efx, part->spi, part->offset + start, in falcon_mtd_write()
911 struct ef4_nic *efx = mtd->priv; in falcon_mtd_sync() local
912 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_mtd_sync()
921 static int falcon_mtd_probe(struct ef4_nic *efx) in falcon_mtd_probe() argument
923 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_mtd_probe()
965 rc = ef4_mtd_add(efx, &parts[0].common, n_parts, sizeof(*parts)); in falcon_mtd_probe()
981 static void falcon_setup_xaui(struct ef4_nic *efx) in falcon_setup_xaui() argument
987 if (efx->phy_type == PHY_TYPE_NONE) in falcon_setup_xaui()
990 ef4_reado(efx, &sdctl, FR_AB_XX_SD_CTL); in falcon_setup_xaui()
999 ef4_writeo(efx, &sdctl, FR_AB_XX_SD_CTL); in falcon_setup_xaui()
1010 ef4_writeo(efx, &txdrv, FR_AB_XX_TXDRV_CTL); in falcon_setup_xaui()
1013 int falcon_reset_xaui(struct ef4_nic *efx) in falcon_reset_xaui() argument
1015 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_reset_xaui()
1024 ef4_writeo(efx, &reg, FR_AB_XX_PWR_RST); in falcon_reset_xaui()
1028 ef4_reado(efx, &reg, FR_AB_XX_PWR_RST); in falcon_reset_xaui()
1031 falcon_setup_xaui(efx); in falcon_reset_xaui()
1036 netif_err(efx, hw, efx->net_dev, in falcon_reset_xaui()
1041 static void falcon_ack_status_intr(struct ef4_nic *efx) in falcon_ack_status_intr() argument
1043 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_ack_status_intr()
1046 if ((ef4_nic_rev(efx) != EF4_REV_FALCON_B0) || LOOPBACK_INTERNAL(efx)) in falcon_ack_status_intr()
1050 if (!efx->link_state.up) in falcon_ack_status_intr()
1058 ef4_reado(efx, &reg, FR_AB_XM_MGT_INT_MSK); in falcon_ack_status_intr()
1061 static bool falcon_xgxs_link_ok(struct ef4_nic *efx) in falcon_xgxs_link_ok() argument
1068 ef4_reado(efx, &reg, FR_AB_XX_CORE_STAT); in falcon_xgxs_link_ok()
1079 ef4_writeo(efx, &reg, FR_AB_XX_CORE_STAT); in falcon_xgxs_link_ok()
1084 static bool falcon_xmac_link_ok(struct ef4_nic *efx) in falcon_xmac_link_ok() argument
1092 return (efx->loopback_mode == LOOPBACK_XGMII || in falcon_xmac_link_ok()
1093 falcon_xgxs_link_ok(efx)) && in falcon_xmac_link_ok()
1094 (!(efx->mdio.mmds & (1 << MDIO_MMD_PHYXS)) || in falcon_xmac_link_ok()
1095 LOOPBACK_INTERNAL(efx) || in falcon_xmac_link_ok()
1096 ef4_mdio_phyxgxs_lane_sync(efx)); in falcon_xmac_link_ok()
1099 static void falcon_reconfigure_xmac_core(struct ef4_nic *efx) in falcon_reconfigure_xmac_core() argument
1103 bool rx_fc = !!(efx->link_state.fc & EF4_FC_RX); in falcon_reconfigure_xmac_core()
1104 bool tx_fc = !!(efx->link_state.fc & EF4_FC_TX); in falcon_reconfigure_xmac_core()
1111 ef4_writeo(efx, &reg, FR_AB_XM_GLB_CFG); in falcon_reconfigure_xmac_core()
1121 ef4_writeo(efx, &reg, FR_AB_XM_TX_CFG); in falcon_reconfigure_xmac_core()
1128 FRF_AB_XM_ACPT_ALL_UCAST, !efx->unicast_filter, in falcon_reconfigure_xmac_core()
1130 ef4_writeo(efx, &reg, FR_AB_XM_RX_CFG); in falcon_reconfigure_xmac_core()
1133 max_frame_len = EF4_MAX_FRAME_LEN(efx->net_dev->mtu); in falcon_reconfigure_xmac_core()
1135 ef4_writeo(efx, &reg, FR_AB_XM_RX_PARAM); in falcon_reconfigure_xmac_core()
1139 ef4_writeo(efx, &reg, FR_AB_XM_TX_PARAM); in falcon_reconfigure_xmac_core()
1144 ef4_writeo(efx, &reg, FR_AB_XM_FC); in falcon_reconfigure_xmac_core()
1147 memcpy(&reg, &efx->net_dev->dev_addr[0], 4); in falcon_reconfigure_xmac_core()
1148 ef4_writeo(efx, &reg, FR_AB_XM_ADR_LO); in falcon_reconfigure_xmac_core()
1149 memcpy(&reg, &efx->net_dev->dev_addr[4], 2); in falcon_reconfigure_xmac_core()
1150 ef4_writeo(efx, &reg, FR_AB_XM_ADR_HI); in falcon_reconfigure_xmac_core()
1153 static void falcon_reconfigure_xgxs_core(struct ef4_nic *efx) in falcon_reconfigure_xgxs_core() argument
1156 bool xgxs_loopback = (efx->loopback_mode == LOOPBACK_XGXS); in falcon_reconfigure_xgxs_core()
1157 bool xaui_loopback = (efx->loopback_mode == LOOPBACK_XAUI); in falcon_reconfigure_xgxs_core()
1158 bool xgmii_loopback = (efx->loopback_mode == LOOPBACK_XGMII); in falcon_reconfigure_xgxs_core()
1163 ef4_reado(efx, &reg, FR_AB_XX_CORE_STAT); in falcon_reconfigure_xgxs_core()
1167 ef4_reado(efx, &reg, FR_AB_XX_SD_CTL); in falcon_reconfigure_xgxs_core()
1174 falcon_reset_xaui(efx); in falcon_reconfigure_xgxs_core()
1176 ef4_reado(efx, &reg, FR_AB_XX_CORE_STAT); in falcon_reconfigure_xgxs_core()
1182 ef4_writeo(efx, &reg, FR_AB_XX_CORE_STAT); in falcon_reconfigure_xgxs_core()
1184 ef4_reado(efx, &reg, FR_AB_XX_SD_CTL); in falcon_reconfigure_xgxs_core()
1189 ef4_writeo(efx, &reg, FR_AB_XX_SD_CTL); in falcon_reconfigure_xgxs_core()
1194 static bool falcon_xmac_link_ok_retry(struct ef4_nic *efx, int tries) in falcon_xmac_link_ok_retry() argument
1196 bool mac_up = falcon_xmac_link_ok(efx); in falcon_xmac_link_ok_retry()
1198 if (LOOPBACK_MASK(efx) & LOOPBACKS_EXTERNAL(efx) & LOOPBACKS_WS || in falcon_xmac_link_ok_retry()
1199 ef4_phy_mode_disabled(efx->phy_mode)) in falcon_xmac_link_ok_retry()
1203 falcon_stop_nic_stats(efx); in falcon_xmac_link_ok_retry()
1206 netif_dbg(efx, hw, efx->net_dev, "bashing xaui\n"); in falcon_xmac_link_ok_retry()
1207 falcon_reset_xaui(efx); in falcon_xmac_link_ok_retry()
1210 mac_up = falcon_xmac_link_ok(efx); in falcon_xmac_link_ok_retry()
1214 falcon_start_nic_stats(efx); in falcon_xmac_link_ok_retry()
1219 static bool falcon_xmac_check_fault(struct ef4_nic *efx) in falcon_xmac_check_fault() argument
1221 return !falcon_xmac_link_ok_retry(efx, 5); in falcon_xmac_check_fault()
1224 static int falcon_reconfigure_xmac(struct ef4_nic *efx) in falcon_reconfigure_xmac() argument
1226 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_reconfigure_xmac()
1228 ef4_farch_filter_sync_rx_mode(efx); in falcon_reconfigure_xmac()
1230 falcon_reconfigure_xgxs_core(efx); in falcon_reconfigure_xmac()
1231 falcon_reconfigure_xmac_core(efx); in falcon_reconfigure_xmac()
1233 falcon_reconfigure_mac_wrapper(efx); in falcon_reconfigure_xmac()
1235 nic_data->xmac_poll_required = !falcon_xmac_link_ok_retry(efx, 5); in falcon_reconfigure_xmac()
1236 falcon_ack_status_intr(efx); in falcon_reconfigure_xmac()
1241 static void falcon_poll_xmac(struct ef4_nic *efx) in falcon_poll_xmac() argument
1243 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_poll_xmac()
1246 if (!efx->link_state.up || !nic_data->xmac_poll_required) in falcon_poll_xmac()
1249 nic_data->xmac_poll_required = !falcon_xmac_link_ok_retry(efx, 1); in falcon_poll_xmac()
1250 falcon_ack_status_intr(efx); in falcon_poll_xmac()
1260 static void falcon_push_multicast_hash(struct ef4_nic *efx) in falcon_push_multicast_hash() argument
1262 union ef4_multicast_hash *mc_hash = &efx->multicast_hash; in falcon_push_multicast_hash()
1264 WARN_ON(!mutex_is_locked(&efx->mac_lock)); in falcon_push_multicast_hash()
1266 ef4_writeo(efx, &mc_hash->oword[0], FR_AB_MAC_MC_HASH_REG0); in falcon_push_multicast_hash()
1267 ef4_writeo(efx, &mc_hash->oword[1], FR_AB_MAC_MC_HASH_REG1); in falcon_push_multicast_hash()
1270 static void falcon_reset_macs(struct ef4_nic *efx) in falcon_reset_macs() argument
1272 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_reset_macs()
1276 if (ef4_nic_rev(efx) < EF4_REV_FALCON_B0) { in falcon_reset_macs()
1281 ef4_writeo(efx, &reg, FR_AB_XM_GLB_CFG); in falcon_reset_macs()
1284 ef4_reado(efx, &reg, FR_AB_XM_GLB_CFG); in falcon_reset_macs()
1291 netif_err(efx, hw, efx->net_dev, in falcon_reset_macs()
1298 ef4_reado(efx, &mac_ctrl, FR_AB_MAC_CTRL); in falcon_reset_macs()
1300 ef4_writeo(efx, &mac_ctrl, FR_AB_MAC_CTRL); in falcon_reset_macs()
1302 ef4_reado(efx, &reg, FR_AB_GLB_CTL); in falcon_reset_macs()
1306 ef4_writeo(efx, &reg, FR_AB_GLB_CTL); in falcon_reset_macs()
1310 ef4_reado(efx, &reg, FR_AB_GLB_CTL); in falcon_reset_macs()
1314 netif_dbg(efx, hw, efx->net_dev, in falcon_reset_macs()
1320 netif_err(efx, hw, efx->net_dev, "MAC reset failed\n"); in falcon_reset_macs()
1329 ef4_writeo(efx, &mac_ctrl, FR_AB_MAC_CTRL); in falcon_reset_macs()
1331 falcon_setup_xaui(efx); in falcon_reset_macs()
1334 static void falcon_drain_tx_fifo(struct ef4_nic *efx) in falcon_drain_tx_fifo() argument
1338 if ((ef4_nic_rev(efx) < EF4_REV_FALCON_B0) || in falcon_drain_tx_fifo()
1339 (efx->loopback_mode != LOOPBACK_NONE)) in falcon_drain_tx_fifo()
1342 ef4_reado(efx, &reg, FR_AB_MAC_CTRL); in falcon_drain_tx_fifo()
1347 falcon_reset_macs(efx); in falcon_drain_tx_fifo()
1350 static void falcon_deconfigure_mac_wrapper(struct ef4_nic *efx) in falcon_deconfigure_mac_wrapper() argument
1354 if (ef4_nic_rev(efx) < EF4_REV_FALCON_B0) in falcon_deconfigure_mac_wrapper()
1358 ef4_reado(efx, &reg, FR_AZ_RX_CFG); in falcon_deconfigure_mac_wrapper()
1360 ef4_writeo(efx, &reg, FR_AZ_RX_CFG); in falcon_deconfigure_mac_wrapper()
1363 falcon_drain_tx_fifo(efx); in falcon_deconfigure_mac_wrapper()
1366 static void falcon_reconfigure_mac_wrapper(struct ef4_nic *efx) in falcon_reconfigure_mac_wrapper() argument
1368 struct ef4_link_state *link_state = &efx->link_state; in falcon_reconfigure_mac_wrapper()
1372 isolate = !!READ_ONCE(efx->reset_pending); in falcon_reconfigure_mac_wrapper()
1388 FRF_AB_MAC_UC_PROM, !efx->unicast_filter, in falcon_reconfigure_mac_wrapper()
1393 if (ef4_nic_rev(efx) >= EF4_REV_FALCON_B0) { in falcon_reconfigure_mac_wrapper()
1398 ef4_writeo(efx, &reg, FR_AB_MAC_CTRL); in falcon_reconfigure_mac_wrapper()
1401 falcon_push_multicast_hash(efx); in falcon_reconfigure_mac_wrapper()
1403 ef4_reado(efx, &reg, FR_AZ_RX_CFG); in falcon_reconfigure_mac_wrapper()
1408 if (ef4_nic_rev(efx) >= EF4_REV_FALCON_B0) in falcon_reconfigure_mac_wrapper()
1410 ef4_writeo(efx, &reg, FR_AZ_RX_CFG); in falcon_reconfigure_mac_wrapper()
1413 static void falcon_stats_request(struct ef4_nic *efx) in falcon_stats_request() argument
1415 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_stats_request()
1421 FALCON_XMAC_STATS_DMA_FLAG(efx) = 0; in falcon_stats_request()
1429 efx->stats_buffer.dma_addr); in falcon_stats_request()
1430 ef4_writeo(efx, &reg, FR_AB_MAC_STAT_DMA); in falcon_stats_request()
1435 static void falcon_stats_complete(struct ef4_nic *efx) in falcon_stats_complete() argument
1437 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_stats_complete()
1443 if (FALCON_XMAC_STATS_DMA_FLAG(efx)) { in falcon_stats_complete()
1447 efx->stats_buffer.addr, true); in falcon_stats_complete()
1449 netif_err(efx, hw, efx->net_dev, in falcon_stats_complete()
1458 struct ef4_nic *efx = nic_data->efx; in falcon_stats_timer_func() local
1460 spin_lock(&efx->stats_lock); in falcon_stats_timer_func()
1462 falcon_stats_complete(efx); in falcon_stats_timer_func()
1464 falcon_stats_request(efx); in falcon_stats_timer_func()
1466 spin_unlock(&efx->stats_lock); in falcon_stats_timer_func()
1469 static bool falcon_loopback_link_poll(struct ef4_nic *efx) in falcon_loopback_link_poll() argument
1471 struct ef4_link_state old_state = efx->link_state; in falcon_loopback_link_poll()
1473 WARN_ON(!mutex_is_locked(&efx->mac_lock)); in falcon_loopback_link_poll()
1474 WARN_ON(!LOOPBACK_INTERNAL(efx)); in falcon_loopback_link_poll()
1476 efx->link_state.fd = true; in falcon_loopback_link_poll()
1477 efx->link_state.fc = efx->wanted_fc; in falcon_loopback_link_poll()
1478 efx->link_state.up = true; in falcon_loopback_link_poll()
1479 efx->link_state.speed = 10000; in falcon_loopback_link_poll()
1481 return !ef4_link_state_equal(&efx->link_state, &old_state); in falcon_loopback_link_poll()
1484 static int falcon_reconfigure_port(struct ef4_nic *efx) in falcon_reconfigure_port() argument
1488 WARN_ON(ef4_nic_rev(efx) > EF4_REV_FALCON_B0); in falcon_reconfigure_port()
1494 if (LOOPBACK_INTERNAL(efx)) in falcon_reconfigure_port()
1495 falcon_loopback_link_poll(efx); in falcon_reconfigure_port()
1497 efx->phy_op->poll(efx); in falcon_reconfigure_port()
1499 falcon_stop_nic_stats(efx); in falcon_reconfigure_port()
1500 falcon_deconfigure_mac_wrapper(efx); in falcon_reconfigure_port()
1502 falcon_reset_macs(efx); in falcon_reconfigure_port()
1504 efx->phy_op->reconfigure(efx); in falcon_reconfigure_port()
1505 rc = falcon_reconfigure_xmac(efx); in falcon_reconfigure_port()
1508 falcon_start_nic_stats(efx); in falcon_reconfigure_port()
1511 ef4_link_status_changed(efx); in falcon_reconfigure_port()
1523 static void falcon_a1_prepare_enable_fc_tx(struct ef4_nic *efx) in falcon_a1_prepare_enable_fc_tx() argument
1526 ef4_schedule_reset(efx, RESET_TYPE_INVISIBLE); in falcon_a1_prepare_enable_fc_tx()
1529 static void falcon_b0_prepare_enable_fc_tx(struct ef4_nic *efx) in falcon_b0_prepare_enable_fc_tx() argument
1532 falcon_stop_nic_stats(efx); in falcon_b0_prepare_enable_fc_tx()
1533 falcon_drain_tx_fifo(efx); in falcon_b0_prepare_enable_fc_tx()
1534 falcon_reconfigure_xmac(efx); in falcon_b0_prepare_enable_fc_tx()
1535 falcon_start_nic_stats(efx); in falcon_b0_prepare_enable_fc_tx()
1546 static int falcon_gmii_wait(struct ef4_nic *efx) in falcon_gmii_wait() argument
1553 ef4_reado(efx, &md_stat, FR_AB_MD_STAT); in falcon_gmii_wait()
1557 netif_err(efx, hw, efx->net_dev, in falcon_gmii_wait()
1567 netif_err(efx, hw, efx->net_dev, "timed out waiting for GMII\n"); in falcon_gmii_wait()
1575 struct ef4_nic *efx = netdev_priv(net_dev); in falcon_mdio_write() local
1576 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_mdio_write()
1580 netif_vdbg(efx, hw, efx->net_dev, in falcon_mdio_write()
1587 rc = falcon_gmii_wait(efx); in falcon_mdio_write()
1593 ef4_writeo(efx, &reg, FR_AB_MD_PHY_ADR); in falcon_mdio_write()
1597 ef4_writeo(efx, &reg, FR_AB_MD_ID); in falcon_mdio_write()
1601 ef4_writeo(efx, &reg, FR_AB_MD_TXD); in falcon_mdio_write()
1606 ef4_writeo(efx, &reg, FR_AB_MD_CS); in falcon_mdio_write()
1609 rc = falcon_gmii_wait(efx); in falcon_mdio_write()
1615 ef4_writeo(efx, &reg, FR_AB_MD_CS); in falcon_mdio_write()
1628 struct ef4_nic *efx = netdev_priv(net_dev); in falcon_mdio_read() local
1629 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_mdio_read()
1636 rc = falcon_gmii_wait(efx); in falcon_mdio_read()
1641 ef4_writeo(efx, &reg, FR_AB_MD_PHY_ADR); in falcon_mdio_read()
1645 ef4_writeo(efx, &reg, FR_AB_MD_ID); in falcon_mdio_read()
1649 ef4_writeo(efx, &reg, FR_AB_MD_CS); in falcon_mdio_read()
1652 rc = falcon_gmii_wait(efx); in falcon_mdio_read()
1654 ef4_reado(efx, &reg, FR_AB_MD_RXD); in falcon_mdio_read()
1656 netif_vdbg(efx, hw, efx->net_dev, in falcon_mdio_read()
1664 ef4_writeo(efx, &reg, FR_AB_MD_CS); in falcon_mdio_read()
1666 netif_dbg(efx, hw, efx->net_dev, in falcon_mdio_read()
1677 static int falcon_probe_port(struct ef4_nic *efx) in falcon_probe_port() argument
1679 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_probe_port()
1682 switch (efx->phy_type) { in falcon_probe_port()
1684 efx->phy_op = &falcon_sfx7101_phy_ops; in falcon_probe_port()
1688 efx->phy_op = &falcon_qt202x_phy_ops; in falcon_probe_port()
1691 efx->phy_op = &falcon_txc_phy_ops; in falcon_probe_port()
1694 netif_err(efx, probe, efx->net_dev, "Unknown PHY type %d\n", in falcon_probe_port()
1695 efx->phy_type); in falcon_probe_port()
1701 efx->mdio.mdio_read = falcon_mdio_read; in falcon_probe_port()
1702 efx->mdio.mdio_write = falcon_mdio_write; in falcon_probe_port()
1703 rc = efx->phy_op->probe(efx); in falcon_probe_port()
1708 efx->link_state.speed = 10000; in falcon_probe_port()
1709 efx->link_state.fd = true; in falcon_probe_port()
1712 if (ef4_nic_rev(efx) >= EF4_REV_FALCON_B0) in falcon_probe_port()
1713 efx->wanted_fc = EF4_FC_RX | EF4_FC_TX; in falcon_probe_port()
1715 efx->wanted_fc = EF4_FC_RX; in falcon_probe_port()
1716 if (efx->mdio.mmds & MDIO_DEVS_AN) in falcon_probe_port()
1717 efx->wanted_fc |= EF4_FC_AUTO; in falcon_probe_port()
1720 rc = ef4_nic_alloc_buffer(efx, &efx->stats_buffer, in falcon_probe_port()
1724 netif_dbg(efx, probe, efx->net_dev, in falcon_probe_port()
1726 (u64)efx->stats_buffer.dma_addr, in falcon_probe_port()
1727 efx->stats_buffer.addr, in falcon_probe_port()
1728 (u64)virt_to_phys(efx->stats_buffer.addr)); in falcon_probe_port()
1733 static void falcon_remove_port(struct ef4_nic *efx) in falcon_remove_port() argument
1735 efx->phy_op->remove(efx); in falcon_remove_port()
1736 ef4_nic_free_buffer(efx, &efx->stats_buffer); in falcon_remove_port()
1743 struct ef4_nic *efx = channel->efx; in falcon_handle_global_event() local
1744 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_handle_global_event()
1752 if ((ef4_nic_rev(efx) == EF4_REV_FALCON_B0) && in falcon_handle_global_event()
1758 if (ef4_nic_rev(efx) <= EF4_REV_FALCON_A1 ? in falcon_handle_global_event()
1761 netif_err(efx, rx_err, efx->net_dev, in falcon_handle_global_event()
1765 atomic_inc(&efx->rx_reset); in falcon_handle_global_event()
1766 ef4_schedule_reset(efx, EF4_WORKAROUND_6555(efx) ? in falcon_handle_global_event()
1781 falcon_read_nvram(struct ef4_nic *efx, struct falcon_nvconfig *nvconfig_out) in falcon_read_nvram() argument
1783 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_read_nvram()
1804 rc = falcon_spi_read(efx, spi, 0, FALCON_NVCONFIG_END, NULL, region); in falcon_read_nvram()
1807 netif_err(efx, hw, efx->net_dev, "Failed to read %s\n", in falcon_read_nvram()
1819 netif_err(efx, hw, efx->net_dev, in falcon_read_nvram()
1824 netif_err(efx, hw, efx->net_dev, in falcon_read_nvram()
1838 netif_err(efx, hw, efx->net_dev, in falcon_read_nvram()
1852 static int falcon_test_nvram(struct ef4_nic *efx) in falcon_test_nvram() argument
1854 return falcon_read_nvram(efx, NULL); in falcon_test_nvram()
1897 falcon_b0_test_chip(struct ef4_nic *efx, struct ef4_self_tests *tests) in falcon_b0_test_chip() argument
1902 mutex_lock(&efx->mac_lock); in falcon_b0_test_chip()
1903 if (efx->loopback_modes) { in falcon_b0_test_chip()
1906 if (efx->loopback_modes & (1 << LOOPBACK_XGMII)) in falcon_b0_test_chip()
1907 efx->loopback_mode = LOOPBACK_XGMII; in falcon_b0_test_chip()
1909 efx->loopback_mode = __ffs(efx->loopback_modes); in falcon_b0_test_chip()
1911 __ef4_reconfigure_port(efx); in falcon_b0_test_chip()
1912 mutex_unlock(&efx->mac_lock); in falcon_b0_test_chip()
1914 ef4_reset_down(efx, reset_method); in falcon_b0_test_chip()
1917 ef4_farch_test_registers(efx, falcon_b0_register_tests, in falcon_b0_test_chip()
1921 rc = falcon_reset_hw(efx, reset_method); in falcon_b0_test_chip()
1922 rc2 = ef4_reset_up(efx, reset_method, rc == 0); in falcon_b0_test_chip()
1977 static int __falcon_reset_hw(struct ef4_nic *efx, enum reset_type method) in __falcon_reset_hw() argument
1979 struct falcon_nic_data *nic_data = efx->nic_data; in __falcon_reset_hw()
1983 netif_dbg(efx, hw, efx->net_dev, "performing %s hardware reset\n", in __falcon_reset_hw()
1988 rc = pci_save_state(efx->pci_dev); in __falcon_reset_hw()
1990 netif_err(efx, drv, efx->net_dev, in __falcon_reset_hw()
1995 if (ef4_nic_is_dual_func(efx)) { in __falcon_reset_hw()
1998 netif_err(efx, drv, efx->net_dev, in __falcon_reset_hw()
2024 ef4_writeo(efx, &glb_ctl_reg_ker, FR_AB_GLB_CTL); in __falcon_reset_hw()
2026 netif_dbg(efx, hw, efx->net_dev, "waiting for hardware reset\n"); in __falcon_reset_hw()
2031 if (ef4_nic_is_dual_func(efx)) in __falcon_reset_hw()
2033 pci_restore_state(efx->pci_dev); in __falcon_reset_hw()
2034 netif_dbg(efx, drv, efx->net_dev, in __falcon_reset_hw()
2039 ef4_reado(efx, &glb_ctl_reg_ker, FR_AB_GLB_CTL); in __falcon_reset_hw()
2042 netif_err(efx, hw, efx->net_dev, in __falcon_reset_hw()
2046 netif_dbg(efx, hw, efx->net_dev, "hardware reset complete\n"); in __falcon_reset_hw()
2052 pci_restore_state(efx->pci_dev); in __falcon_reset_hw()
2058 static int falcon_reset_hw(struct ef4_nic *efx, enum reset_type method) in falcon_reset_hw() argument
2060 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_reset_hw()
2064 rc = __falcon_reset_hw(efx, method); in falcon_reset_hw()
2070 static void falcon_monitor(struct ef4_nic *efx) in falcon_monitor() argument
2075 BUG_ON(!mutex_is_locked(&efx->mac_lock)); in falcon_monitor()
2077 rc = falcon_board(efx)->type->monitor(efx); in falcon_monitor()
2079 netif_err(efx, hw, efx->net_dev, in falcon_monitor()
2082 efx->phy_mode |= PHY_MODE_LOW_POWER; in falcon_monitor()
2083 rc = __ef4_reconfigure_port(efx); in falcon_monitor()
2087 if (LOOPBACK_INTERNAL(efx)) in falcon_monitor()
2088 link_changed = falcon_loopback_link_poll(efx); in falcon_monitor()
2090 link_changed = efx->phy_op->poll(efx); in falcon_monitor()
2093 falcon_stop_nic_stats(efx); in falcon_monitor()
2094 falcon_deconfigure_mac_wrapper(efx); in falcon_monitor()
2096 falcon_reset_macs(efx); in falcon_monitor()
2097 rc = falcon_reconfigure_xmac(efx); in falcon_monitor()
2100 falcon_start_nic_stats(efx); in falcon_monitor()
2102 ef4_link_status_changed(efx); in falcon_monitor()
2105 falcon_poll_xmac(efx); in falcon_monitor()
2111 static int falcon_reset_sram(struct ef4_nic *efx) in falcon_reset_sram() argument
2117 ef4_reado(efx, &gpio_cfg_reg_ker, FR_AB_GPIO_CTL); in falcon_reset_sram()
2120 ef4_writeo(efx, &gpio_cfg_reg_ker, FR_AB_GPIO_CTL); in falcon_reset_sram()
2126 ef4_writeo(efx, &srm_cfg_reg_ker, FR_AZ_SRM_CFG); in falcon_reset_sram()
2131 netif_dbg(efx, hw, efx->net_dev, in falcon_reset_sram()
2138 ef4_reado(efx, &srm_cfg_reg_ker, FR_AZ_SRM_CFG); in falcon_reset_sram()
2140 netif_dbg(efx, hw, efx->net_dev, in falcon_reset_sram()
2147 netif_err(efx, hw, efx->net_dev, "timed out waiting for SRAM reset\n"); in falcon_reset_sram()
2151 static void falcon_spi_device_init(struct ef4_nic *efx, in falcon_spi_device_init() argument
2177 static int falcon_probe_nvconfig(struct ef4_nic *efx) in falcon_probe_nvconfig() argument
2179 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_probe_nvconfig()
2187 rc = falcon_read_nvram(efx, nvconfig); in falcon_probe_nvconfig()
2191 efx->phy_type = nvconfig->board_v2.port0_phy_type; in falcon_probe_nvconfig()
2192 efx->mdio.prtad = nvconfig->board_v2.port0_phy_addr; in falcon_probe_nvconfig()
2196 efx, &nic_data->spi_flash, FFE_AB_SPI_DEVICE_FLASH, in falcon_probe_nvconfig()
2200 efx, &nic_data->spi_eeprom, FFE_AB_SPI_DEVICE_EEPROM, in falcon_probe_nvconfig()
2206 ether_addr_copy(efx->net_dev->perm_addr, nvconfig->mac_address[0]); in falcon_probe_nvconfig()
2208 netif_dbg(efx, probe, efx->net_dev, "PHY is %d phy_id %d\n", in falcon_probe_nvconfig()
2209 efx->phy_type, efx->mdio.prtad); in falcon_probe_nvconfig()
2211 rc = falcon_probe_board(efx, in falcon_probe_nvconfig()
2218 static int falcon_dimension_resources(struct ef4_nic *efx) in falcon_dimension_resources() argument
2220 efx->rx_dc_base = 0x20000; in falcon_dimension_resources()
2221 efx->tx_dc_base = 0x26000; in falcon_dimension_resources()
2226 static void falcon_probe_spi_devices(struct ef4_nic *efx) in falcon_probe_spi_devices() argument
2228 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_probe_spi_devices()
2232 ef4_reado(efx, &gpio_ctl, FR_AB_GPIO_CTL); in falcon_probe_spi_devices()
2233 ef4_reado(efx, &nic_stat, FR_AB_NIC_STAT); in falcon_probe_spi_devices()
2234 ef4_reado(efx, &ee_vpd_cfg, FR_AB_EE_VPD_CFG0); in falcon_probe_spi_devices()
2239 netif_dbg(efx, probe, efx->net_dev, "Booted from %s\n", in falcon_probe_spi_devices()
2246 netif_dbg(efx, probe, efx->net_dev, in falcon_probe_spi_devices()
2254 ef4_writeo(efx, &ee_vpd_cfg, FR_AB_EE_VPD_CFG0); in falcon_probe_spi_devices()
2260 falcon_spi_device_init(efx, &nic_data->spi_flash, in falcon_probe_spi_devices()
2264 falcon_spi_device_init(efx, &nic_data->spi_eeprom, in falcon_probe_spi_devices()
2269 static unsigned int falcon_a1_mem_map_size(struct ef4_nic *efx) in falcon_a1_mem_map_size() argument
2274 static unsigned int falcon_b0_mem_map_size(struct ef4_nic *efx) in falcon_b0_mem_map_size() argument
2283 static int falcon_probe_nic(struct ef4_nic *efx) in falcon_probe_nic() argument
2289 efx->primary = efx; /* only one usable function per controller */ in falcon_probe_nic()
2295 efx->nic_data = nic_data; in falcon_probe_nic()
2296 nic_data->efx = efx; in falcon_probe_nic()
2300 if (ef4_farch_fpga_ver(efx) != 0) { in falcon_probe_nic()
2301 netif_err(efx, probe, efx->net_dev, in falcon_probe_nic()
2306 if (ef4_nic_rev(efx) <= EF4_REV_FALCON_A1) { in falcon_probe_nic()
2309 u8 pci_rev = efx->pci_dev->revision; in falcon_probe_nic()
2312 netif_err(efx, probe, efx->net_dev, in falcon_probe_nic()
2316 ef4_reado(efx, &nic_stat, FR_AB_NIC_STAT); in falcon_probe_nic()
2318 netif_err(efx, probe, efx->net_dev, in falcon_probe_nic()
2323 netif_err(efx, probe, efx->net_dev, in falcon_probe_nic()
2328 dev = pci_dev_get(efx->pci_dev); in falcon_probe_nic()
2332 if (dev->bus == efx->pci_dev->bus && in falcon_probe_nic()
2333 dev->devfn == efx->pci_dev->devfn + 1) { in falcon_probe_nic()
2339 netif_err(efx, probe, efx->net_dev, in falcon_probe_nic()
2347 rc = __falcon_reset_hw(efx, RESET_TYPE_ALL); in falcon_probe_nic()
2349 netif_err(efx, probe, efx->net_dev, "failed to reset NIC\n"); in falcon_probe_nic()
2354 rc = ef4_nic_alloc_buffer(efx, &efx->irq_status, sizeof(ef4_oword_t), in falcon_probe_nic()
2358 BUG_ON(efx->irq_status.dma_addr & 0x0f); in falcon_probe_nic()
2360 netif_dbg(efx, probe, efx->net_dev, in falcon_probe_nic()
2362 (u64)efx->irq_status.dma_addr, in falcon_probe_nic()
2363 efx->irq_status.addr, in falcon_probe_nic()
2364 (u64)virt_to_phys(efx->irq_status.addr)); in falcon_probe_nic()
2366 falcon_probe_spi_devices(efx); in falcon_probe_nic()
2369 rc = falcon_probe_nvconfig(efx); in falcon_probe_nic()
2372 netif_err(efx, probe, efx->net_dev, "NVRAM is invalid\n"); in falcon_probe_nic()
2376 efx->max_channels = (ef4_nic_rev(efx) <= EF4_REV_FALCON_A1 ? 4 : in falcon_probe_nic()
2378 efx->max_tx_channels = efx->max_channels; in falcon_probe_nic()
2379 efx->timer_quantum_ns = 4968; /* 621 cycles */ in falcon_probe_nic()
2380 efx->timer_max_ns = efx->type->timer_period_max * in falcon_probe_nic()
2381 efx->timer_quantum_ns; in falcon_probe_nic()
2384 board = falcon_board(efx); in falcon_probe_nic()
2387 board->i2c_data.data = efx; in falcon_probe_nic()
2389 board->i2c_adap.dev.parent = &efx->pci_dev->dev; in falcon_probe_nic()
2396 rc = falcon_board(efx)->type->init(efx); in falcon_probe_nic()
2398 netif_err(efx, probe, efx->net_dev, in falcon_probe_nic()
2412 ef4_nic_free_buffer(efx, &efx->irq_status); in falcon_probe_nic()
2421 kfree(efx->nic_data); in falcon_probe_nic()
2425 static void falcon_init_rx_cfg(struct ef4_nic *efx) in falcon_init_rx_cfg() argument
2432 ef4_reado(efx, &reg, FR_AZ_RX_CFG); in falcon_init_rx_cfg()
2433 if (ef4_nic_rev(efx) <= EF4_REV_FALCON_A1) { in falcon_init_rx_cfg()
2469 ef4_writeo(efx, &reg, FR_AZ_RX_CFG); in falcon_init_rx_cfg()
2476 static int falcon_init_nic(struct ef4_nic *efx) in falcon_init_nic() argument
2482 ef4_reado(efx, &temp, FR_AB_NIC_STAT); in falcon_init_nic()
2484 ef4_writeo(efx, &temp, FR_AB_NIC_STAT); in falcon_init_nic()
2486 rc = falcon_reset_sram(efx); in falcon_init_nic()
2493 if (EF4_WORKAROUND_5129(efx)) { in falcon_init_nic()
2494 ef4_reado(efx, &temp, FR_AZ_CSR_SPARE); in falcon_init_nic()
2496 ef4_writeo(efx, &temp, FR_AZ_CSR_SPARE); in falcon_init_nic()
2499 if (EF4_WORKAROUND_7244(efx)) { in falcon_init_nic()
2500 ef4_reado(efx, &temp, FR_BZ_RX_FILTER_CTL); in falcon_init_nic()
2505 ef4_writeo(efx, &temp, FR_BZ_RX_FILTER_CTL); in falcon_init_nic()
2512 ef4_reado(efx, &temp, FR_AA_RX_SELF_RST); in falcon_init_nic()
2515 if (EF4_WORKAROUND_5583(efx)) in falcon_init_nic()
2517 ef4_writeo(efx, &temp, FR_AA_RX_SELF_RST); in falcon_init_nic()
2522 ef4_reado(efx, &temp, FR_AZ_TX_CFG); in falcon_init_nic()
2524 ef4_writeo(efx, &temp, FR_AZ_TX_CFG); in falcon_init_nic()
2526 falcon_init_rx_cfg(efx); in falcon_init_nic()
2528 if (ef4_nic_rev(efx) >= EF4_REV_FALCON_B0) { in falcon_init_nic()
2529 falcon_b0_rx_push_rss_config(efx, false, efx->rx_indir_table); in falcon_init_nic()
2533 ef4_writeo(efx, &temp, FR_BZ_DP_CTRL); in falcon_init_nic()
2536 ef4_farch_init_common(efx); in falcon_init_nic()
2541 static void falcon_remove_nic(struct ef4_nic *efx) in falcon_remove_nic() argument
2543 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_remove_nic()
2544 struct falcon_board *board = falcon_board(efx); in falcon_remove_nic()
2546 board->type->fini(efx); in falcon_remove_nic()
2552 ef4_nic_free_buffer(efx, &efx->irq_status); in falcon_remove_nic()
2554 __falcon_reset_hw(efx, RESET_TYPE_ALL); in falcon_remove_nic()
2563 kfree(efx->nic_data); in falcon_remove_nic()
2564 efx->nic_data = NULL; in falcon_remove_nic()
2567 static size_t falcon_describe_nic_stats(struct ef4_nic *efx, u8 *names) in falcon_describe_nic_stats() argument
2573 static size_t falcon_update_nic_stats(struct ef4_nic *efx, u64 *full_stats, in falcon_update_nic_stats() argument
2576 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_update_nic_stats()
2581 ef4_reado(efx, &cnt, FR_AZ_RX_NODESC_DROP); in falcon_update_nic_stats()
2586 FALCON_XMAC_STATS_DMA_FLAG(efx)) { in falcon_update_nic_stats()
2592 stats, efx->stats_buffer.addr, true); in falcon_update_nic_stats()
2600 ef4_update_sw_stats(efx, stats); in falcon_update_nic_stats()
2631 void falcon_start_nic_stats(struct ef4_nic *efx) in falcon_start_nic_stats() argument
2633 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_start_nic_stats()
2635 spin_lock_bh(&efx->stats_lock); in falcon_start_nic_stats()
2637 falcon_stats_request(efx); in falcon_start_nic_stats()
2638 spin_unlock_bh(&efx->stats_lock); in falcon_start_nic_stats()
2644 static void falcon_pull_nic_stats(struct ef4_nic *efx) in falcon_pull_nic_stats() argument
2649 void falcon_stop_nic_stats(struct ef4_nic *efx) in falcon_stop_nic_stats() argument
2651 struct falcon_nic_data *nic_data = efx->nic_data; in falcon_stop_nic_stats()
2656 spin_lock_bh(&efx->stats_lock); in falcon_stop_nic_stats()
2658 spin_unlock_bh(&efx->stats_lock); in falcon_stop_nic_stats()
2665 if (FALCON_XMAC_STATS_DMA_FLAG(efx)) in falcon_stop_nic_stats()
2670 spin_lock_bh(&efx->stats_lock); in falcon_stop_nic_stats()
2671 falcon_stats_complete(efx); in falcon_stop_nic_stats()
2672 spin_unlock_bh(&efx->stats_lock); in falcon_stop_nic_stats()
2675 static void falcon_set_id_led(struct ef4_nic *efx, enum ef4_led_mode mode) in falcon_set_id_led() argument
2677 falcon_board(efx)->type->set_id_led(efx, mode); in falcon_set_id_led()
2687 static void falcon_get_wol(struct ef4_nic *efx, struct ethtool_wolinfo *wol) in falcon_get_wol() argument
2694 static int falcon_set_wol(struct ef4_nic *efx, u32 type) in falcon_set_wol() argument