Lines Matching refs:adapter
29 static int i40evf_setup_all_tx_resources(struct i40evf_adapter *adapter);
30 static int i40evf_setup_all_rx_resources(struct i40evf_adapter *adapter);
75 struct i40evf_adapter *adapter = (struct i40evf_adapter *)hw->back; in i40evf_allocate_dma_mem_d() local
81 mem->va = dma_alloc_coherent(&adapter->pdev->dev, mem->size, in i40evf_allocate_dma_mem_d()
96 struct i40evf_adapter *adapter = (struct i40evf_adapter *)hw->back; in i40evf_free_dma_mem_d() local
100 dma_free_coherent(&adapter->pdev->dev, mem->size, in i40evf_free_dma_mem_d()
171 struct i40evf_adapter *adapter = netdev_priv(netdev); in i40evf_tx_timeout() local
173 adapter->tx_timeout_count++; in i40evf_tx_timeout()
174 if (!(adapter->flags & (I40EVF_FLAG_RESET_PENDING | in i40evf_tx_timeout()
176 adapter->flags |= I40EVF_FLAG_RESET_NEEDED; in i40evf_tx_timeout()
177 schedule_work(&adapter->reset_task); in i40evf_tx_timeout()
185 static void i40evf_misc_irq_disable(struct i40evf_adapter *adapter) in i40evf_misc_irq_disable() argument
187 struct i40e_hw *hw = &adapter->hw; in i40evf_misc_irq_disable()
194 synchronize_irq(adapter->msix_entries[0].vector); in i40evf_misc_irq_disable()
201 static void i40evf_misc_irq_enable(struct i40evf_adapter *adapter) in i40evf_misc_irq_enable() argument
203 struct i40e_hw *hw = &adapter->hw; in i40evf_misc_irq_enable()
217 static void i40evf_irq_disable(struct i40evf_adapter *adapter) in i40evf_irq_disable() argument
220 struct i40e_hw *hw = &adapter->hw; in i40evf_irq_disable()
222 if (!adapter->msix_entries) in i40evf_irq_disable()
225 for (i = 1; i < adapter->num_msix_vectors; i++) { in i40evf_irq_disable()
227 synchronize_irq(adapter->msix_entries[i].vector); in i40evf_irq_disable()
238 void i40evf_irq_enable_queues(struct i40evf_adapter *adapter, u32 mask) in i40evf_irq_enable_queues() argument
240 struct i40e_hw *hw = &adapter->hw; in i40evf_irq_enable_queues()
243 for (i = 1; i < adapter->num_msix_vectors; i++) { in i40evf_irq_enable_queues()
258 static void i40evf_fire_sw_int(struct i40evf_adapter *adapter, u32 mask) in i40evf_fire_sw_int() argument
260 struct i40e_hw *hw = &adapter->hw; in i40evf_fire_sw_int()
271 for (i = 1; i < adapter->num_msix_vectors; i++) { in i40evf_fire_sw_int()
287 void i40evf_irq_enable(struct i40evf_adapter *adapter, bool flush) in i40evf_irq_enable() argument
289 struct i40e_hw *hw = &adapter->hw; in i40evf_irq_enable()
291 i40evf_misc_irq_enable(adapter); in i40evf_irq_enable()
292 i40evf_irq_enable_queues(adapter, ~0); in i40evf_irq_enable()
306 struct i40evf_adapter *adapter = netdev_priv(netdev); in i40evf_msix_aq() local
307 struct i40e_hw *hw = &adapter->hw; in i40evf_msix_aq()
320 schedule_work(&adapter->adminq_task); in i40evf_msix_aq()
349 i40evf_map_vector_to_rxq(struct i40evf_adapter *adapter, int v_idx, int r_idx) in i40evf_map_vector_to_rxq() argument
351 struct i40e_q_vector *q_vector = adapter->q_vector[v_idx]; in i40evf_map_vector_to_rxq()
352 struct i40e_ring *rx_ring = adapter->rx_rings[r_idx]; in i40evf_map_vector_to_rxq()
356 rx_ring->vsi = &adapter->vsi; in i40evf_map_vector_to_rxq()
370 i40evf_map_vector_to_txq(struct i40evf_adapter *adapter, int v_idx, int t_idx) in i40evf_map_vector_to_txq() argument
372 struct i40e_q_vector *q_vector = adapter->q_vector[v_idx]; in i40evf_map_vector_to_txq()
373 struct i40e_ring *tx_ring = adapter->tx_rings[t_idx]; in i40evf_map_vector_to_txq()
377 tx_ring->vsi = &adapter->vsi; in i40evf_map_vector_to_txq()
396 static int i40evf_map_rings_to_vectors(struct i40evf_adapter *adapter) in i40evf_map_rings_to_vectors() argument
401 int rxr_remaining = adapter->num_active_queues; in i40evf_map_rings_to_vectors()
402 int txr_remaining = adapter->num_active_queues; in i40evf_map_rings_to_vectors()
407 q_vectors = adapter->num_msix_vectors - NONQ_VECS; in i40evf_map_rings_to_vectors()
414 i40evf_map_vector_to_rxq(adapter, v_start, rxr_idx); in i40evf_map_rings_to_vectors()
417 i40evf_map_vector_to_txq(adapter, v_start, txr_idx); in i40evf_map_rings_to_vectors()
429 i40evf_map_vector_to_rxq(adapter, i, rxr_idx); in i40evf_map_rings_to_vectors()
437 i40evf_map_vector_to_txq(adapter, i, txr_idx); in i40evf_map_rings_to_vectors()
444 adapter->aq_required |= I40EVF_FLAG_AQ_MAP_VECTORS; in i40evf_map_rings_to_vectors()
459 struct i40evf_adapter *adapter = netdev_priv(netdev); in i40evf_netpoll() local
460 int q_vectors = adapter->num_msix_vectors - NONQ_VECS; in i40evf_netpoll()
464 if (test_bit(__I40E_DOWN, &adapter->vsi.state)) in i40evf_netpoll()
468 i40evf_msix_clean_rings(0, adapter->q_vector[i]); in i40evf_netpoll()
480 i40evf_request_traffic_irqs(struct i40evf_adapter *adapter, char *basename) in i40evf_request_traffic_irqs() argument
485 i40evf_irq_disable(adapter); in i40evf_request_traffic_irqs()
487 q_vectors = adapter->num_msix_vectors - NONQ_VECS; in i40evf_request_traffic_irqs()
490 struct i40e_q_vector *q_vector = adapter->q_vector[vector]; in i40evf_request_traffic_irqs()
510 adapter->msix_entries[vector + NONQ_VECS].vector, in i40evf_request_traffic_irqs()
516 dev_info(&adapter->pdev->dev, in i40evf_request_traffic_irqs()
522 adapter->msix_entries[vector + NONQ_VECS].vector, in i40evf_request_traffic_irqs()
532 adapter->msix_entries[vector + NONQ_VECS].vector, in i40evf_request_traffic_irqs()
534 free_irq(adapter->msix_entries[vector + NONQ_VECS].vector, in i40evf_request_traffic_irqs()
535 adapter->q_vector[vector]); in i40evf_request_traffic_irqs()
548 static int i40evf_request_misc_irq(struct i40evf_adapter *adapter) in i40evf_request_misc_irq() argument
550 struct net_device *netdev = adapter->netdev; in i40evf_request_misc_irq()
553 snprintf(adapter->misc_vector_name, in i40evf_request_misc_irq()
554 sizeof(adapter->misc_vector_name) - 1, "i40evf-%s:mbx", in i40evf_request_misc_irq()
555 dev_name(&adapter->pdev->dev)); in i40evf_request_misc_irq()
556 err = request_irq(adapter->msix_entries[0].vector, in i40evf_request_misc_irq()
558 adapter->misc_vector_name, netdev); in i40evf_request_misc_irq()
560 dev_err(&adapter->pdev->dev, in i40evf_request_misc_irq()
562 adapter->misc_vector_name, err); in i40evf_request_misc_irq()
563 free_irq(adapter->msix_entries[0].vector, netdev); in i40evf_request_misc_irq()
574 static void i40evf_free_traffic_irqs(struct i40evf_adapter *adapter) in i40evf_free_traffic_irqs() argument
579 q_vectors = adapter->num_msix_vectors - NONQ_VECS; in i40evf_free_traffic_irqs()
582 irq_set_affinity_hint(adapter->msix_entries[i+1].vector, in i40evf_free_traffic_irqs()
584 free_irq(adapter->msix_entries[i+1].vector, in i40evf_free_traffic_irqs()
585 adapter->q_vector[i]); in i40evf_free_traffic_irqs()
595 static void i40evf_free_misc_irq(struct i40evf_adapter *adapter) in i40evf_free_misc_irq() argument
597 struct net_device *netdev = adapter->netdev; in i40evf_free_misc_irq()
599 free_irq(adapter->msix_entries[0].vector, netdev); in i40evf_free_misc_irq()
608 static void i40evf_configure_tx(struct i40evf_adapter *adapter) in i40evf_configure_tx() argument
610 struct i40e_hw *hw = &adapter->hw; in i40evf_configure_tx()
613 for (i = 0; i < adapter->num_active_queues; i++) in i40evf_configure_tx()
614 adapter->tx_rings[i]->tail = hw->hw_addr + I40E_QTX_TAIL1(i); in i40evf_configure_tx()
623 static void i40evf_configure_rx(struct i40evf_adapter *adapter) in i40evf_configure_rx() argument
625 struct i40e_hw *hw = &adapter->hw; in i40evf_configure_rx()
626 struct net_device *netdev = adapter->netdev; in i40evf_configure_rx()
632 adapter->flags &= ~I40EVF_FLAG_RX_PS_CAPABLE; in i40evf_configure_rx()
633 adapter->flags |= I40EVF_FLAG_RX_1BUF_CAPABLE; in i40evf_configure_rx()
637 if (adapter->flags & I40EVF_FLAG_RX_PS_CAPABLE) in i40evf_configure_rx()
638 adapter->flags |= I40EVF_FLAG_RX_PS_ENABLED; in i40evf_configure_rx()
640 adapter->flags &= ~I40EVF_FLAG_RX_PS_ENABLED; in i40evf_configure_rx()
642 if (adapter->flags & I40EVF_FLAG_RX_1BUF_CAPABLE) in i40evf_configure_rx()
643 adapter->flags &= ~I40EVF_FLAG_RX_PS_ENABLED; in i40evf_configure_rx()
645 adapter->flags |= I40EVF_FLAG_RX_PS_ENABLED; in i40evf_configure_rx()
649 if (adapter->flags & I40EVF_FLAG_RX_PS_ENABLED) { in i40evf_configure_rx()
658 for (i = 0; i < adapter->num_active_queues; i++) { in i40evf_configure_rx()
659 adapter->rx_rings[i]->tail = hw->hw_addr + I40E_QRX_TAIL1(i); in i40evf_configure_rx()
660 adapter->rx_rings[i]->rx_buf_len = rx_buf_len; in i40evf_configure_rx()
672 i40evf_vlan_filter *i40evf_find_vlan(struct i40evf_adapter *adapter, u16 vlan) in i40evf_find_vlan() argument
676 list_for_each_entry(f, &adapter->vlan_filter_list, list) { in i40evf_find_vlan()
691 i40evf_vlan_filter *i40evf_add_vlan(struct i40evf_adapter *adapter, u16 vlan) in i40evf_add_vlan() argument
697 &adapter->crit_section)) { in i40evf_add_vlan()
703 f = i40evf_find_vlan(adapter, vlan); in i40evf_add_vlan()
712 list_add(&f->list, &adapter->vlan_filter_list); in i40evf_add_vlan()
714 adapter->aq_required |= I40EVF_FLAG_AQ_ADD_VLAN_FILTER; in i40evf_add_vlan()
718 clear_bit(__I40EVF_IN_CRITICAL_TASK, &adapter->crit_section); in i40evf_add_vlan()
728 static void i40evf_del_vlan(struct i40evf_adapter *adapter, u16 vlan) in i40evf_del_vlan() argument
734 &adapter->crit_section)) { in i40evf_del_vlan()
740 f = i40evf_find_vlan(adapter, vlan); in i40evf_del_vlan()
743 adapter->aq_required |= I40EVF_FLAG_AQ_DEL_VLAN_FILTER; in i40evf_del_vlan()
745 clear_bit(__I40EVF_IN_CRITICAL_TASK, &adapter->crit_section); in i40evf_del_vlan()
756 struct i40evf_adapter *adapter = netdev_priv(netdev); in i40evf_vlan_rx_add_vid() local
758 if (!VLAN_ALLOWED(adapter)) in i40evf_vlan_rx_add_vid()
760 if (i40evf_add_vlan(adapter, vid) == NULL) in i40evf_vlan_rx_add_vid()
773 struct i40evf_adapter *adapter = netdev_priv(netdev); in i40evf_vlan_rx_kill_vid() local
775 if (VLAN_ALLOWED(adapter)) { in i40evf_vlan_rx_kill_vid()
776 i40evf_del_vlan(adapter, vid); in i40evf_vlan_rx_kill_vid()
790 i40evf_mac_filter *i40evf_find_filter(struct i40evf_adapter *adapter, in i40evf_find_filter() argument
798 list_for_each_entry(f, &adapter->mac_filter_list, list) { in i40evf_find_filter()
813 i40evf_mac_filter *i40evf_add_filter(struct i40evf_adapter *adapter, in i40evf_add_filter() argument
823 &adapter->crit_section)) { in i40evf_add_filter()
829 f = i40evf_find_filter(adapter, macaddr); in i40evf_add_filter()
834 &adapter->crit_section); in i40evf_add_filter()
840 list_add(&f->list, &adapter->mac_filter_list); in i40evf_add_filter()
842 adapter->aq_required |= I40EVF_FLAG_AQ_ADD_MAC_FILTER; in i40evf_add_filter()
845 clear_bit(__I40EVF_IN_CRITICAL_TASK, &adapter->crit_section); in i40evf_add_filter()
858 struct i40evf_adapter *adapter = netdev_priv(netdev); in i40evf_set_mac() local
859 struct i40e_hw *hw = &adapter->hw; in i40evf_set_mac()
869 if (adapter->flags & I40EVF_FLAG_ADDR_SET_BY_PF) in i40evf_set_mac()
872 f = i40evf_find_filter(adapter, hw->mac.addr); in i40evf_set_mac()
875 adapter->aq_required |= I40EVF_FLAG_AQ_DEL_MAC_FILTER; in i40evf_set_mac()
878 f = i40evf_add_filter(adapter, addr->sa_data); in i40evf_set_mac()
881 ether_addr_copy(netdev->dev_addr, adapter->hw.mac.addr); in i40evf_set_mac()
893 struct i40evf_adapter *adapter = netdev_priv(netdev); in i40evf_set_rx_mode() local
902 i40evf_add_filter(adapter, uca->addr); in i40evf_set_rx_mode()
905 i40evf_add_filter(adapter, mca->addr); in i40evf_set_rx_mode()
909 &adapter->crit_section)) { in i40evf_set_rx_mode()
912 dev_err(&adapter->pdev->dev, in i40evf_set_rx_mode()
918 list_for_each_entry_safe(f, ftmp, &adapter->mac_filter_list, list) { in i40evf_set_rx_mode()
931 if (ether_addr_equal(f->macaddr, adapter->hw.mac.addr)) in i40evf_set_rx_mode()
936 adapter->aq_required |= I40EVF_FLAG_AQ_DEL_MAC_FILTER; in i40evf_set_rx_mode()
941 clear_bit(__I40EVF_IN_CRITICAL_TASK, &adapter->crit_section); in i40evf_set_rx_mode()
948 static void i40evf_napi_enable_all(struct i40evf_adapter *adapter) in i40evf_napi_enable_all() argument
952 int q_vectors = adapter->num_msix_vectors - NONQ_VECS; in i40evf_napi_enable_all()
957 q_vector = adapter->q_vector[q_idx]; in i40evf_napi_enable_all()
967 static void i40evf_napi_disable_all(struct i40evf_adapter *adapter) in i40evf_napi_disable_all() argument
971 int q_vectors = adapter->num_msix_vectors - NONQ_VECS; in i40evf_napi_disable_all()
974 q_vector = adapter->q_vector[q_idx]; in i40evf_napi_disable_all()
983 static void i40evf_configure(struct i40evf_adapter *adapter) in i40evf_configure() argument
985 struct net_device *netdev = adapter->netdev; in i40evf_configure()
990 i40evf_configure_tx(adapter); in i40evf_configure()
991 i40evf_configure_rx(adapter); in i40evf_configure()
992 adapter->aq_required |= I40EVF_FLAG_AQ_CONFIGURE_QUEUES; in i40evf_configure()
994 for (i = 0; i < adapter->num_active_queues; i++) { in i40evf_configure()
995 struct i40e_ring *ring = adapter->rx_rings[i]; in i40evf_configure()
1007 static int i40evf_up_complete(struct i40evf_adapter *adapter) in i40evf_up_complete() argument
1009 adapter->state = __I40EVF_RUNNING; in i40evf_up_complete()
1010 clear_bit(__I40E_DOWN, &adapter->vsi.state); in i40evf_up_complete()
1012 i40evf_napi_enable_all(adapter); in i40evf_up_complete()
1014 adapter->aq_required |= I40EVF_FLAG_AQ_ENABLE_QUEUES; in i40evf_up_complete()
1015 mod_timer_pending(&adapter->watchdog_timer, jiffies + 1); in i40evf_up_complete()
1023 void i40evf_down(struct i40evf_adapter *adapter) in i40evf_down() argument
1025 struct net_device *netdev = adapter->netdev; in i40evf_down()
1028 if (adapter->state == __I40EVF_DOWN) in i40evf_down()
1032 &adapter->crit_section)) in i40evf_down()
1037 i40evf_napi_disable_all(adapter); in i40evf_down()
1038 i40evf_irq_disable(adapter); in i40evf_down()
1041 list_for_each_entry(f, &adapter->mac_filter_list, list) { in i40evf_down()
1045 list_for_each_entry(f, &adapter->vlan_filter_list, list) { in i40evf_down()
1048 if (!(adapter->flags & I40EVF_FLAG_PF_COMMS_FAILED) && in i40evf_down()
1049 adapter->state != __I40EVF_RESETTING) { in i40evf_down()
1051 adapter->current_op = I40E_VIRTCHNL_OP_UNKNOWN; in i40evf_down()
1056 adapter->aq_required = I40EVF_FLAG_AQ_DEL_MAC_FILTER; in i40evf_down()
1057 adapter->aq_required |= I40EVF_FLAG_AQ_DEL_VLAN_FILTER; in i40evf_down()
1058 adapter->aq_required |= I40EVF_FLAG_AQ_DISABLE_QUEUES; in i40evf_down()
1061 clear_bit(__I40EVF_IN_CRITICAL_TASK, &adapter->crit_section); in i40evf_down()
1074 i40evf_acquire_msix_vectors(struct i40evf_adapter *adapter, int vectors) in i40evf_acquire_msix_vectors() argument
1090 err = pci_enable_msix_range(adapter->pdev, adapter->msix_entries, in i40evf_acquire_msix_vectors()
1093 dev_err(&adapter->pdev->dev, "Unable to allocate MSI-X interrupts\n"); in i40evf_acquire_msix_vectors()
1094 kfree(adapter->msix_entries); in i40evf_acquire_msix_vectors()
1095 adapter->msix_entries = NULL; in i40evf_acquire_msix_vectors()
1103 adapter->num_msix_vectors = err; in i40evf_acquire_msix_vectors()
1113 static void i40evf_free_queues(struct i40evf_adapter *adapter) in i40evf_free_queues() argument
1117 if (!adapter->vsi_res) in i40evf_free_queues()
1119 for (i = 0; i < adapter->num_active_queues; i++) { in i40evf_free_queues()
1120 if (adapter->tx_rings[i]) in i40evf_free_queues()
1121 kfree_rcu(adapter->tx_rings[i], rcu); in i40evf_free_queues()
1122 adapter->tx_rings[i] = NULL; in i40evf_free_queues()
1123 adapter->rx_rings[i] = NULL; in i40evf_free_queues()
1135 static int i40evf_alloc_queues(struct i40evf_adapter *adapter) in i40evf_alloc_queues() argument
1139 for (i = 0; i < adapter->num_active_queues; i++) { in i40evf_alloc_queues()
1148 tx_ring->netdev = adapter->netdev; in i40evf_alloc_queues()
1149 tx_ring->dev = &adapter->pdev->dev; in i40evf_alloc_queues()
1150 tx_ring->count = adapter->tx_desc_count; in i40evf_alloc_queues()
1151 if (adapter->flags & I40E_FLAG_WB_ON_ITR_CAPABLE) in i40evf_alloc_queues()
1153 adapter->tx_rings[i] = tx_ring; in i40evf_alloc_queues()
1157 rx_ring->netdev = adapter->netdev; in i40evf_alloc_queues()
1158 rx_ring->dev = &adapter->pdev->dev; in i40evf_alloc_queues()
1159 rx_ring->count = adapter->rx_desc_count; in i40evf_alloc_queues()
1160 adapter->rx_rings[i] = rx_ring; in i40evf_alloc_queues()
1166 i40evf_free_queues(adapter); in i40evf_alloc_queues()
1177 static int i40evf_set_interrupt_capability(struct i40evf_adapter *adapter) in i40evf_set_interrupt_capability() argument
1183 if (!adapter->vsi_res) { in i40evf_set_interrupt_capability()
1187 pairs = adapter->num_active_queues; in i40evf_set_interrupt_capability()
1195 v_budget = min_t(int, v_budget, (int)adapter->vf_res->max_vectors); in i40evf_set_interrupt_capability()
1197 adapter->msix_entries = kcalloc(v_budget, in i40evf_set_interrupt_capability()
1199 if (!adapter->msix_entries) { in i40evf_set_interrupt_capability()
1205 adapter->msix_entries[vector].entry = vector; in i40evf_set_interrupt_capability()
1207 err = i40evf_acquire_msix_vectors(adapter, v_budget); in i40evf_set_interrupt_capability()
1210 adapter->netdev->real_num_tx_queues = pairs; in i40evf_set_interrupt_capability()
1222 struct i40evf_adapter *adapter = vsi->back; in i40evf_configure_rss_aq() local
1223 struct i40e_hw *hw = &adapter->hw; in i40evf_configure_rss_aq()
1230 if (adapter->current_op != I40E_VIRTCHNL_OP_UNKNOWN) { in i40evf_configure_rss_aq()
1232 dev_err(&adapter->pdev->dev, "Cannot confiure RSS, command %d pending\n", in i40evf_configure_rss_aq()
1233 adapter->current_op); in i40evf_configure_rss_aq()
1246 rss_lut[i] = i % adapter->num_active_queues; in i40evf_configure_rss_aq()
1250 dev_err(&adapter->pdev->dev, in i40evf_configure_rss_aq()
1260 dev_err(&adapter->pdev->dev, in i40evf_configure_rss_aq()
1271 static void i40evf_configure_rss_reg(struct i40evf_adapter *adapter, in i40evf_configure_rss_reg() argument
1274 struct i40e_hw *hw = &adapter->hw; in i40evf_configure_rss_reg()
1288 if (cqueue == adapter->num_active_queues) in i40evf_configure_rss_reg()
1302 static void i40evf_configure_rss(struct i40evf_adapter *adapter) in i40evf_configure_rss() argument
1304 struct i40e_hw *hw = &adapter->hw; in i40evf_configure_rss()
1315 if (RSS_AQ(adapter)) in i40evf_configure_rss()
1316 i40evf_configure_rss_aq(&adapter->vsi, seed); in i40evf_configure_rss()
1318 i40evf_configure_rss_reg(adapter, seed); in i40evf_configure_rss()
1328 static int i40evf_alloc_q_vectors(struct i40evf_adapter *adapter) in i40evf_alloc_q_vectors() argument
1333 num_q_vectors = adapter->num_msix_vectors - NONQ_VECS; in i40evf_alloc_q_vectors()
1339 q_vector->adapter = adapter; in i40evf_alloc_q_vectors()
1340 q_vector->vsi = &adapter->vsi; in i40evf_alloc_q_vectors()
1342 netif_napi_add(adapter->netdev, &q_vector->napi, in i40evf_alloc_q_vectors()
1344 adapter->q_vector[q_idx] = q_vector; in i40evf_alloc_q_vectors()
1352 q_vector = adapter->q_vector[q_idx]; in i40evf_alloc_q_vectors()
1355 adapter->q_vector[q_idx] = NULL; in i40evf_alloc_q_vectors()
1368 static void i40evf_free_q_vectors(struct i40evf_adapter *adapter) in i40evf_free_q_vectors() argument
1373 num_q_vectors = adapter->num_msix_vectors - NONQ_VECS; in i40evf_free_q_vectors()
1374 napi_vectors = adapter->num_active_queues; in i40evf_free_q_vectors()
1377 struct i40e_q_vector *q_vector = adapter->q_vector[q_idx]; in i40evf_free_q_vectors()
1379 adapter->q_vector[q_idx] = NULL; in i40evf_free_q_vectors()
1391 void i40evf_reset_interrupt_capability(struct i40evf_adapter *adapter) in i40evf_reset_interrupt_capability() argument
1393 pci_disable_msix(adapter->pdev); in i40evf_reset_interrupt_capability()
1394 kfree(adapter->msix_entries); in i40evf_reset_interrupt_capability()
1395 adapter->msix_entries = NULL; in i40evf_reset_interrupt_capability()
1403 int i40evf_init_interrupt_scheme(struct i40evf_adapter *adapter) in i40evf_init_interrupt_scheme() argument
1407 err = i40evf_set_interrupt_capability(adapter); in i40evf_init_interrupt_scheme()
1409 dev_err(&adapter->pdev->dev, in i40evf_init_interrupt_scheme()
1414 err = i40evf_alloc_q_vectors(adapter); in i40evf_init_interrupt_scheme()
1416 dev_err(&adapter->pdev->dev, in i40evf_init_interrupt_scheme()
1421 err = i40evf_alloc_queues(adapter); in i40evf_init_interrupt_scheme()
1423 dev_err(&adapter->pdev->dev, in i40evf_init_interrupt_scheme()
1428 dev_info(&adapter->pdev->dev, "Multiqueue %s: Queue pair count = %u", in i40evf_init_interrupt_scheme()
1429 (adapter->num_active_queues > 1) ? "Enabled" : "Disabled", in i40evf_init_interrupt_scheme()
1430 adapter->num_active_queues); in i40evf_init_interrupt_scheme()
1434 i40evf_free_q_vectors(adapter); in i40evf_init_interrupt_scheme()
1436 i40evf_reset_interrupt_capability(adapter); in i40evf_init_interrupt_scheme()
1447 struct i40evf_adapter *adapter = (struct i40evf_adapter *)data; in i40evf_watchdog_timer() local
1449 schedule_work(&adapter->watchdog_task); in i40evf_watchdog_timer()
1459 struct i40evf_adapter *adapter = container_of(work, in i40evf_watchdog_task() local
1462 struct i40e_hw *hw = &adapter->hw; in i40evf_watchdog_task()
1465 if (test_and_set_bit(__I40EVF_IN_CRITICAL_TASK, &adapter->crit_section)) in i40evf_watchdog_task()
1468 if (adapter->flags & I40EVF_FLAG_PF_COMMS_FAILED) { in i40evf_watchdog_task()
1474 dev_err(&adapter->pdev->dev, "Hardware came out of reset. Attempting reinit.\n"); in i40evf_watchdog_task()
1475 adapter->state = __I40EVF_STARTUP; in i40evf_watchdog_task()
1476 adapter->flags &= ~I40EVF_FLAG_PF_COMMS_FAILED; in i40evf_watchdog_task()
1477 schedule_delayed_work(&adapter->init_task, 10); in i40evf_watchdog_task()
1479 &adapter->crit_section); in i40evf_watchdog_task()
1487 adapter->aq_required = 0; in i40evf_watchdog_task()
1488 adapter->current_op = I40E_VIRTCHNL_OP_UNKNOWN; in i40evf_watchdog_task()
1492 if ((adapter->state < __I40EVF_DOWN) || in i40evf_watchdog_task()
1493 (adapter->flags & I40EVF_FLAG_RESET_PENDING)) in i40evf_watchdog_task()
1498 if (!(adapter->flags & I40EVF_FLAG_RESET_PENDING) && !reg_val) { in i40evf_watchdog_task()
1499 adapter->state = __I40EVF_RESETTING; in i40evf_watchdog_task()
1500 adapter->flags |= I40EVF_FLAG_RESET_PENDING; in i40evf_watchdog_task()
1501 dev_err(&adapter->pdev->dev, "Hardware reset detected\n"); in i40evf_watchdog_task()
1502 schedule_work(&adapter->reset_task); in i40evf_watchdog_task()
1503 adapter->aq_required = 0; in i40evf_watchdog_task()
1504 adapter->current_op = I40E_VIRTCHNL_OP_UNKNOWN; in i40evf_watchdog_task()
1511 if (adapter->current_op) { in i40evf_watchdog_task()
1513 dev_dbg(&adapter->pdev->dev, "Admin queue timeout\n"); in i40evf_watchdog_task()
1514 i40evf_send_api_ver(adapter); in i40evf_watchdog_task()
1518 if (adapter->aq_required & I40EVF_FLAG_AQ_GET_CONFIG) { in i40evf_watchdog_task()
1519 i40evf_send_vf_config_msg(adapter); in i40evf_watchdog_task()
1523 if (adapter->aq_required & I40EVF_FLAG_AQ_DISABLE_QUEUES) { in i40evf_watchdog_task()
1524 i40evf_disable_queues(adapter); in i40evf_watchdog_task()
1528 if (adapter->aq_required & I40EVF_FLAG_AQ_MAP_VECTORS) { in i40evf_watchdog_task()
1529 i40evf_map_queues(adapter); in i40evf_watchdog_task()
1533 if (adapter->aq_required & I40EVF_FLAG_AQ_ADD_MAC_FILTER) { in i40evf_watchdog_task()
1534 i40evf_add_ether_addrs(adapter); in i40evf_watchdog_task()
1538 if (adapter->aq_required & I40EVF_FLAG_AQ_ADD_VLAN_FILTER) { in i40evf_watchdog_task()
1539 i40evf_add_vlans(adapter); in i40evf_watchdog_task()
1543 if (adapter->aq_required & I40EVF_FLAG_AQ_DEL_MAC_FILTER) { in i40evf_watchdog_task()
1544 i40evf_del_ether_addrs(adapter); in i40evf_watchdog_task()
1548 if (adapter->aq_required & I40EVF_FLAG_AQ_DEL_VLAN_FILTER) { in i40evf_watchdog_task()
1549 i40evf_del_vlans(adapter); in i40evf_watchdog_task()
1553 if (adapter->aq_required & I40EVF_FLAG_AQ_CONFIGURE_QUEUES) { in i40evf_watchdog_task()
1554 i40evf_configure_queues(adapter); in i40evf_watchdog_task()
1558 if (adapter->aq_required & I40EVF_FLAG_AQ_ENABLE_QUEUES) { in i40evf_watchdog_task()
1559 i40evf_enable_queues(adapter); in i40evf_watchdog_task()
1563 if (adapter->aq_required & I40EVF_FLAG_AQ_CONFIGURE_RSS) { in i40evf_watchdog_task()
1568 i40evf_configure_rss(adapter); in i40evf_watchdog_task()
1569 adapter->aq_required &= ~I40EVF_FLAG_AQ_CONFIGURE_RSS; in i40evf_watchdog_task()
1573 if (adapter->state == __I40EVF_RUNNING) in i40evf_watchdog_task()
1574 i40evf_request_stats(adapter); in i40evf_watchdog_task()
1576 if (adapter->state == __I40EVF_RUNNING) { in i40evf_watchdog_task()
1577 i40evf_irq_enable_queues(adapter, ~0); in i40evf_watchdog_task()
1578 i40evf_fire_sw_int(adapter, 0xFF); in i40evf_watchdog_task()
1580 i40evf_fire_sw_int(adapter, 0x1); in i40evf_watchdog_task()
1583 clear_bit(__I40EVF_IN_CRITICAL_TASK, &adapter->crit_section); in i40evf_watchdog_task()
1585 if (adapter->state == __I40EVF_REMOVE) in i40evf_watchdog_task()
1587 if (adapter->aq_required) in i40evf_watchdog_task()
1588 mod_timer(&adapter->watchdog_timer, in i40evf_watchdog_task()
1591 mod_timer(&adapter->watchdog_timer, jiffies + (HZ * 2)); in i40evf_watchdog_task()
1592 schedule_work(&adapter->adminq_task); in i40evf_watchdog_task()
1607 struct i40evf_adapter *adapter = container_of(work, in i40evf_reset_task() local
1610 struct net_device *netdev = adapter->netdev; in i40evf_reset_task()
1611 struct i40e_hw *hw = &adapter->hw; in i40evf_reset_task()
1618 &adapter->crit_section)) in i40evf_reset_task()
1621 i40evf_misc_irq_disable(adapter); in i40evf_reset_task()
1622 if (adapter->flags & I40EVF_FLAG_RESET_NEEDED) { in i40evf_reset_task()
1623 adapter->flags &= ~I40EVF_FLAG_RESET_NEEDED; in i40evf_reset_task()
1629 i40evf_request_reset(adapter); in i40evf_reset_task()
1631 adapter->flags |= I40EVF_FLAG_RESET_PENDING; in i40evf_reset_task()
1642 dev_info(&adapter->pdev->dev, "Never saw reset\n"); in i40evf_reset_task()
1661 dev_err(&adapter->pdev->dev, "Reset never finished (%x)\n", in i40evf_reset_task()
1663 adapter->flags |= I40EVF_FLAG_PF_COMMS_FAILED; in i40evf_reset_task()
1665 if (netif_running(adapter->netdev)) { in i40evf_reset_task()
1666 set_bit(__I40E_DOWN, &adapter->vsi.state); in i40evf_reset_task()
1669 i40evf_napi_disable_all(adapter); in i40evf_reset_task()
1670 i40evf_irq_disable(adapter); in i40evf_reset_task()
1671 i40evf_free_traffic_irqs(adapter); in i40evf_reset_task()
1672 i40evf_free_all_tx_resources(adapter); in i40evf_reset_task()
1673 i40evf_free_all_rx_resources(adapter); in i40evf_reset_task()
1677 list_for_each_entry_safe(f, ftmp, &adapter->mac_filter_list, in i40evf_reset_task()
1683 list_for_each_entry_safe(fv, fvtmp, &adapter->vlan_filter_list, in i40evf_reset_task()
1689 i40evf_free_misc_irq(adapter); in i40evf_reset_task()
1690 i40evf_reset_interrupt_capability(adapter); in i40evf_reset_task()
1691 i40evf_free_queues(adapter); in i40evf_reset_task()
1692 i40evf_free_q_vectors(adapter); in i40evf_reset_task()
1693 kfree(adapter->vf_res); in i40evf_reset_task()
1695 adapter->netdev->flags &= ~IFF_UP; in i40evf_reset_task()
1696 clear_bit(__I40EVF_IN_CRITICAL_TASK, &adapter->crit_section); in i40evf_reset_task()
1697 adapter->flags &= ~I40EVF_FLAG_RESET_PENDING; in i40evf_reset_task()
1698 dev_info(&adapter->pdev->dev, "Reset task did not complete, VF disabled\n"); in i40evf_reset_task()
1703 if (netif_running(adapter->netdev)) { in i40evf_reset_task()
1706 i40evf_napi_disable_all(adapter); in i40evf_reset_task()
1708 i40evf_irq_disable(adapter); in i40evf_reset_task()
1710 adapter->state = __I40EVF_RESETTING; in i40evf_reset_task()
1711 adapter->flags &= ~I40EVF_FLAG_RESET_PENDING; in i40evf_reset_task()
1716 i40evf_free_all_rx_resources(adapter); in i40evf_reset_task()
1717 i40evf_free_all_tx_resources(adapter); in i40evf_reset_task()
1721 dev_warn(&adapter->pdev->dev, "Failed to shut down adminq\n"); in i40evf_reset_task()
1722 adapter->current_op = I40E_VIRTCHNL_OP_UNKNOWN; in i40evf_reset_task()
1725 dev_info(&adapter->pdev->dev, "Failed to init adminq: %d\n", in i40evf_reset_task()
1728 adapter->aq_required = I40EVF_FLAG_AQ_GET_CONFIG; in i40evf_reset_task()
1729 adapter->aq_required |= I40EVF_FLAG_AQ_MAP_VECTORS; in i40evf_reset_task()
1732 list_for_each_entry(f, &adapter->mac_filter_list, list) { in i40evf_reset_task()
1736 list_for_each_entry(vlf, &adapter->vlan_filter_list, list) { in i40evf_reset_task()
1739 adapter->aq_required |= I40EVF_FLAG_AQ_ADD_MAC_FILTER; in i40evf_reset_task()
1740 adapter->aq_required |= I40EVF_FLAG_AQ_ADD_VLAN_FILTER; in i40evf_reset_task()
1741 clear_bit(__I40EVF_IN_CRITICAL_TASK, &adapter->crit_section); in i40evf_reset_task()
1742 i40evf_misc_irq_enable(adapter); in i40evf_reset_task()
1744 mod_timer(&adapter->watchdog_timer, jiffies + 2); in i40evf_reset_task()
1746 if (netif_running(adapter->netdev)) { in i40evf_reset_task()
1748 err = i40evf_setup_all_tx_resources(adapter); in i40evf_reset_task()
1753 err = i40evf_setup_all_rx_resources(adapter); in i40evf_reset_task()
1757 i40evf_configure(adapter); in i40evf_reset_task()
1759 err = i40evf_up_complete(adapter); in i40evf_reset_task()
1763 i40evf_irq_enable(adapter, true); in i40evf_reset_task()
1765 adapter->state = __I40EVF_DOWN; in i40evf_reset_task()
1770 dev_err(&adapter->pdev->dev, "failed to allocate resources during reinit\n"); in i40evf_reset_task()
1771 i40evf_close(adapter->netdev); in i40evf_reset_task()
1780 struct i40evf_adapter *adapter = in i40evf_adminq_task() local
1782 struct i40e_hw *hw = &adapter->hw; in i40evf_adminq_task()
1789 if (adapter->flags & I40EVF_FLAG_PF_COMMS_FAILED) in i40evf_adminq_task()
1803 i40evf_virtchnl_completion(adapter, v_msg->v_opcode, in i40evf_adminq_task()
1810 if ((adapter->flags & in i40evf_adminq_task()
1812 adapter->state == __I40EVF_RESETTING) in i40evf_adminq_task()
1819 dev_info(&adapter->pdev->dev, "ARQ VF Error detected\n"); in i40evf_adminq_task()
1823 dev_info(&adapter->pdev->dev, "ARQ Overflow Error detected\n"); in i40evf_adminq_task()
1827 dev_info(&adapter->pdev->dev, "ARQ Critical Error detected\n"); in i40evf_adminq_task()
1836 dev_info(&adapter->pdev->dev, "ASQ VF Error detected\n"); in i40evf_adminq_task()
1840 dev_info(&adapter->pdev->dev, "ASQ Overflow Error detected\n"); in i40evf_adminq_task()
1844 dev_info(&adapter->pdev->dev, "ASQ Critical Error detected\n"); in i40evf_adminq_task()
1854 i40evf_misc_irq_enable(adapter); in i40evf_adminq_task()
1863 void i40evf_free_all_tx_resources(struct i40evf_adapter *adapter) in i40evf_free_all_tx_resources() argument
1867 for (i = 0; i < adapter->num_active_queues; i++) in i40evf_free_all_tx_resources()
1868 if (adapter->tx_rings[i]->desc) in i40evf_free_all_tx_resources()
1869 i40evf_free_tx_resources(adapter->tx_rings[i]); in i40evf_free_all_tx_resources()
1882 static int i40evf_setup_all_tx_resources(struct i40evf_adapter *adapter) in i40evf_setup_all_tx_resources() argument
1886 for (i = 0; i < adapter->num_active_queues; i++) { in i40evf_setup_all_tx_resources()
1887 adapter->tx_rings[i]->count = adapter->tx_desc_count; in i40evf_setup_all_tx_resources()
1888 err = i40evf_setup_tx_descriptors(adapter->tx_rings[i]); in i40evf_setup_all_tx_resources()
1891 dev_err(&adapter->pdev->dev, in i40evf_setup_all_tx_resources()
1909 static int i40evf_setup_all_rx_resources(struct i40evf_adapter *adapter) in i40evf_setup_all_rx_resources() argument
1913 for (i = 0; i < adapter->num_active_queues; i++) { in i40evf_setup_all_rx_resources()
1914 adapter->rx_rings[i]->count = adapter->rx_desc_count; in i40evf_setup_all_rx_resources()
1915 err = i40evf_setup_rx_descriptors(adapter->rx_rings[i]); in i40evf_setup_all_rx_resources()
1918 dev_err(&adapter->pdev->dev, in i40evf_setup_all_rx_resources()
1931 void i40evf_free_all_rx_resources(struct i40evf_adapter *adapter) in i40evf_free_all_rx_resources() argument
1935 for (i = 0; i < adapter->num_active_queues; i++) in i40evf_free_all_rx_resources()
1936 if (adapter->rx_rings[i]->desc) in i40evf_free_all_rx_resources()
1937 i40evf_free_rx_resources(adapter->rx_rings[i]); in i40evf_free_all_rx_resources()
1954 struct i40evf_adapter *adapter = netdev_priv(netdev); in i40evf_open() local
1957 if (adapter->flags & I40EVF_FLAG_PF_COMMS_FAILED) { in i40evf_open()
1958 dev_err(&adapter->pdev->dev, "Unable to open device due to PF driver failure.\n"); in i40evf_open()
1961 if (adapter->state != __I40EVF_DOWN || adapter->aq_required) in i40evf_open()
1965 err = i40evf_setup_all_tx_resources(adapter); in i40evf_open()
1970 err = i40evf_setup_all_rx_resources(adapter); in i40evf_open()
1975 err = i40evf_request_traffic_irqs(adapter, netdev->name); in i40evf_open()
1979 i40evf_add_filter(adapter, adapter->hw.mac.addr); in i40evf_open()
1980 i40evf_configure(adapter); in i40evf_open()
1982 err = i40evf_up_complete(adapter); in i40evf_open()
1986 i40evf_irq_enable(adapter, true); in i40evf_open()
1991 i40evf_down(adapter); in i40evf_open()
1992 i40evf_free_traffic_irqs(adapter); in i40evf_open()
1994 i40evf_free_all_rx_resources(adapter); in i40evf_open()
1996 i40evf_free_all_tx_resources(adapter); in i40evf_open()
2014 struct i40evf_adapter *adapter = netdev_priv(netdev); in i40evf_close() local
2016 if (adapter->state <= __I40EVF_DOWN) in i40evf_close()
2020 set_bit(__I40E_DOWN, &adapter->vsi.state); in i40evf_close()
2022 i40evf_down(adapter); in i40evf_close()
2023 adapter->state = __I40EVF_DOWN; in i40evf_close()
2024 i40evf_free_traffic_irqs(adapter); in i40evf_close()
2038 struct i40evf_adapter *adapter = netdev_priv(netdev); in i40evf_get_stats() local
2041 return &adapter->net_stats; in i40evf_get_stats()
2053 struct i40evf_adapter *adapter = netdev_priv(netdev); in i40evf_change_mtu() local
2060 adapter->flags |= I40EVF_FLAG_RESET_NEEDED; in i40evf_change_mtu()
2061 schedule_work(&adapter->reset_task); in i40evf_change_mtu()
2112 int i40evf_process_config(struct i40evf_adapter *adapter) in i40evf_process_config() argument
2114 struct net_device *netdev = adapter->netdev; in i40evf_process_config()
2118 for (i = 0; i < adapter->vf_res->num_vsis; i++) { in i40evf_process_config()
2119 if (adapter->vf_res->vsi_res[i].vsi_type == I40E_VSI_SRIOV) in i40evf_process_config()
2120 adapter->vsi_res = &adapter->vf_res->vsi_res[i]; in i40evf_process_config()
2122 if (!adapter->vsi_res) { in i40evf_process_config()
2123 dev_err(&adapter->pdev->dev, "No LAN VSI found\n"); in i40evf_process_config()
2127 if (adapter->vf_res->vf_offload_flags in i40evf_process_config()
2151 adapter->vsi.id = adapter->vsi_res->vsi_id; in i40evf_process_config()
2153 adapter->vsi.back = adapter; in i40evf_process_config()
2154 adapter->vsi.base_vector = 1; in i40evf_process_config()
2155 adapter->vsi.work_limit = I40E_DEFAULT_IRQ_WORK; in i40evf_process_config()
2156 adapter->vsi.rx_itr_setting = (I40E_ITR_DYNAMIC | in i40evf_process_config()
2158 adapter->vsi.tx_itr_setting = (I40E_ITR_DYNAMIC | in i40evf_process_config()
2160 adapter->vsi.netdev = adapter->netdev; in i40evf_process_config()
2161 adapter->vsi.qs_handle = adapter->vsi_res->qset_handle; in i40evf_process_config()
2179 struct i40evf_adapter *adapter = container_of(work, in i40evf_init_task() local
2182 struct net_device *netdev = adapter->netdev; in i40evf_init_task()
2183 struct i40e_hw *hw = &adapter->hw; in i40evf_init_task()
2184 struct pci_dev *pdev = adapter->pdev; in i40evf_init_task()
2187 switch (adapter->state) { in i40evf_init_task()
2190 adapter->flags &= ~I40EVF_FLAG_PF_COMMS_FAILED; in i40evf_init_task()
2191 adapter->flags &= ~I40EVF_FLAG_RESET_PENDING; in i40evf_init_task()
2215 err = i40evf_send_api_ver(adapter); in i40evf_init_task()
2221 adapter->state = __I40EVF_INIT_VERSION_CHECK; in i40evf_init_task()
2227 adapter->state = __I40EVF_STARTUP; in i40evf_init_task()
2232 err = i40evf_verify_api_ver(adapter); in i40evf_init_task()
2235 err = i40evf_send_api_ver(adapter); in i40evf_init_task()
2238 adapter->pf_version.major, in i40evf_init_task()
2239 adapter->pf_version.minor, in i40evf_init_task()
2244 err = i40evf_send_vf_config_msg(adapter); in i40evf_init_task()
2250 adapter->state = __I40EVF_INIT_GET_RESOURCES; in i40evf_init_task()
2254 if (!adapter->vf_res) { in i40evf_init_task()
2258 adapter->vf_res = kzalloc(bufsz, GFP_KERNEL); in i40evf_init_task()
2259 if (!adapter->vf_res) in i40evf_init_task()
2262 err = i40evf_get_vf_config(adapter); in i40evf_init_task()
2264 err = i40evf_send_vf_config_msg(adapter); in i40evf_init_task()
2272 adapter->state = __I40EVF_INIT_SW; in i40evf_init_task()
2277 if (i40evf_process_config(adapter)) in i40evf_init_task()
2279 adapter->current_op = I40E_VIRTCHNL_OP_UNKNOWN; in i40evf_init_task()
2281 adapter->flags |= I40EVF_FLAG_RX_CSUM_ENABLED; in i40evf_init_task()
2287 if (!is_valid_ether_addr(adapter->hw.mac.addr)) { in i40evf_init_task()
2289 adapter->hw.mac.addr); in i40evf_init_task()
2291 ether_addr_copy(adapter->hw.mac.addr, netdev->dev_addr); in i40evf_init_task()
2293 adapter->flags |= I40EVF_FLAG_ADDR_SET_BY_PF; in i40evf_init_task()
2294 ether_addr_copy(netdev->dev_addr, adapter->hw.mac.addr); in i40evf_init_task()
2295 ether_addr_copy(netdev->perm_addr, adapter->hw.mac.addr); in i40evf_init_task()
2298 init_timer(&adapter->watchdog_timer); in i40evf_init_task()
2299 adapter->watchdog_timer.function = &i40evf_watchdog_timer; in i40evf_init_task()
2300 adapter->watchdog_timer.data = (unsigned long)adapter; in i40evf_init_task()
2301 mod_timer(&adapter->watchdog_timer, jiffies + 1); in i40evf_init_task()
2303 adapter->num_active_queues = min_t(int, in i40evf_init_task()
2304 adapter->vsi_res->num_queue_pairs, in i40evf_init_task()
2306 adapter->tx_desc_count = I40EVF_DEFAULT_TXD; in i40evf_init_task()
2307 adapter->rx_desc_count = I40EVF_DEFAULT_RXD; in i40evf_init_task()
2308 err = i40evf_init_interrupt_scheme(adapter); in i40evf_init_task()
2311 i40evf_map_rings_to_vectors(adapter); in i40evf_init_task()
2312 if (adapter->vf_res->vf_offload_flags & in i40evf_init_task()
2314 adapter->flags |= I40EVF_FLAG_WB_ON_ITR_CAPABLE; in i40evf_init_task()
2315 if (!RSS_AQ(adapter)) in i40evf_init_task()
2316 i40evf_configure_rss(adapter); in i40evf_init_task()
2317 err = i40evf_request_misc_irq(adapter); in i40evf_init_task()
2323 if (!adapter->netdev_registered) { in i40evf_init_task()
2329 adapter->netdev_registered = true; in i40evf_init_task()
2333 dev_info(&pdev->dev, "MAC address: %pM\n", adapter->hw.mac.addr); in i40evf_init_task()
2338 adapter->state = __I40EVF_DOWN; in i40evf_init_task()
2339 set_bit(__I40E_DOWN, &adapter->vsi.state); in i40evf_init_task()
2340 i40evf_misc_irq_enable(adapter); in i40evf_init_task()
2342 if (RSS_AQ(adapter)) { in i40evf_init_task()
2343 adapter->aq_required |= I40EVF_FLAG_AQ_CONFIGURE_RSS; in i40evf_init_task()
2344 mod_timer_pending(&adapter->watchdog_timer, jiffies + 1); in i40evf_init_task()
2346 i40evf_configure_rss(adapter); in i40evf_init_task()
2350 schedule_delayed_work(&adapter->init_task, msecs_to_jiffies(30)); in i40evf_init_task()
2354 i40evf_free_misc_irq(adapter); in i40evf_init_task()
2356 i40evf_reset_interrupt_capability(adapter); in i40evf_init_task()
2358 kfree(adapter->vf_res); in i40evf_init_task()
2359 adapter->vf_res = NULL; in i40evf_init_task()
2362 if (++adapter->aq_wait_count > I40EVF_AQ_MAX_ERR) { in i40evf_init_task()
2364 adapter->flags |= I40EVF_FLAG_PF_COMMS_FAILED; in i40evf_init_task()
2366 adapter->state = __I40EVF_STARTUP; in i40evf_init_task()
2367 schedule_delayed_work(&adapter->init_task, HZ * 5); in i40evf_init_task()
2370 schedule_delayed_work(&adapter->init_task, HZ); in i40evf_init_task()
2380 struct i40evf_adapter *adapter = netdev_priv(netdev); in i40evf_shutdown() local
2388 adapter->state = __I40EVF_REMOVE; in i40evf_shutdown()
2389 adapter->aq_required = 0; in i40evf_shutdown()
2412 struct i40evf_adapter *adapter = NULL; in i40evf_probe() local
2451 adapter = netdev_priv(netdev); in i40evf_probe()
2453 adapter->netdev = netdev; in i40evf_probe()
2454 adapter->pdev = pdev; in i40evf_probe()
2456 hw = &adapter->hw; in i40evf_probe()
2457 hw->back = adapter; in i40evf_probe()
2459 adapter->msg_enable = BIT(DEFAULT_DEBUG_LEVEL_SHIFT) - 1; in i40evf_probe()
2460 adapter->state = __I40EVF_STARTUP; in i40evf_probe()
2485 INIT_LIST_HEAD(&adapter->mac_filter_list); in i40evf_probe()
2486 INIT_LIST_HEAD(&adapter->vlan_filter_list); in i40evf_probe()
2488 INIT_WORK(&adapter->reset_task, i40evf_reset_task); in i40evf_probe()
2489 INIT_WORK(&adapter->adminq_task, i40evf_adminq_task); in i40evf_probe()
2490 INIT_WORK(&adapter->watchdog_task, i40evf_watchdog_task); in i40evf_probe()
2491 INIT_DELAYED_WORK(&adapter->init_task, i40evf_init_task); in i40evf_probe()
2492 schedule_delayed_work(&adapter->init_task, in i40evf_probe()
2518 struct i40evf_adapter *adapter = netdev_priv(netdev); in i40evf_suspend() local
2525 i40evf_down(adapter); in i40evf_suspend()
2528 i40evf_free_misc_irq(adapter); in i40evf_suspend()
2529 i40evf_reset_interrupt_capability(adapter); in i40evf_suspend()
2548 struct i40evf_adapter *adapter = pci_get_drvdata(pdev); in i40evf_resume() local
2549 struct net_device *netdev = adapter->netdev; in i40evf_resume()
2567 err = i40evf_set_interrupt_capability(adapter); in i40evf_resume()
2573 err = i40evf_request_misc_irq(adapter); in i40evf_resume()
2580 schedule_work(&adapter->reset_task); in i40evf_resume()
2600 struct i40evf_adapter *adapter = netdev_priv(netdev); in i40evf_remove() local
2602 struct i40e_hw *hw = &adapter->hw; in i40evf_remove()
2604 cancel_delayed_work_sync(&adapter->init_task); in i40evf_remove()
2605 cancel_work_sync(&adapter->reset_task); in i40evf_remove()
2607 if (adapter->netdev_registered) { in i40evf_remove()
2609 adapter->netdev_registered = false; in i40evf_remove()
2613 adapter->state = __I40EVF_REMOVE; in i40evf_remove()
2614 adapter->aq_required = 0; in i40evf_remove()
2615 i40evf_request_reset(adapter); in i40evf_remove()
2619 i40evf_request_reset(adapter); in i40evf_remove()
2623 if (adapter->msix_entries) { in i40evf_remove()
2624 i40evf_misc_irq_disable(adapter); in i40evf_remove()
2625 i40evf_free_misc_irq(adapter); in i40evf_remove()
2626 i40evf_reset_interrupt_capability(adapter); in i40evf_remove()
2627 i40evf_free_q_vectors(adapter); in i40evf_remove()
2630 if (adapter->watchdog_timer.function) in i40evf_remove()
2631 del_timer_sync(&adapter->watchdog_timer); in i40evf_remove()
2645 i40evf_free_all_tx_resources(adapter); in i40evf_remove()
2646 i40evf_free_all_rx_resources(adapter); in i40evf_remove()
2647 i40evf_free_queues(adapter); in i40evf_remove()
2648 kfree(adapter->vf_res); in i40evf_remove()
2652 list_for_each_entry_safe(f, ftmp, &adapter->mac_filter_list, list) { in i40evf_remove()
2656 list_for_each_entry_safe(f, ftmp, &adapter->vlan_filter_list, list) { in i40evf_remove()