Lines Matching refs:interface

50 	struct fm10k_intfc *interface = hw->back;  in fm10k_read_pci_cfg_word()  local
56 pci_read_config_word(interface->pdev, reg, &value); in fm10k_read_pci_cfg_word()
73 struct fm10k_intfc *interface = hw->back; in fm10k_read_reg() local
74 struct net_device *netdev = interface->netdev; in fm10k_read_reg()
84 static int fm10k_hw_ready(struct fm10k_intfc *interface) in fm10k_hw_ready() argument
86 struct fm10k_hw *hw = &interface->hw; in fm10k_hw_ready()
93 void fm10k_service_event_schedule(struct fm10k_intfc *interface) in fm10k_service_event_schedule() argument
95 if (!test_bit(__FM10K_SERVICE_DISABLE, &interface->state) && in fm10k_service_event_schedule()
96 !test_and_set_bit(__FM10K_SERVICE_SCHED, &interface->state)) in fm10k_service_event_schedule()
97 queue_work(fm10k_workqueue, &interface->service_task); in fm10k_service_event_schedule()
100 static void fm10k_service_event_complete(struct fm10k_intfc *interface) in fm10k_service_event_complete() argument
102 BUG_ON(!test_bit(__FM10K_SERVICE_SCHED, &interface->state)); in fm10k_service_event_complete()
106 clear_bit(__FM10K_SERVICE_SCHED, &interface->state); in fm10k_service_event_complete()
115 struct fm10k_intfc *interface = (struct fm10k_intfc *)data; in fm10k_service_timer() local
118 mod_timer(&interface->service_timer, (HZ * 2) + jiffies); in fm10k_service_timer()
120 fm10k_service_event_schedule(interface); in fm10k_service_timer()
123 static void fm10k_detach_subtask(struct fm10k_intfc *interface) in fm10k_detach_subtask() argument
125 struct net_device *netdev = interface->netdev; in fm10k_detach_subtask()
128 if (netif_device_present(netdev) || interface->hw.hw_addr) in fm10k_detach_subtask()
139 static void fm10k_reinit(struct fm10k_intfc *interface) in fm10k_reinit() argument
141 struct net_device *netdev = interface->netdev; in fm10k_reinit()
142 struct fm10k_hw *hw = &interface->hw; in fm10k_reinit()
150 while (test_and_set_bit(__FM10K_RESETTING, &interface->state)) in fm10k_reinit()
155 fm10k_iov_suspend(interface->pdev); in fm10k_reinit()
160 fm10k_mbx_free_irq(interface); in fm10k_reinit()
163 interface->last_reset = jiffies + (10 * HZ); in fm10k_reinit()
168 dev_err(&interface->pdev->dev, "init_hw failed: %d\n", err); in fm10k_reinit()
171 fm10k_mbx_request_irq(interface); in fm10k_reinit()
189 fm10k_ts_reset(interface); in fm10k_reinit()
194 fm10k_iov_resume(interface->pdev); in fm10k_reinit()
198 clear_bit(__FM10K_RESETTING, &interface->state); in fm10k_reinit()
201 static void fm10k_reset_subtask(struct fm10k_intfc *interface) in fm10k_reset_subtask() argument
203 if (!(interface->flags & FM10K_FLAG_RESET_REQUESTED)) in fm10k_reset_subtask()
206 interface->flags &= ~FM10K_FLAG_RESET_REQUESTED; in fm10k_reset_subtask()
208 netdev_err(interface->netdev, "Reset interface\n"); in fm10k_reset_subtask()
210 fm10k_reinit(interface); in fm10k_reset_subtask()
219 static void fm10k_configure_swpri_map(struct fm10k_intfc *interface) in fm10k_configure_swpri_map() argument
221 struct net_device *netdev = interface->netdev; in fm10k_configure_swpri_map()
222 struct fm10k_hw *hw = &interface->hw; in fm10k_configure_swpri_map()
226 interface->flags &= ~FM10K_FLAG_SWPRI_CONFIG; in fm10k_configure_swpri_map()
242 static void fm10k_watchdog_update_host_state(struct fm10k_intfc *interface) in fm10k_watchdog_update_host_state() argument
244 struct fm10k_hw *hw = &interface->hw; in fm10k_watchdog_update_host_state()
247 if (test_bit(__FM10K_LINK_DOWN, &interface->state)) { in fm10k_watchdog_update_host_state()
248 interface->host_ready = false; in fm10k_watchdog_update_host_state()
249 if (time_is_after_jiffies(interface->link_down_event)) in fm10k_watchdog_update_host_state()
251 clear_bit(__FM10K_LINK_DOWN, &interface->state); in fm10k_watchdog_update_host_state()
254 if (interface->flags & FM10K_FLAG_SWPRI_CONFIG) { in fm10k_watchdog_update_host_state()
256 fm10k_configure_swpri_map(interface); in fm10k_watchdog_update_host_state()
262 fm10k_mbx_lock(interface); in fm10k_watchdog_update_host_state()
264 err = hw->mac.ops.get_host_state(hw, &interface->host_ready); in fm10k_watchdog_update_host_state()
265 if (err && time_is_before_jiffies(interface->last_reset)) in fm10k_watchdog_update_host_state()
266 interface->flags |= FM10K_FLAG_RESET_REQUESTED; in fm10k_watchdog_update_host_state()
269 fm10k_mbx_unlock(interface); in fm10k_watchdog_update_host_state()
278 static void fm10k_mbx_subtask(struct fm10k_intfc *interface) in fm10k_mbx_subtask() argument
281 fm10k_watchdog_update_host_state(interface); in fm10k_mbx_subtask()
284 fm10k_iov_mbx(interface); in fm10k_mbx_subtask()
291 static void fm10k_watchdog_host_is_ready(struct fm10k_intfc *interface) in fm10k_watchdog_host_is_ready() argument
293 struct net_device *netdev = interface->netdev; in fm10k_watchdog_host_is_ready()
299 netif_info(interface, drv, netdev, "NIC Link is up\n"); in fm10k_watchdog_host_is_ready()
309 static void fm10k_watchdog_host_not_ready(struct fm10k_intfc *interface) in fm10k_watchdog_host_not_ready() argument
311 struct net_device *netdev = interface->netdev; in fm10k_watchdog_host_not_ready()
317 netif_info(interface, drv, netdev, "NIC Link is down\n"); in fm10k_watchdog_host_not_ready()
327 void fm10k_update_stats(struct fm10k_intfc *interface) in fm10k_update_stats() argument
329 struct net_device_stats *net_stats = &interface->netdev->stats; in fm10k_update_stats()
330 struct fm10k_hw *hw = &interface->hw; in fm10k_update_stats()
342 interface->next_stats_update = jiffies + HZ; in fm10k_update_stats()
345 for (bytes = 0, pkts = 0, i = 0; i < interface->num_tx_queues; i++) { in fm10k_update_stats()
346 struct fm10k_ring *tx_ring = interface->tx_ring[i]; in fm10k_update_stats()
356 interface->restart_queue = restart_queue; in fm10k_update_stats()
357 interface->tx_busy = tx_busy; in fm10k_update_stats()
360 interface->tx_csum_errors = tx_csum_errors; in fm10k_update_stats()
361 interface->hw_csum_tx_good = hw_csum_tx_good; in fm10k_update_stats()
364 for (bytes = 0, pkts = 0, i = 0; i < interface->num_rx_queues; i++) { in fm10k_update_stats()
365 struct fm10k_ring *rx_ring = interface->rx_ring[i]; in fm10k_update_stats()
382 interface->alloc_failed = alloc_failed; in fm10k_update_stats()
383 interface->rx_csum_errors = rx_csum_errors; in fm10k_update_stats()
384 interface->hw_csum_rx_good = hw_csum_rx_good; in fm10k_update_stats()
385 interface->rx_switch_errors = rx_switch_errors; in fm10k_update_stats()
386 interface->rx_drops = rx_drops; in fm10k_update_stats()
387 interface->rx_pp_errors = rx_pp_errors; in fm10k_update_stats()
388 interface->rx_link_errors = rx_link_errors; in fm10k_update_stats()
389 interface->rx_length_errors = rx_length_errors; in fm10k_update_stats()
391 hw->mac.ops.update_hw_stats(hw, &interface->stats); in fm10k_update_stats()
394 struct fm10k_hw_stats_q *q = &interface->stats.q[i]; in fm10k_update_stats()
403 interface->tx_bytes_nic = tx_bytes_nic; in fm10k_update_stats()
404 interface->tx_packets_nic = tx_pkts_nic; in fm10k_update_stats()
405 interface->rx_bytes_nic = rx_bytes_nic; in fm10k_update_stats()
406 interface->rx_packets_nic = rx_pkts_nic; in fm10k_update_stats()
407 interface->rx_drops_nic = rx_drops_nic; in fm10k_update_stats()
411 net_stats->rx_dropped = interface->stats.nodesc_drop.count; in fm10k_update_stats()
418 static void fm10k_watchdog_flush_tx(struct fm10k_intfc *interface) in fm10k_watchdog_flush_tx() argument
424 if (netif_carrier_ok(interface->netdev)) in fm10k_watchdog_flush_tx()
427 for (i = 0; i < interface->num_tx_queues; i++) { in fm10k_watchdog_flush_tx()
428 struct fm10k_ring *tx_ring = interface->tx_ring[i]; in fm10k_watchdog_flush_tx()
441 interface->flags |= FM10K_FLAG_RESET_REQUESTED; in fm10k_watchdog_flush_tx()
448 static void fm10k_watchdog_subtask(struct fm10k_intfc *interface) in fm10k_watchdog_subtask() argument
451 if (test_bit(__FM10K_DOWN, &interface->state) || in fm10k_watchdog_subtask()
452 test_bit(__FM10K_RESETTING, &interface->state)) in fm10k_watchdog_subtask()
455 if (interface->host_ready) in fm10k_watchdog_subtask()
456 fm10k_watchdog_host_is_ready(interface); in fm10k_watchdog_subtask()
458 fm10k_watchdog_host_not_ready(interface); in fm10k_watchdog_subtask()
461 if (time_is_before_jiffies(interface->next_stats_update)) in fm10k_watchdog_subtask()
462 fm10k_update_stats(interface); in fm10k_watchdog_subtask()
465 fm10k_watchdog_flush_tx(interface); in fm10k_watchdog_subtask()
477 static void fm10k_check_hang_subtask(struct fm10k_intfc *interface) in fm10k_check_hang_subtask() argument
482 if (test_bit(__FM10K_DOWN, &interface->state) || in fm10k_check_hang_subtask()
483 test_bit(__FM10K_RESETTING, &interface->state)) in fm10k_check_hang_subtask()
487 if (time_is_after_eq_jiffies(interface->next_tx_hang_check)) in fm10k_check_hang_subtask()
489 interface->next_tx_hang_check = jiffies + (2 * HZ); in fm10k_check_hang_subtask()
491 if (netif_carrier_ok(interface->netdev)) { in fm10k_check_hang_subtask()
493 for (i = 0; i < interface->num_tx_queues; i++) in fm10k_check_hang_subtask()
494 set_check_for_tx_hang(interface->tx_ring[i]); in fm10k_check_hang_subtask()
497 for (i = 0; i < interface->num_q_vectors; i++) { in fm10k_check_hang_subtask()
498 struct fm10k_q_vector *qv = interface->q_vector[i]; in fm10k_check_hang_subtask()
513 struct fm10k_intfc *interface; in fm10k_service_task() local
515 interface = container_of(work, struct fm10k_intfc, service_task); in fm10k_service_task()
518 fm10k_mbx_subtask(interface); in fm10k_service_task()
519 fm10k_detach_subtask(interface); in fm10k_service_task()
520 fm10k_reset_subtask(interface); in fm10k_service_task()
523 fm10k_watchdog_subtask(interface); in fm10k_service_task()
524 fm10k_check_hang_subtask(interface); in fm10k_service_task()
525 fm10k_ts_tx_subtask(interface); in fm10k_service_task()
528 fm10k_service_event_complete(interface); in fm10k_service_task()
538 static void fm10k_configure_tx_ring(struct fm10k_intfc *interface, in fm10k_configure_tx_ring() argument
541 struct fm10k_hw *hw = &interface->hw; in fm10k_configure_tx_ring()
564 ring->tail = &interface->uc_addr[FM10K_TDT(reg_idx)]; in fm10k_configure_tx_ring()
593 static void fm10k_enable_tx_ring(struct fm10k_intfc *interface, in fm10k_enable_tx_ring() argument
596 struct fm10k_hw *hw = &interface->hw; in fm10k_enable_tx_ring()
611 netif_err(interface, drv, interface->netdev, in fm10k_enable_tx_ring()
621 static void fm10k_configure_tx(struct fm10k_intfc *interface) in fm10k_configure_tx() argument
626 for (i = 0; i < interface->num_tx_queues; i++) in fm10k_configure_tx()
627 fm10k_configure_tx_ring(interface, interface->tx_ring[i]); in fm10k_configure_tx()
630 for (i = 0; i < interface->num_tx_queues; i++) in fm10k_configure_tx()
631 fm10k_enable_tx_ring(interface, interface->tx_ring[i]); in fm10k_configure_tx()
641 static void fm10k_configure_rx_ring(struct fm10k_intfc *interface, in fm10k_configure_rx_ring() argument
645 struct fm10k_hw *hw = &interface->hw; in fm10k_configure_rx_ring()
651 u8 rx_pause = interface->rx_pause; in fm10k_configure_rx_ring()
670 ring->tail = &interface->uc_addr[FM10K_RDT(reg_idx)]; in fm10k_configure_rx_ring()
686 if (interface->pfc_en) in fm10k_configure_rx_ring()
687 rx_pause = interface->pfc_en; in fm10k_configure_rx_ring()
698 if (test_bit(hw->mac.default_vid, interface->active_vlans)) in fm10k_configure_rx_ring()
722 void fm10k_update_rx_drop_en(struct fm10k_intfc *interface) in fm10k_update_rx_drop_en() argument
724 struct fm10k_hw *hw = &interface->hw; in fm10k_update_rx_drop_en()
725 u8 rx_pause = interface->rx_pause; in fm10k_update_rx_drop_en()
729 if (interface->pfc_en) in fm10k_update_rx_drop_en()
730 rx_pause = interface->pfc_en; in fm10k_update_rx_drop_en()
733 for (i = 0; i < interface->num_rx_queues; i++) { in fm10k_update_rx_drop_en()
734 struct fm10k_ring *ring = interface->rx_ring[i]; in fm10k_update_rx_drop_en()
751 static void fm10k_configure_dglort(struct fm10k_intfc *interface) in fm10k_configure_dglort() argument
754 struct fm10k_hw *hw = &interface->hw; in fm10k_configure_dglort()
760 fm10k_write_reg(hw, FM10K_RSSRK(0, i), interface->rssrk[i]); in fm10k_configure_dglort()
764 fm10k_write_reg(hw, FM10K_RETA(0, i), interface->reta[i]); in fm10k_configure_dglort()
774 if (interface->flags & FM10K_FLAG_RSS_FIELD_IPV4_UDP) in fm10k_configure_dglort()
776 if (interface->flags & FM10K_FLAG_RSS_FIELD_IPV6_UDP) in fm10k_configure_dglort()
783 dglort.rss_l = fls(interface->ring_feature[RING_F_RSS].mask); in fm10k_configure_dglort()
784 dglort.pc_l = fls(interface->ring_feature[RING_F_QOS].mask); in fm10k_configure_dglort()
788 if (interface->glort_count > 64) { in fm10k_configure_dglort()
791 dglort.glort = interface->glort + 64; in fm10k_configure_dglort()
793 dglort.queue_l = fls(interface->num_rx_queues - 1); in fm10k_configure_dglort()
800 dglort.glort = interface->glort; in fm10k_configure_dglort()
801 dglort.rss_l = fls(interface->ring_feature[RING_F_RSS].mask); in fm10k_configure_dglort()
802 dglort.pc_l = fls(interface->ring_feature[RING_F_QOS].mask); in fm10k_configure_dglort()
805 if (interface->l2_accel) in fm10k_configure_dglort()
806 dglort.shared_l = fls(interface->l2_accel->size); in fm10k_configure_dglort()
816 static void fm10k_configure_rx(struct fm10k_intfc *interface) in fm10k_configure_rx() argument
821 fm10k_configure_swpri_map(interface); in fm10k_configure_rx()
824 fm10k_configure_dglort(interface); in fm10k_configure_rx()
827 for (i = 0; i < interface->num_rx_queues; i++) in fm10k_configure_rx()
828 fm10k_configure_rx_ring(interface, interface->rx_ring[i]); in fm10k_configure_rx()
833 static void fm10k_napi_enable_all(struct fm10k_intfc *interface) in fm10k_napi_enable_all() argument
838 for (q_idx = 0; q_idx < interface->num_q_vectors; q_idx++) { in fm10k_napi_enable_all()
839 q_vector = interface->q_vector[q_idx]; in fm10k_napi_enable_all()
856 struct fm10k_intfc *interface = data; in fm10k_msix_mbx_vf() local
857 struct fm10k_hw *hw = &interface->hw; in fm10k_msix_mbx_vf()
865 if (fm10k_mbx_trylock(interface)) { in fm10k_msix_mbx_vf()
867 fm10k_mbx_unlock(interface); in fm10k_msix_mbx_vf()
871 fm10k_service_event_schedule(interface); in fm10k_msix_mbx_vf()
886 struct fm10k_intfc *interface = netdev_priv(netdev); in fm10k_netpoll() local
890 if (test_bit(__FM10K_DOWN, &interface->state)) in fm10k_netpoll()
893 for (i = 0; i < interface->num_q_vectors; i++) in fm10k_netpoll()
894 fm10k_msix_clean_rings(0, interface->q_vector[i]); in fm10k_netpoll()
899 static void fm10k_handle_fault(struct fm10k_intfc *interface, int type, in fm10k_handle_fault() argument
902 struct pci_dev *pdev = interface->pdev; in fm10k_handle_fault()
903 struct fm10k_hw *hw = &interface->hw; in fm10k_handle_fault()
904 struct fm10k_iov_data *iov_data = interface->iov_data; in fm10k_handle_fault()
984 static void fm10k_report_fault(struct fm10k_intfc *interface, u32 eicr) in fm10k_report_fault() argument
986 struct fm10k_hw *hw = &interface->hw; in fm10k_report_fault()
1000 dev_err(&interface->pdev->dev, in fm10k_report_fault()
1005 fm10k_handle_fault(interface, type, &fault); in fm10k_report_fault()
1009 static void fm10k_reset_drop_on_empty(struct fm10k_intfc *interface, u32 eicr) in fm10k_reset_drop_on_empty() argument
1011 struct fm10k_hw *hw = &interface->hw; in fm10k_reset_drop_on_empty()
1025 interface->rx_overrun_pf++; in fm10k_reset_drop_on_empty()
1028 interface->rx_overrun_vf++; in fm10k_reset_drop_on_empty()
1050 struct fm10k_intfc *interface = data; in fm10k_msix_mbx_pf() local
1051 struct fm10k_hw *hw = &interface->hw; in fm10k_msix_mbx_pf()
1062 fm10k_report_fault(interface, eicr); in fm10k_msix_mbx_pf()
1065 fm10k_reset_drop_on_empty(interface, eicr); in fm10k_msix_mbx_pf()
1068 if (fm10k_mbx_trylock(interface)) { in fm10k_msix_mbx_pf()
1071 fm10k_iov_event(interface); in fm10k_msix_mbx_pf()
1072 fm10k_mbx_unlock(interface); in fm10k_msix_mbx_pf()
1078 interface->link_down_event = jiffies + (4 * HZ); in fm10k_msix_mbx_pf()
1079 set_bit(__FM10K_LINK_DOWN, &interface->state); in fm10k_msix_mbx_pf()
1089 fm10k_service_event_schedule(interface); in fm10k_msix_mbx_pf()
1098 void fm10k_mbx_free_irq(struct fm10k_intfc *interface) in fm10k_mbx_free_irq() argument
1100 struct msix_entry *entry = &interface->msix_entries[FM10K_MBX_VECTOR]; in fm10k_mbx_free_irq()
1101 struct fm10k_hw *hw = &interface->hw; in fm10k_mbx_free_irq()
1125 free_irq(entry->vector, interface); in fm10k_mbx_free_irq()
1133 struct fm10k_intfc *interface; in fm10k_mbx_mac_addr() local
1140 interface = container_of(hw, struct fm10k_intfc, hw); in fm10k_mbx_mac_addr()
1145 interface->flags |= FM10K_FLAG_RESET_REQUESTED; in fm10k_mbx_mac_addr()
1150 interface->flags |= FM10K_FLAG_RESET_REQUESTED; in fm10k_mbx_mac_addr()
1158 struct fm10k_intfc *interface; in fm10k_1588_msg_vf() local
1167 interface = container_of(hw, struct fm10k_intfc, hw); in fm10k_1588_msg_vf()
1169 fm10k_ts_tx_hwtstamp(interface, 0, timestamp); in fm10k_1588_msg_vf()
1178 struct fm10k_intfc *interface; in fm10k_mbx_error() local
1181 interface = container_of(hw, struct fm10k_intfc, hw); in fm10k_mbx_error()
1182 pdev = interface->pdev; in fm10k_mbx_error()
1198 static int fm10k_mbx_request_irq_vf(struct fm10k_intfc *interface) in fm10k_mbx_request_irq_vf() argument
1200 struct msix_entry *entry = &interface->msix_entries[FM10K_MBX_VECTOR]; in fm10k_mbx_request_irq_vf()
1201 struct net_device *dev = interface->netdev; in fm10k_mbx_request_irq_vf()
1202 struct fm10k_hw *hw = &interface->hw; in fm10k_mbx_request_irq_vf()
1215 dev->name, interface); in fm10k_mbx_request_irq_vf()
1217 netif_err(interface, probe, dev, in fm10k_mbx_request_irq_vf()
1234 struct fm10k_intfc *interface; in fm10k_lport_map() local
1242 interface = container_of(hw, struct fm10k_intfc, hw); in fm10k_lport_map()
1246 interface->flags |= FM10K_FLAG_RESET_REQUESTED; in fm10k_lport_map()
1254 struct fm10k_intfc *interface; in fm10k_update_pvid() local
1276 interface = container_of(hw, struct fm10k_intfc, hw); in fm10k_update_pvid()
1279 err = fm10k_iov_update_pvid(interface, glort, pvid); in fm10k_update_pvid()
1285 interface->flags |= FM10K_FLAG_RESET_REQUESTED; in fm10k_update_pvid()
1297 struct fm10k_intfc *interface; in fm10k_1588_msg_pf() local
1307 interface = container_of(hw, struct fm10k_intfc, hw); in fm10k_1588_msg_pf()
1310 fm10k_ts_tx_hwtstamp(interface, timestamp.dglort, in fm10k_1588_msg_pf()
1324 if (sglort == interface->glort) { in fm10k_1588_msg_pf()
1325 fm10k_ts_tx_hwtstamp(interface, 0, in fm10k_1588_msg_pf()
1331 if (!ACCESS_ONCE(interface->iov_data)) in fm10k_1588_msg_pf()
1337 iov_data = interface->iov_data; in fm10k_1588_msg_pf()
1365 static int fm10k_mbx_request_irq_pf(struct fm10k_intfc *interface) in fm10k_mbx_request_irq_pf() argument
1367 struct msix_entry *entry = &interface->msix_entries[FM10K_MBX_VECTOR]; in fm10k_mbx_request_irq_pf()
1368 struct net_device *dev = interface->netdev; in fm10k_mbx_request_irq_pf()
1369 struct fm10k_hw *hw = &interface->hw; in fm10k_mbx_request_irq_pf()
1383 dev->name, interface); in fm10k_mbx_request_irq_pf()
1385 netif_err(interface, probe, dev, in fm10k_mbx_request_irq_pf()
1416 int fm10k_mbx_request_irq(struct fm10k_intfc *interface) in fm10k_mbx_request_irq() argument
1418 struct fm10k_hw *hw = &interface->hw; in fm10k_mbx_request_irq()
1423 err = fm10k_mbx_request_irq_pf(interface); in fm10k_mbx_request_irq()
1425 err = fm10k_mbx_request_irq_vf(interface); in fm10k_mbx_request_irq()
1440 void fm10k_qv_free_irq(struct fm10k_intfc *interface) in fm10k_qv_free_irq() argument
1442 int vector = interface->num_q_vectors; in fm10k_qv_free_irq()
1443 struct fm10k_hw *hw = &interface->hw; in fm10k_qv_free_irq()
1446 entry = &interface->msix_entries[NON_Q_VECTORS(hw) + vector]; in fm10k_qv_free_irq()
1453 q_vector = interface->q_vector[vector]; in fm10k_qv_free_irq()
1473 int fm10k_qv_request_irq(struct fm10k_intfc *interface) in fm10k_qv_request_irq() argument
1475 struct net_device *dev = interface->netdev; in fm10k_qv_request_irq()
1476 struct fm10k_hw *hw = &interface->hw; in fm10k_qv_request_irq()
1481 entry = &interface->msix_entries[NON_Q_VECTORS(hw)]; in fm10k_qv_request_irq()
1483 for (vector = 0; vector < interface->num_q_vectors; vector++) { in fm10k_qv_request_irq()
1484 struct fm10k_q_vector *q_vector = interface->q_vector[vector]; in fm10k_qv_request_irq()
1504 &interface->uc_addr[FM10K_ITR(entry->entry)] : in fm10k_qv_request_irq()
1505 &interface->uc_addr[FM10K_VFITR(entry->entry)]; in fm10k_qv_request_irq()
1511 netif_err(interface, probe, dev, in fm10k_qv_request_irq()
1532 q_vector = interface->q_vector[vector]; in fm10k_qv_request_irq()
1547 void fm10k_up(struct fm10k_intfc *interface) in fm10k_up() argument
1549 struct fm10k_hw *hw = &interface->hw; in fm10k_up()
1555 fm10k_configure_tx(interface); in fm10k_up()
1558 fm10k_configure_rx(interface); in fm10k_up()
1564 clear_bit(__FM10K_DOWN, &interface->state); in fm10k_up()
1567 fm10k_napi_enable_all(interface); in fm10k_up()
1570 fm10k_restore_rx_state(interface); in fm10k_up()
1573 netif_tx_start_all_queues(interface->netdev); in fm10k_up()
1577 mod_timer(&interface->service_timer, jiffies); in fm10k_up()
1580 static void fm10k_napi_disable_all(struct fm10k_intfc *interface) in fm10k_napi_disable_all() argument
1585 for (q_idx = 0; q_idx < interface->num_q_vectors; q_idx++) { in fm10k_napi_disable_all()
1586 q_vector = interface->q_vector[q_idx]; in fm10k_napi_disable_all()
1591 void fm10k_down(struct fm10k_intfc *interface) in fm10k_down() argument
1593 struct net_device *netdev = interface->netdev; in fm10k_down()
1594 struct fm10k_hw *hw = &interface->hw; in fm10k_down()
1597 set_bit(__FM10K_DOWN, &interface->state); in fm10k_down()
1607 fm10k_reset_rx_state(interface); in fm10k_down()
1613 fm10k_napi_disable_all(interface); in fm10k_down()
1616 fm10k_update_stats(interface); in fm10k_down()
1622 fm10k_clean_all_tx_rings(interface); in fm10k_down()
1623 fm10k_clean_all_rx_rings(interface); in fm10k_down()
1634 static int fm10k_sw_init(struct fm10k_intfc *interface, in fm10k_sw_init() argument
1638 struct fm10k_hw *hw = &interface->hw; in fm10k_sw_init()
1639 struct pci_dev *pdev = interface->pdev; in fm10k_sw_init()
1640 struct net_device *netdev = interface->netdev; in fm10k_sw_init()
1646 hw->back = interface; in fm10k_sw_init()
1647 hw->hw_addr = interface->uc_addr; in fm10k_sw_init()
1666 interface->ring_feature[RING_F_RSS].limit = rss; in fm10k_sw_init()
1684 interface->last_reset = jiffies + (10 * HZ); in fm10k_sw_init()
1694 hw->mac.ops.update_hw_stats(hw, &interface->stats); in fm10k_sw_init()
1721 interface->sw_addr = ioremap(pci_resource_start(pdev, 4), in fm10k_sw_init()
1723 hw->sw_addr = interface->sw_addr; in fm10k_sw_init()
1736 set_bit(__FM10K_SERVICE_DISABLE, &interface->state); in fm10k_sw_init()
1737 setup_timer(&interface->service_timer, &fm10k_service_timer, in fm10k_sw_init()
1738 (unsigned long)interface); in fm10k_sw_init()
1739 INIT_WORK(&interface->service_task, fm10k_service_task); in fm10k_sw_init()
1742 mod_timer(&interface->service_timer, (HZ * 2) + jiffies); in fm10k_sw_init()
1745 fm10k_ts_init(interface); in fm10k_sw_init()
1748 interface->tx_ring_count = FM10K_DEFAULT_TXD; in fm10k_sw_init()
1749 interface->rx_ring_count = FM10K_DEFAULT_RXD; in fm10k_sw_init()
1752 interface->tx_itr = FM10K_ITR_10K; in fm10k_sw_init()
1753 interface->rx_itr = FM10K_ITR_ADAPTIVE | FM10K_ITR_20K; in fm10k_sw_init()
1756 INIT_LIST_HEAD(&interface->vxlan_port); in fm10k_sw_init()
1759 memcpy(interface->rssrk, rss_key, sizeof(rss_key)); in fm10k_sw_init()
1762 set_bit(__FM10K_DOWN, &interface->state); in fm10k_sw_init()
1767 static void fm10k_slot_warn(struct fm10k_intfc *interface) in fm10k_slot_warn() argument
1771 struct fm10k_hw *hw = &interface->hw; in fm10k_slot_warn()
1774 if (pcie_get_minimum_link(interface->pdev, &speed, &width) || in fm10k_slot_warn()
1776 dev_warn(&interface->pdev->dev, in fm10k_slot_warn()
1795 dev_warn(&interface->pdev->dev, in fm10k_slot_warn()
1800 dev_info(&interface->pdev->dev, in fm10k_slot_warn()
1803 dev_info(&interface->pdev->dev, in fm10k_slot_warn()
1833 dev_warn(&interface->pdev->dev, in fm10k_slot_warn()
1839 dev_warn(&interface->pdev->dev, in fm10k_slot_warn()
1842 dev_warn(&interface->pdev->dev, in fm10k_slot_warn()
1866 struct fm10k_intfc *interface; in fm10k_probe() local
1905 interface = netdev_priv(netdev); in fm10k_probe()
1906 pci_set_drvdata(pdev, interface); in fm10k_probe()
1908 interface->netdev = netdev; in fm10k_probe()
1909 interface->pdev = pdev; in fm10k_probe()
1911 interface->uc_addr = ioremap(pci_resource_start(pdev, 0), in fm10k_probe()
1913 if (!interface->uc_addr) { in fm10k_probe()
1918 err = fm10k_sw_init(interface, ent); in fm10k_probe()
1923 fm10k_dbg_intfc_init(interface); in fm10k_probe()
1925 err = fm10k_init_queueing_scheme(interface); in fm10k_probe()
1929 err = fm10k_mbx_request_irq(interface); in fm10k_probe()
1934 err = fm10k_hw_ready(interface); in fm10k_probe()
1949 fm10k_ptp_register(interface); in fm10k_probe()
1952 fm10k_slot_warn(interface); in fm10k_probe()
1961 clear_bit(__FM10K_SERVICE_DISABLE, &interface->state); in fm10k_probe()
1966 fm10k_mbx_free_irq(interface); in fm10k_probe()
1968 fm10k_clear_queueing_scheme(interface); in fm10k_probe()
1970 if (interface->sw_addr) in fm10k_probe()
1971 iounmap(interface->sw_addr); in fm10k_probe()
1972 iounmap(interface->uc_addr); in fm10k_probe()
1995 struct fm10k_intfc *interface = pci_get_drvdata(pdev); in fm10k_remove() local
1996 struct net_device *netdev = interface->netdev; in fm10k_remove()
1998 del_timer_sync(&interface->service_timer); in fm10k_remove()
2000 set_bit(__FM10K_SERVICE_DISABLE, &interface->state); in fm10k_remove()
2001 cancel_work_sync(&interface->service_task); in fm10k_remove()
2008 fm10k_ptp_unregister(interface); in fm10k_remove()
2014 fm10k_mbx_free_irq(interface); in fm10k_remove()
2017 fm10k_clear_queueing_scheme(interface); in fm10k_remove()
2020 fm10k_dbg_intfc_exit(interface); in fm10k_remove()
2022 if (interface->sw_addr) in fm10k_remove()
2023 iounmap(interface->sw_addr); in fm10k_remove()
2024 iounmap(interface->uc_addr); in fm10k_remove()
2047 struct fm10k_intfc *interface = pci_get_drvdata(pdev); in fm10k_resume() local
2048 struct net_device *netdev = interface->netdev; in fm10k_resume()
2049 struct fm10k_hw *hw = &interface->hw; in fm10k_resume()
2070 hw->hw_addr = interface->uc_addr; in fm10k_resume()
2073 err = hw->mac.ops.init_hw(&interface->hw); in fm10k_resume()
2078 hw->mac.ops.rebind_hw_stats(hw, &interface->stats); in fm10k_resume()
2081 fm10k_ts_reset(interface); in fm10k_resume()
2085 err = fm10k_init_queueing_scheme(interface); in fm10k_resume()
2087 fm10k_mbx_request_irq(interface); in fm10k_resume()
2100 interface->host_ready = false; in fm10k_resume()
2101 fm10k_watchdog_host_not_ready(interface); in fm10k_resume()
2104 clear_bit(__FM10K_SERVICE_DISABLE, &interface->state); in fm10k_resume()
2105 fm10k_service_event_schedule(interface); in fm10k_resume()
2126 struct fm10k_intfc *interface = pci_get_drvdata(pdev); in fm10k_suspend() local
2127 struct net_device *netdev = interface->netdev; in fm10k_suspend()
2140 set_bit(__FM10K_SERVICE_DISABLE, &interface->state); in fm10k_suspend()
2141 cancel_work_sync(&interface->service_task); in fm10k_suspend()
2148 fm10k_mbx_free_irq(interface); in fm10k_suspend()
2150 fm10k_clear_queueing_scheme(interface); in fm10k_suspend()
2177 struct fm10k_intfc *interface = pci_get_drvdata(pdev); in fm10k_io_error_detected() local
2178 struct net_device *netdev = interface->netdev; in fm10k_io_error_detected()
2188 fm10k_mbx_free_irq(interface); in fm10k_io_error_detected()
2204 struct fm10k_intfc *interface = pci_get_drvdata(pdev); in fm10k_io_slot_reset() local
2223 interface->hw.hw_addr = interface->uc_addr; in fm10k_io_slot_reset()
2225 interface->flags |= FM10K_FLAG_RESET_REQUESTED; in fm10k_io_slot_reset()
2226 fm10k_service_event_schedule(interface); in fm10k_io_slot_reset()
2245 struct fm10k_intfc *interface = pci_get_drvdata(pdev); in fm10k_io_resume() local
2246 struct net_device *netdev = interface->netdev; in fm10k_io_resume()
2247 struct fm10k_hw *hw = &interface->hw; in fm10k_io_resume()
2251 hw->mac.ops.init_hw(&interface->hw); in fm10k_io_resume()
2254 hw->mac.ops.rebind_hw_stats(hw, &interface->stats); in fm10k_io_resume()
2257 fm10k_mbx_request_irq(interface); in fm10k_io_resume()
2260 fm10k_ts_reset(interface); in fm10k_io_resume()
2266 err = err ? : fm10k_hw_ready(interface); in fm10k_io_resume()