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()
174 fm10k_ts_reset(interface); in fm10k_reinit()
179 fm10k_iov_resume(interface->pdev); in fm10k_reinit()
183 clear_bit(__FM10K_RESETTING, &interface->state); in fm10k_reinit()
186 static void fm10k_reset_subtask(struct fm10k_intfc *interface) in fm10k_reset_subtask() argument
188 if (!(interface->flags & FM10K_FLAG_RESET_REQUESTED)) in fm10k_reset_subtask()
191 interface->flags &= ~FM10K_FLAG_RESET_REQUESTED; in fm10k_reset_subtask()
193 netdev_err(interface->netdev, "Reset interface\n"); in fm10k_reset_subtask()
195 fm10k_reinit(interface); in fm10k_reset_subtask()
204 static void fm10k_configure_swpri_map(struct fm10k_intfc *interface) in fm10k_configure_swpri_map() argument
206 struct net_device *netdev = interface->netdev; in fm10k_configure_swpri_map()
207 struct fm10k_hw *hw = &interface->hw; in fm10k_configure_swpri_map()
211 interface->flags &= ~FM10K_FLAG_SWPRI_CONFIG; in fm10k_configure_swpri_map()
227 static void fm10k_watchdog_update_host_state(struct fm10k_intfc *interface) in fm10k_watchdog_update_host_state() argument
229 struct fm10k_hw *hw = &interface->hw; in fm10k_watchdog_update_host_state()
232 if (test_bit(__FM10K_LINK_DOWN, &interface->state)) { in fm10k_watchdog_update_host_state()
233 interface->host_ready = false; in fm10k_watchdog_update_host_state()
234 if (time_is_after_jiffies(interface->link_down_event)) in fm10k_watchdog_update_host_state()
236 clear_bit(__FM10K_LINK_DOWN, &interface->state); in fm10k_watchdog_update_host_state()
239 if (interface->flags & FM10K_FLAG_SWPRI_CONFIG) { in fm10k_watchdog_update_host_state()
241 fm10k_configure_swpri_map(interface); in fm10k_watchdog_update_host_state()
247 fm10k_mbx_lock(interface); in fm10k_watchdog_update_host_state()
249 err = hw->mac.ops.get_host_state(hw, &interface->host_ready); in fm10k_watchdog_update_host_state()
250 if (err && time_is_before_jiffies(interface->last_reset)) in fm10k_watchdog_update_host_state()
251 interface->flags |= FM10K_FLAG_RESET_REQUESTED; in fm10k_watchdog_update_host_state()
254 fm10k_mbx_unlock(interface); in fm10k_watchdog_update_host_state()
265 static void fm10k_mbx_subtask(struct fm10k_intfc *interface) in fm10k_mbx_subtask() argument
268 fm10k_watchdog_update_host_state(interface); in fm10k_mbx_subtask()
271 fm10k_iov_mbx(interface); in fm10k_mbx_subtask()
278 static void fm10k_watchdog_host_is_ready(struct fm10k_intfc *interface) in fm10k_watchdog_host_is_ready() argument
280 struct net_device *netdev = interface->netdev; in fm10k_watchdog_host_is_ready()
286 netif_info(interface, drv, netdev, "NIC Link is up\n"); in fm10k_watchdog_host_is_ready()
296 static void fm10k_watchdog_host_not_ready(struct fm10k_intfc *interface) in fm10k_watchdog_host_not_ready() argument
298 struct net_device *netdev = interface->netdev; in fm10k_watchdog_host_not_ready()
304 netif_info(interface, drv, netdev, "NIC Link is down\n"); in fm10k_watchdog_host_not_ready()
314 void fm10k_update_stats(struct fm10k_intfc *interface) in fm10k_update_stats() argument
316 struct net_device_stats *net_stats = &interface->netdev->stats; in fm10k_update_stats()
317 struct fm10k_hw *hw = &interface->hw; in fm10k_update_stats()
326 interface->next_stats_update = jiffies + HZ; in fm10k_update_stats()
329 for (bytes = 0, pkts = 0, i = 0; i < interface->num_tx_queues; i++) { in fm10k_update_stats()
330 struct fm10k_ring *tx_ring = interface->tx_ring[i]; in fm10k_update_stats()
339 interface->restart_queue = restart_queue; in fm10k_update_stats()
340 interface->tx_busy = tx_busy; in fm10k_update_stats()
343 interface->tx_csum_errors = tx_csum_errors; in fm10k_update_stats()
345 for (bytes = 0, pkts = 0, i = 0; i < interface->num_rx_queues; i++) { in fm10k_update_stats()
346 struct fm10k_ring *rx_ring = interface->rx_ring[i]; in fm10k_update_stats()
357 interface->alloc_failed = alloc_failed; in fm10k_update_stats()
358 interface->rx_csum_errors = rx_csum_errors; in fm10k_update_stats()
360 hw->mac.ops.update_hw_stats(hw, &interface->stats); in fm10k_update_stats()
363 struct fm10k_hw_stats_q *q = &interface->stats.q[i]; in fm10k_update_stats()
372 interface->tx_bytes_nic = tx_bytes_nic; in fm10k_update_stats()
373 interface->tx_packets_nic = tx_pkts_nic; in fm10k_update_stats()
374 interface->rx_bytes_nic = rx_bytes_nic; in fm10k_update_stats()
375 interface->rx_packets_nic = rx_pkts_nic; in fm10k_update_stats()
376 interface->rx_drops_nic = rx_drops_nic; in fm10k_update_stats()
380 net_stats->rx_dropped = interface->stats.nodesc_drop.count; in fm10k_update_stats()
387 static void fm10k_watchdog_flush_tx(struct fm10k_intfc *interface) in fm10k_watchdog_flush_tx() argument
393 if (netif_carrier_ok(interface->netdev)) in fm10k_watchdog_flush_tx()
396 for (i = 0; i < interface->num_tx_queues; i++) { in fm10k_watchdog_flush_tx()
397 struct fm10k_ring *tx_ring = interface->tx_ring[i]; in fm10k_watchdog_flush_tx()
410 interface->flags |= FM10K_FLAG_RESET_REQUESTED; in fm10k_watchdog_flush_tx()
417 static void fm10k_watchdog_subtask(struct fm10k_intfc *interface) in fm10k_watchdog_subtask() argument
420 if (test_bit(__FM10K_DOWN, &interface->state) || in fm10k_watchdog_subtask()
421 test_bit(__FM10K_RESETTING, &interface->state)) in fm10k_watchdog_subtask()
424 if (interface->host_ready) in fm10k_watchdog_subtask()
425 fm10k_watchdog_host_is_ready(interface); in fm10k_watchdog_subtask()
427 fm10k_watchdog_host_not_ready(interface); in fm10k_watchdog_subtask()
430 if (time_is_before_jiffies(interface->next_stats_update)) in fm10k_watchdog_subtask()
431 fm10k_update_stats(interface); in fm10k_watchdog_subtask()
434 fm10k_watchdog_flush_tx(interface); in fm10k_watchdog_subtask()
446 static void fm10k_check_hang_subtask(struct fm10k_intfc *interface) in fm10k_check_hang_subtask() argument
451 if (test_bit(__FM10K_DOWN, &interface->state) || in fm10k_check_hang_subtask()
452 test_bit(__FM10K_RESETTING, &interface->state)) in fm10k_check_hang_subtask()
456 if (time_is_after_eq_jiffies(interface->next_tx_hang_check)) in fm10k_check_hang_subtask()
458 interface->next_tx_hang_check = jiffies + (2 * HZ); in fm10k_check_hang_subtask()
460 if (netif_carrier_ok(interface->netdev)) { in fm10k_check_hang_subtask()
462 for (i = 0; i < interface->num_tx_queues; i++) in fm10k_check_hang_subtask()
463 set_check_for_tx_hang(interface->tx_ring[i]); in fm10k_check_hang_subtask()
466 for (i = 0; i < interface->num_q_vectors; i++) { in fm10k_check_hang_subtask()
467 struct fm10k_q_vector *qv = interface->q_vector[i]; in fm10k_check_hang_subtask()
482 struct fm10k_intfc *interface; in fm10k_service_task() local
484 interface = container_of(work, struct fm10k_intfc, service_task); in fm10k_service_task()
487 fm10k_mbx_subtask(interface); in fm10k_service_task()
488 fm10k_detach_subtask(interface); in fm10k_service_task()
489 fm10k_reset_subtask(interface); in fm10k_service_task()
492 fm10k_watchdog_subtask(interface); in fm10k_service_task()
493 fm10k_check_hang_subtask(interface); in fm10k_service_task()
494 fm10k_ts_tx_subtask(interface); in fm10k_service_task()
497 fm10k_service_event_complete(interface); in fm10k_service_task()
507 static void fm10k_configure_tx_ring(struct fm10k_intfc *interface, in fm10k_configure_tx_ring() argument
510 struct fm10k_hw *hw = &interface->hw; in fm10k_configure_tx_ring()
533 ring->tail = &interface->uc_addr[FM10K_TDT(reg_idx)]; in fm10k_configure_tx_ring()
562 static void fm10k_enable_tx_ring(struct fm10k_intfc *interface, in fm10k_enable_tx_ring() argument
565 struct fm10k_hw *hw = &interface->hw; in fm10k_enable_tx_ring()
580 netif_err(interface, drv, interface->netdev, in fm10k_enable_tx_ring()
590 static void fm10k_configure_tx(struct fm10k_intfc *interface) in fm10k_configure_tx() argument
595 for (i = 0; i < interface->num_tx_queues; i++) in fm10k_configure_tx()
596 fm10k_configure_tx_ring(interface, interface->tx_ring[i]); in fm10k_configure_tx()
599 for (i = 0; i < interface->num_tx_queues; i++) in fm10k_configure_tx()
600 fm10k_enable_tx_ring(interface, interface->tx_ring[i]); in fm10k_configure_tx()
610 static void fm10k_configure_rx_ring(struct fm10k_intfc *interface, in fm10k_configure_rx_ring() argument
614 struct fm10k_hw *hw = &interface->hw; in fm10k_configure_rx_ring()
620 u8 rx_pause = interface->rx_pause; in fm10k_configure_rx_ring()
639 ring->tail = &interface->uc_addr[FM10K_RDT(reg_idx)]; in fm10k_configure_rx_ring()
655 if (interface->pfc_en) in fm10k_configure_rx_ring()
656 rx_pause = interface->pfc_en; in fm10k_configure_rx_ring()
687 void fm10k_update_rx_drop_en(struct fm10k_intfc *interface) in fm10k_update_rx_drop_en() argument
689 struct fm10k_hw *hw = &interface->hw; in fm10k_update_rx_drop_en()
690 u8 rx_pause = interface->rx_pause; in fm10k_update_rx_drop_en()
694 if (interface->pfc_en) in fm10k_update_rx_drop_en()
695 rx_pause = interface->pfc_en; in fm10k_update_rx_drop_en()
698 for (i = 0; i < interface->num_rx_queues; i++) { in fm10k_update_rx_drop_en()
699 struct fm10k_ring *ring = interface->rx_ring[i]; in fm10k_update_rx_drop_en()
716 static void fm10k_configure_dglort(struct fm10k_intfc *interface) in fm10k_configure_dglort() argument
719 struct fm10k_hw *hw = &interface->hw; in fm10k_configure_dglort()
725 fm10k_write_reg(hw, FM10K_RSSRK(0, i), interface->rssrk[i]); in fm10k_configure_dglort()
729 fm10k_write_reg(hw, FM10K_RETA(0, i), interface->reta[i]); in fm10k_configure_dglort()
739 if (interface->flags & FM10K_FLAG_RSS_FIELD_IPV4_UDP) in fm10k_configure_dglort()
741 if (interface->flags & FM10K_FLAG_RSS_FIELD_IPV6_UDP) in fm10k_configure_dglort()
748 dglort.rss_l = fls(interface->ring_feature[RING_F_RSS].mask); in fm10k_configure_dglort()
749 dglort.pc_l = fls(interface->ring_feature[RING_F_QOS].mask); in fm10k_configure_dglort()
753 if (interface->glort_count > 64) { in fm10k_configure_dglort()
756 dglort.glort = interface->glort + 64; in fm10k_configure_dglort()
758 dglort.queue_l = fls(interface->num_rx_queues - 1); in fm10k_configure_dglort()
765 dglort.glort = interface->glort; in fm10k_configure_dglort()
766 dglort.rss_l = fls(interface->ring_feature[RING_F_RSS].mask); in fm10k_configure_dglort()
767 dglort.pc_l = fls(interface->ring_feature[RING_F_QOS].mask); in fm10k_configure_dglort()
770 if (interface->l2_accel) in fm10k_configure_dglort()
771 dglort.shared_l = fls(interface->l2_accel->size); in fm10k_configure_dglort()
781 static void fm10k_configure_rx(struct fm10k_intfc *interface) in fm10k_configure_rx() argument
786 fm10k_configure_swpri_map(interface); in fm10k_configure_rx()
789 fm10k_configure_dglort(interface); in fm10k_configure_rx()
792 for (i = 0; i < interface->num_rx_queues; i++) in fm10k_configure_rx()
793 fm10k_configure_rx_ring(interface, interface->rx_ring[i]); in fm10k_configure_rx()
798 static void fm10k_napi_enable_all(struct fm10k_intfc *interface) in fm10k_napi_enable_all() argument
803 for (q_idx = 0; q_idx < interface->num_q_vectors; q_idx++) { in fm10k_napi_enable_all()
804 q_vector = interface->q_vector[q_idx]; in fm10k_napi_enable_all()
821 struct fm10k_intfc *interface = data; in fm10k_msix_mbx_vf() local
822 struct fm10k_hw *hw = &interface->hw; in fm10k_msix_mbx_vf()
830 if (fm10k_mbx_trylock(interface)) { in fm10k_msix_mbx_vf()
832 fm10k_mbx_unlock(interface); in fm10k_msix_mbx_vf()
836 fm10k_service_event_schedule(interface); in fm10k_msix_mbx_vf()
851 struct fm10k_intfc *interface = netdev_priv(netdev); in fm10k_netpoll() local
855 if (test_bit(__FM10K_DOWN, &interface->state)) in fm10k_netpoll()
858 for (i = 0; i < interface->num_q_vectors; i++) in fm10k_netpoll()
859 fm10k_msix_clean_rings(0, interface->q_vector[i]); in fm10k_netpoll()
864 static void fm10k_print_fault(struct fm10k_intfc *interface, int type, in fm10k_print_fault() argument
867 struct pci_dev *pdev = interface->pdev; in fm10k_print_fault()
923 static void fm10k_report_fault(struct fm10k_intfc *interface, u32 eicr) in fm10k_report_fault() argument
925 struct fm10k_hw *hw = &interface->hw; in fm10k_report_fault()
939 dev_err(&interface->pdev->dev, in fm10k_report_fault()
944 fm10k_print_fault(interface, type, &fault); in fm10k_report_fault()
948 static void fm10k_reset_drop_on_empty(struct fm10k_intfc *interface, u32 eicr) in fm10k_reset_drop_on_empty() argument
950 struct fm10k_hw *hw = &interface->hw; in fm10k_reset_drop_on_empty()
964 interface->rx_overrun_pf++; in fm10k_reset_drop_on_empty()
967 interface->rx_overrun_vf++; in fm10k_reset_drop_on_empty()
989 struct fm10k_intfc *interface = data; in fm10k_msix_mbx_pf() local
990 struct fm10k_hw *hw = &interface->hw; in fm10k_msix_mbx_pf()
1001 fm10k_report_fault(interface, eicr); in fm10k_msix_mbx_pf()
1004 fm10k_reset_drop_on_empty(interface, eicr); in fm10k_msix_mbx_pf()
1007 if (fm10k_mbx_trylock(interface)) { in fm10k_msix_mbx_pf()
1010 fm10k_iov_event(interface); in fm10k_msix_mbx_pf()
1011 fm10k_mbx_unlock(interface); in fm10k_msix_mbx_pf()
1017 interface->link_down_event = jiffies + (4 * HZ); in fm10k_msix_mbx_pf()
1018 set_bit(__FM10K_LINK_DOWN, &interface->state); in fm10k_msix_mbx_pf()
1028 fm10k_service_event_schedule(interface); in fm10k_msix_mbx_pf()
1037 void fm10k_mbx_free_irq(struct fm10k_intfc *interface) in fm10k_mbx_free_irq() argument
1039 struct msix_entry *entry = &interface->msix_entries[FM10K_MBX_VECTOR]; in fm10k_mbx_free_irq()
1040 struct fm10k_hw *hw = &interface->hw; in fm10k_mbx_free_irq()
1064 free_irq(entry->vector, interface); in fm10k_mbx_free_irq()
1072 struct fm10k_intfc *interface; in fm10k_mbx_mac_addr() local
1079 interface = container_of(hw, struct fm10k_intfc, hw); in fm10k_mbx_mac_addr()
1084 interface->flags |= FM10K_FLAG_RESET_REQUESTED; in fm10k_mbx_mac_addr()
1089 interface->flags |= FM10K_FLAG_RESET_REQUESTED; in fm10k_mbx_mac_addr()
1097 struct fm10k_intfc *interface; in fm10k_1588_msg_vf() local
1106 interface = container_of(hw, struct fm10k_intfc, hw); in fm10k_1588_msg_vf()
1108 fm10k_ts_tx_hwtstamp(interface, 0, timestamp); in fm10k_1588_msg_vf()
1117 struct fm10k_intfc *interface; in fm10k_mbx_error() local
1120 interface = container_of(hw, struct fm10k_intfc, hw); in fm10k_mbx_error()
1121 pdev = interface->pdev; in fm10k_mbx_error()
1137 static int fm10k_mbx_request_irq_vf(struct fm10k_intfc *interface) in fm10k_mbx_request_irq_vf() argument
1139 struct msix_entry *entry = &interface->msix_entries[FM10K_MBX_VECTOR]; in fm10k_mbx_request_irq_vf()
1140 struct net_device *dev = interface->netdev; in fm10k_mbx_request_irq_vf()
1141 struct fm10k_hw *hw = &interface->hw; in fm10k_mbx_request_irq_vf()
1154 dev->name, interface); in fm10k_mbx_request_irq_vf()
1156 netif_err(interface, probe, dev, in fm10k_mbx_request_irq_vf()
1173 struct fm10k_intfc *interface; in fm10k_lport_map() local
1181 interface = container_of(hw, struct fm10k_intfc, hw); in fm10k_lport_map()
1185 interface->flags |= FM10K_FLAG_RESET_REQUESTED; in fm10k_lport_map()
1193 struct fm10k_intfc *interface; in fm10k_update_pvid() local
1215 interface = container_of(hw, struct fm10k_intfc, hw); in fm10k_update_pvid()
1218 err = fm10k_iov_update_pvid(interface, glort, pvid); in fm10k_update_pvid()
1224 interface->flags |= FM10K_FLAG_RESET_REQUESTED; in fm10k_update_pvid()
1236 struct fm10k_intfc *interface; in fm10k_1588_msg_pf() local
1246 interface = container_of(hw, struct fm10k_intfc, hw); in fm10k_1588_msg_pf()
1249 fm10k_ts_tx_hwtstamp(interface, timestamp.dglort, in fm10k_1588_msg_pf()
1263 if (sglort == interface->glort) { in fm10k_1588_msg_pf()
1264 fm10k_ts_tx_hwtstamp(interface, 0, in fm10k_1588_msg_pf()
1270 if (!ACCESS_ONCE(interface->iov_data)) in fm10k_1588_msg_pf()
1276 iov_data = interface->iov_data; in fm10k_1588_msg_pf()
1304 static int fm10k_mbx_request_irq_pf(struct fm10k_intfc *interface) in fm10k_mbx_request_irq_pf() argument
1306 struct msix_entry *entry = &interface->msix_entries[FM10K_MBX_VECTOR]; in fm10k_mbx_request_irq_pf()
1307 struct net_device *dev = interface->netdev; in fm10k_mbx_request_irq_pf()
1308 struct fm10k_hw *hw = &interface->hw; in fm10k_mbx_request_irq_pf()
1322 dev->name, interface); in fm10k_mbx_request_irq_pf()
1324 netif_err(interface, probe, dev, in fm10k_mbx_request_irq_pf()
1355 int fm10k_mbx_request_irq(struct fm10k_intfc *interface) in fm10k_mbx_request_irq() argument
1357 struct fm10k_hw *hw = &interface->hw; in fm10k_mbx_request_irq()
1362 err = fm10k_mbx_request_irq_pf(interface); in fm10k_mbx_request_irq()
1364 err = fm10k_mbx_request_irq_vf(interface); in fm10k_mbx_request_irq()
1379 void fm10k_qv_free_irq(struct fm10k_intfc *interface) in fm10k_qv_free_irq() argument
1381 int vector = interface->num_q_vectors; in fm10k_qv_free_irq()
1382 struct fm10k_hw *hw = &interface->hw; in fm10k_qv_free_irq()
1385 entry = &interface->msix_entries[NON_Q_VECTORS(hw) + vector]; in fm10k_qv_free_irq()
1392 q_vector = interface->q_vector[vector]; in fm10k_qv_free_irq()
1412 int fm10k_qv_request_irq(struct fm10k_intfc *interface) in fm10k_qv_request_irq() argument
1414 struct net_device *dev = interface->netdev; in fm10k_qv_request_irq()
1415 struct fm10k_hw *hw = &interface->hw; in fm10k_qv_request_irq()
1420 entry = &interface->msix_entries[NON_Q_VECTORS(hw)]; in fm10k_qv_request_irq()
1422 for (vector = 0; vector < interface->num_q_vectors; vector++) { in fm10k_qv_request_irq()
1423 struct fm10k_q_vector *q_vector = interface->q_vector[vector]; in fm10k_qv_request_irq()
1443 &interface->uc_addr[FM10K_ITR(entry->entry)] : in fm10k_qv_request_irq()
1444 &interface->uc_addr[FM10K_VFITR(entry->entry)]; in fm10k_qv_request_irq()
1450 netif_err(interface, probe, dev, in fm10k_qv_request_irq()
1471 q_vector = interface->q_vector[vector]; in fm10k_qv_request_irq()
1486 void fm10k_up(struct fm10k_intfc *interface) in fm10k_up() argument
1488 struct fm10k_hw *hw = &interface->hw; in fm10k_up()
1494 fm10k_configure_tx(interface); in fm10k_up()
1497 fm10k_configure_rx(interface); in fm10k_up()
1503 clear_bit(__FM10K_DOWN, &interface->state); in fm10k_up()
1506 fm10k_napi_enable_all(interface); in fm10k_up()
1509 fm10k_restore_rx_state(interface); in fm10k_up()
1512 netif_tx_start_all_queues(interface->netdev); in fm10k_up()
1516 mod_timer(&interface->service_timer, jiffies); in fm10k_up()
1519 static void fm10k_napi_disable_all(struct fm10k_intfc *interface) in fm10k_napi_disable_all() argument
1524 for (q_idx = 0; q_idx < interface->num_q_vectors; q_idx++) { in fm10k_napi_disable_all()
1525 q_vector = interface->q_vector[q_idx]; in fm10k_napi_disable_all()
1530 void fm10k_down(struct fm10k_intfc *interface) in fm10k_down() argument
1532 struct net_device *netdev = interface->netdev; in fm10k_down()
1533 struct fm10k_hw *hw = &interface->hw; in fm10k_down()
1536 set_bit(__FM10K_DOWN, &interface->state); in fm10k_down()
1546 fm10k_reset_rx_state(interface); in fm10k_down()
1552 fm10k_napi_disable_all(interface); in fm10k_down()
1555 fm10k_update_stats(interface); in fm10k_down()
1561 fm10k_clean_all_tx_rings(interface); in fm10k_down()
1572 static int fm10k_sw_init(struct fm10k_intfc *interface, in fm10k_sw_init() argument
1576 struct fm10k_hw *hw = &interface->hw; in fm10k_sw_init()
1577 struct pci_dev *pdev = interface->pdev; in fm10k_sw_init()
1578 struct net_device *netdev = interface->netdev; in fm10k_sw_init()
1584 hw->back = interface; in fm10k_sw_init()
1585 hw->hw_addr = interface->uc_addr; in fm10k_sw_init()
1604 interface->ring_feature[RING_F_RSS].limit = rss; in fm10k_sw_init()
1622 interface->last_reset = jiffies + (10 * HZ); in fm10k_sw_init()
1632 hw->mac.ops.update_hw_stats(hw, &interface->stats); in fm10k_sw_init()
1659 interface->sw_addr = ioremap(pci_resource_start(pdev, 4), in fm10k_sw_init()
1661 hw->sw_addr = interface->sw_addr; in fm10k_sw_init()
1674 set_bit(__FM10K_SERVICE_DISABLE, &interface->state); in fm10k_sw_init()
1675 setup_timer(&interface->service_timer, &fm10k_service_timer, in fm10k_sw_init()
1676 (unsigned long)interface); in fm10k_sw_init()
1677 INIT_WORK(&interface->service_task, fm10k_service_task); in fm10k_sw_init()
1680 mod_timer(&interface->service_timer, (HZ * 2) + jiffies); in fm10k_sw_init()
1683 fm10k_ts_init(interface); in fm10k_sw_init()
1686 interface->tx_ring_count = FM10K_DEFAULT_TXD; in fm10k_sw_init()
1687 interface->rx_ring_count = FM10K_DEFAULT_RXD; in fm10k_sw_init()
1690 interface->tx_itr = FM10K_ITR_10K; in fm10k_sw_init()
1691 interface->rx_itr = FM10K_ITR_ADAPTIVE | FM10K_ITR_20K; in fm10k_sw_init()
1694 INIT_LIST_HEAD(&interface->vxlan_port); in fm10k_sw_init()
1697 memcpy(interface->rssrk, rss_key, sizeof(rss_key)); in fm10k_sw_init()
1700 set_bit(__FM10K_DOWN, &interface->state); in fm10k_sw_init()
1705 static void fm10k_slot_warn(struct fm10k_intfc *interface) in fm10k_slot_warn() argument
1707 struct device *dev = &interface->pdev->dev; in fm10k_slot_warn()
1708 struct fm10k_hw *hw = &interface->hw; in fm10k_slot_warn()
1740 struct fm10k_intfc *interface; in fm10k_probe() local
1792 interface = netdev_priv(netdev); in fm10k_probe()
1793 pci_set_drvdata(pdev, interface); in fm10k_probe()
1795 interface->netdev = netdev; in fm10k_probe()
1796 interface->pdev = pdev; in fm10k_probe()
1797 hw = &interface->hw; in fm10k_probe()
1799 interface->uc_addr = ioremap(pci_resource_start(pdev, 0), in fm10k_probe()
1801 if (!interface->uc_addr) { in fm10k_probe()
1806 err = fm10k_sw_init(interface, ent); in fm10k_probe()
1811 fm10k_dbg_intfc_init(interface); in fm10k_probe()
1813 err = fm10k_init_queueing_scheme(interface); in fm10k_probe()
1817 err = fm10k_mbx_request_irq(interface); in fm10k_probe()
1822 err = fm10k_hw_ready(interface); in fm10k_probe()
1837 fm10k_ptp_register(interface); in fm10k_probe()
1855 fm10k_slot_warn(interface); in fm10k_probe()
1861 clear_bit(__FM10K_SERVICE_DISABLE, &interface->state); in fm10k_probe()
1866 fm10k_mbx_free_irq(interface); in fm10k_probe()
1868 fm10k_clear_queueing_scheme(interface); in fm10k_probe()
1870 if (interface->sw_addr) in fm10k_probe()
1871 iounmap(interface->sw_addr); in fm10k_probe()
1872 iounmap(interface->uc_addr); in fm10k_probe()
1895 struct fm10k_intfc *interface = pci_get_drvdata(pdev); in fm10k_remove() local
1896 struct net_device *netdev = interface->netdev; in fm10k_remove()
1898 del_timer_sync(&interface->service_timer); in fm10k_remove()
1900 set_bit(__FM10K_SERVICE_DISABLE, &interface->state); in fm10k_remove()
1901 cancel_work_sync(&interface->service_task); in fm10k_remove()
1908 fm10k_ptp_unregister(interface); in fm10k_remove()
1914 fm10k_mbx_free_irq(interface); in fm10k_remove()
1917 fm10k_clear_queueing_scheme(interface); in fm10k_remove()
1920 fm10k_dbg_intfc_exit(interface); in fm10k_remove()
1922 if (interface->sw_addr) in fm10k_remove()
1923 iounmap(interface->sw_addr); in fm10k_remove()
1924 iounmap(interface->uc_addr); in fm10k_remove()
1947 struct fm10k_intfc *interface = pci_get_drvdata(pdev); in fm10k_resume() local
1948 struct net_device *netdev = interface->netdev; in fm10k_resume()
1949 struct fm10k_hw *hw = &interface->hw; in fm10k_resume()
1970 hw->hw_addr = interface->uc_addr; in fm10k_resume()
1973 err = hw->mac.ops.init_hw(&interface->hw); in fm10k_resume()
1978 hw->mac.ops.rebind_hw_stats(hw, &interface->stats); in fm10k_resume()
1981 fm10k_ts_reset(interface); in fm10k_resume()
1985 err = fm10k_init_queueing_scheme(interface); in fm10k_resume()
1987 fm10k_mbx_request_irq(interface); in fm10k_resume()
2016 struct fm10k_intfc *interface = pci_get_drvdata(pdev); in fm10k_suspend() local
2017 struct net_device *netdev = interface->netdev; in fm10k_suspend()
2029 fm10k_mbx_free_irq(interface); in fm10k_suspend()
2031 fm10k_clear_queueing_scheme(interface); in fm10k_suspend()
2058 struct fm10k_intfc *interface = pci_get_drvdata(pdev); in fm10k_io_error_detected() local
2059 struct net_device *netdev = interface->netdev; in fm10k_io_error_detected()
2069 fm10k_mbx_free_irq(interface); in fm10k_io_error_detected()
2085 struct fm10k_intfc *interface = pci_get_drvdata(pdev); in fm10k_io_slot_reset() local
2104 interface->hw.hw_addr = interface->uc_addr; in fm10k_io_slot_reset()
2106 interface->flags |= FM10K_FLAG_RESET_REQUESTED; in fm10k_io_slot_reset()
2107 fm10k_service_event_schedule(interface); in fm10k_io_slot_reset()
2126 struct fm10k_intfc *interface = pci_get_drvdata(pdev); in fm10k_io_resume() local
2127 struct net_device *netdev = interface->netdev; in fm10k_io_resume()
2128 struct fm10k_hw *hw = &interface->hw; in fm10k_io_resume()
2132 hw->mac.ops.init_hw(&interface->hw); in fm10k_io_resume()
2135 hw->mac.ops.rebind_hw_stats(hw, &interface->stats); in fm10k_io_resume()
2138 fm10k_mbx_request_irq(interface); in fm10k_io_resume()
2141 fm10k_ts_reset(interface); in fm10k_io_resume()
2147 err = err ? : fm10k_hw_ready(interface); in fm10k_io_resume()