Lines Matching refs:adapter
106 static void igbvf_receive_skb(struct igbvf_adapter *adapter, in igbvf_receive_skb() argument
114 if ((adapter->flags & IGBVF_FLAG_RX_LB_VLAN_BSWAP) && in igbvf_receive_skb()
119 if (test_bit(vid, adapter->active_vlans)) in igbvf_receive_skb()
123 napi_gro_receive(&adapter->rx_ring->napi, skb); in igbvf_receive_skb()
126 static inline void igbvf_rx_checksum_adv(struct igbvf_adapter *adapter, in igbvf_rx_checksum_adv() argument
133 (adapter->flags & IGBVF_FLAG_RX_CSUM_DISABLED)) in igbvf_rx_checksum_adv()
140 adapter->hw_csum_err++; in igbvf_rx_checksum_adv()
148 adapter->hw_csum_good++; in igbvf_rx_checksum_adv()
159 struct igbvf_adapter *adapter = rx_ring->adapter; in igbvf_alloc_rx_buffers() local
160 struct net_device *netdev = adapter->netdev; in igbvf_alloc_rx_buffers()
161 struct pci_dev *pdev = adapter->pdev; in igbvf_alloc_rx_buffers()
171 if (adapter->rx_ps_hdr_size) in igbvf_alloc_rx_buffers()
172 bufsz = adapter->rx_ps_hdr_size; in igbvf_alloc_rx_buffers()
174 bufsz = adapter->rx_buffer_len; in igbvf_alloc_rx_buffers()
179 if (adapter->rx_ps_hdr_size && !buffer_info->page_dma) { in igbvf_alloc_rx_buffers()
183 adapter->alloc_rx_buff_failed++; in igbvf_alloc_rx_buffers()
207 adapter->alloc_rx_buff_failed++; in igbvf_alloc_rx_buffers()
225 if (adapter->rx_ps_hdr_size) { in igbvf_alloc_rx_buffers()
254 writel(i, adapter->hw.hw_addr + rx_ring->tail); in igbvf_alloc_rx_buffers()
265 static bool igbvf_clean_rx_irq(struct igbvf_adapter *adapter, in igbvf_clean_rx_irq() argument
268 struct igbvf_ring *rx_ring = adapter->rx_ring; in igbvf_clean_rx_irq()
269 struct net_device *netdev = adapter->netdev; in igbvf_clean_rx_irq()
270 struct pci_dev *pdev = adapter->pdev; in igbvf_clean_rx_irq()
300 if (hlen > adapter->rx_ps_hdr_size) in igbvf_clean_rx_irq()
301 hlen = adapter->rx_ps_hdr_size; in igbvf_clean_rx_irq()
310 if (!adapter->rx_ps_hdr_size) { in igbvf_clean_rx_irq()
312 adapter->rx_buffer_len, in igbvf_clean_rx_irq()
321 adapter->rx_ps_hdr_size, in igbvf_clean_rx_irq()
338 if ((adapter->rx_buffer_len > (PAGE_SIZE / 2)) || in igbvf_clean_rx_irq()
372 igbvf_rx_checksum_adv(adapter, staterr, skb); in igbvf_clean_rx_irq()
376 igbvf_receive_skb(adapter, netdev, skb, staterr, in igbvf_clean_rx_irq()
401 adapter->total_rx_packets += total_packets; in igbvf_clean_rx_irq()
402 adapter->total_rx_bytes += total_bytes; in igbvf_clean_rx_irq()
403 adapter->net_stats.rx_bytes += total_bytes; in igbvf_clean_rx_irq()
404 adapter->net_stats.rx_packets += total_packets; in igbvf_clean_rx_irq()
408 static void igbvf_put_txbuf(struct igbvf_adapter *adapter, in igbvf_put_txbuf() argument
413 dma_unmap_page(&adapter->pdev->dev, in igbvf_put_txbuf()
418 dma_unmap_single(&adapter->pdev->dev, in igbvf_put_txbuf()
437 int igbvf_setup_tx_resources(struct igbvf_adapter *adapter, in igbvf_setup_tx_resources() argument
440 struct pci_dev *pdev = adapter->pdev; in igbvf_setup_tx_resources()
457 tx_ring->adapter = adapter; in igbvf_setup_tx_resources()
464 dev_err(&adapter->pdev->dev, in igbvf_setup_tx_resources()
475 int igbvf_setup_rx_resources(struct igbvf_adapter *adapter, in igbvf_setup_rx_resources() argument
478 struct pci_dev *pdev = adapter->pdev; in igbvf_setup_rx_resources()
500 rx_ring->adapter = adapter; in igbvf_setup_rx_resources()
507 dev_err(&adapter->pdev->dev, in igbvf_setup_rx_resources()
518 struct igbvf_adapter *adapter = tx_ring->adapter; in igbvf_clean_tx_ring() local
529 igbvf_put_txbuf(adapter, buffer_info); in igbvf_clean_tx_ring()
541 writel(0, adapter->hw.hw_addr + tx_ring->head); in igbvf_clean_tx_ring()
542 writel(0, adapter->hw.hw_addr + tx_ring->tail); in igbvf_clean_tx_ring()
553 struct pci_dev *pdev = tx_ring->adapter->pdev; in igbvf_free_tx_resources()
572 struct igbvf_adapter *adapter = rx_ring->adapter; in igbvf_clean_rx_ring() local
574 struct pci_dev *pdev = adapter->pdev; in igbvf_clean_rx_ring()
585 if (adapter->rx_ps_hdr_size) { in igbvf_clean_rx_ring()
587 adapter->rx_ps_hdr_size, in igbvf_clean_rx_ring()
591 adapter->rx_buffer_len, in igbvf_clean_rx_ring()
624 writel(0, adapter->hw.hw_addr + rx_ring->head); in igbvf_clean_rx_ring()
625 writel(0, adapter->hw.hw_addr + rx_ring->tail); in igbvf_clean_rx_ring()
637 struct pci_dev *pdev = rx_ring->adapter->pdev; in igbvf_free_rx_resources()
663 static enum latency_range igbvf_update_itr(struct igbvf_adapter *adapter, in igbvf_update_itr() argument
733 static void igbvf_set_itr(struct igbvf_adapter *adapter) in igbvf_set_itr() argument
737 adapter->tx_ring->itr_range = in igbvf_set_itr()
738 igbvf_update_itr(adapter, in igbvf_set_itr()
739 adapter->tx_ring->itr_val, in igbvf_set_itr()
740 adapter->total_tx_packets, in igbvf_set_itr()
741 adapter->total_tx_bytes); in igbvf_set_itr()
744 if (adapter->requested_itr == 3 && in igbvf_set_itr()
745 adapter->tx_ring->itr_range == lowest_latency) in igbvf_set_itr()
746 adapter->tx_ring->itr_range = low_latency; in igbvf_set_itr()
748 new_itr = igbvf_range_to_itr(adapter->tx_ring->itr_range); in igbvf_set_itr()
750 if (new_itr != adapter->tx_ring->itr_val) { in igbvf_set_itr()
751 u32 current_itr = adapter->tx_ring->itr_val; in igbvf_set_itr()
759 adapter->tx_ring->itr_val = new_itr; in igbvf_set_itr()
761 adapter->tx_ring->set_itr = 1; in igbvf_set_itr()
764 adapter->rx_ring->itr_range = in igbvf_set_itr()
765 igbvf_update_itr(adapter, adapter->rx_ring->itr_val, in igbvf_set_itr()
766 adapter->total_rx_packets, in igbvf_set_itr()
767 adapter->total_rx_bytes); in igbvf_set_itr()
768 if (adapter->requested_itr == 3 && in igbvf_set_itr()
769 adapter->rx_ring->itr_range == lowest_latency) in igbvf_set_itr()
770 adapter->rx_ring->itr_range = low_latency; in igbvf_set_itr()
772 new_itr = igbvf_range_to_itr(adapter->rx_ring->itr_range); in igbvf_set_itr()
774 if (new_itr != adapter->rx_ring->itr_val) { in igbvf_set_itr()
775 u32 current_itr = adapter->rx_ring->itr_val; in igbvf_set_itr()
780 adapter->rx_ring->itr_val = new_itr; in igbvf_set_itr()
782 adapter->rx_ring->set_itr = 1; in igbvf_set_itr()
794 struct igbvf_adapter *adapter = tx_ring->adapter; in igbvf_clean_tx_irq() local
795 struct net_device *netdev = adapter->netdev; in igbvf_clean_tx_irq()
839 igbvf_put_txbuf(adapter, buffer_info); in igbvf_clean_tx_irq()
861 !(test_bit(__IGBVF_DOWN, &adapter->state))) { in igbvf_clean_tx_irq()
863 ++adapter->restart_queue; in igbvf_clean_tx_irq()
867 adapter->net_stats.tx_bytes += total_bytes; in igbvf_clean_tx_irq()
868 adapter->net_stats.tx_packets += total_packets; in igbvf_clean_tx_irq()
875 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_msix_other() local
876 struct e1000_hw *hw = &adapter->hw; in igbvf_msix_other()
878 adapter->int_counter1++; in igbvf_msix_other()
881 if (!test_bit(__IGBVF_DOWN, &adapter->state)) in igbvf_msix_other()
882 mod_timer(&adapter->watchdog_timer, jiffies + 1); in igbvf_msix_other()
884 ew32(EIMS, adapter->eims_other); in igbvf_msix_other()
892 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_intr_msix_tx() local
893 struct e1000_hw *hw = &adapter->hw; in igbvf_intr_msix_tx()
894 struct igbvf_ring *tx_ring = adapter->tx_ring; in igbvf_intr_msix_tx()
898 adapter->hw.hw_addr + tx_ring->itr_register); in igbvf_intr_msix_tx()
899 adapter->tx_ring->set_itr = 0; in igbvf_intr_msix_tx()
902 adapter->total_tx_bytes = 0; in igbvf_intr_msix_tx()
903 adapter->total_tx_packets = 0; in igbvf_intr_msix_tx()
920 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_intr_msix_rx() local
922 adapter->int_counter0++; in igbvf_intr_msix_rx()
927 if (adapter->rx_ring->set_itr) { in igbvf_intr_msix_rx()
928 writel(adapter->rx_ring->itr_val, in igbvf_intr_msix_rx()
929 adapter->hw.hw_addr + adapter->rx_ring->itr_register); in igbvf_intr_msix_rx()
930 adapter->rx_ring->set_itr = 0; in igbvf_intr_msix_rx()
933 if (napi_schedule_prep(&adapter->rx_ring->napi)) { in igbvf_intr_msix_rx()
934 adapter->total_rx_bytes = 0; in igbvf_intr_msix_rx()
935 adapter->total_rx_packets = 0; in igbvf_intr_msix_rx()
936 __napi_schedule(&adapter->rx_ring->napi); in igbvf_intr_msix_rx()
944 static void igbvf_assign_vector(struct igbvf_adapter *adapter, int rx_queue, in igbvf_assign_vector() argument
947 struct e1000_hw *hw = &adapter->hw; in igbvf_assign_vector()
967 adapter->rx_ring[rx_queue].eims_value = BIT(msix_vector); in igbvf_assign_vector()
982 adapter->tx_ring[tx_queue].eims_value = BIT(msix_vector); in igbvf_assign_vector()
994 static void igbvf_configure_msix(struct igbvf_adapter *adapter) in igbvf_configure_msix() argument
997 struct e1000_hw *hw = &adapter->hw; in igbvf_configure_msix()
998 struct igbvf_ring *tx_ring = adapter->tx_ring; in igbvf_configure_msix()
999 struct igbvf_ring *rx_ring = adapter->rx_ring; in igbvf_configure_msix()
1002 adapter->eims_enable_mask = 0; in igbvf_configure_msix()
1004 igbvf_assign_vector(adapter, IGBVF_NO_QUEUE, 0, vector++); in igbvf_configure_msix()
1005 adapter->eims_enable_mask |= tx_ring->eims_value; in igbvf_configure_msix()
1007 igbvf_assign_vector(adapter, 0, IGBVF_NO_QUEUE, vector++); in igbvf_configure_msix()
1008 adapter->eims_enable_mask |= rx_ring->eims_value; in igbvf_configure_msix()
1017 adapter->eims_enable_mask = GENMASK(vector - 1, 0); in igbvf_configure_msix()
1018 adapter->eims_other = BIT(vector - 1); in igbvf_configure_msix()
1022 static void igbvf_reset_interrupt_capability(struct igbvf_adapter *adapter) in igbvf_reset_interrupt_capability() argument
1024 if (adapter->msix_entries) { in igbvf_reset_interrupt_capability()
1025 pci_disable_msix(adapter->pdev); in igbvf_reset_interrupt_capability()
1026 kfree(adapter->msix_entries); in igbvf_reset_interrupt_capability()
1027 adapter->msix_entries = NULL; in igbvf_reset_interrupt_capability()
1038 static void igbvf_set_interrupt_capability(struct igbvf_adapter *adapter) in igbvf_set_interrupt_capability() argument
1044 adapter->msix_entries = kcalloc(3, sizeof(struct msix_entry), in igbvf_set_interrupt_capability()
1046 if (adapter->msix_entries) { in igbvf_set_interrupt_capability()
1048 adapter->msix_entries[i].entry = i; in igbvf_set_interrupt_capability()
1050 err = pci_enable_msix_range(adapter->pdev, in igbvf_set_interrupt_capability()
1051 adapter->msix_entries, 3, 3); in igbvf_set_interrupt_capability()
1056 dev_err(&adapter->pdev->dev, in igbvf_set_interrupt_capability()
1058 igbvf_reset_interrupt_capability(adapter); in igbvf_set_interrupt_capability()
1069 static int igbvf_request_msix(struct igbvf_adapter *adapter) in igbvf_request_msix() argument
1071 struct net_device *netdev = adapter->netdev; in igbvf_request_msix()
1075 sprintf(adapter->tx_ring->name, "%s-tx-0", netdev->name); in igbvf_request_msix()
1076 sprintf(adapter->rx_ring->name, "%s-rx-0", netdev->name); in igbvf_request_msix()
1078 memcpy(adapter->tx_ring->name, netdev->name, IFNAMSIZ); in igbvf_request_msix()
1079 memcpy(adapter->rx_ring->name, netdev->name, IFNAMSIZ); in igbvf_request_msix()
1082 err = request_irq(adapter->msix_entries[vector].vector, in igbvf_request_msix()
1083 igbvf_intr_msix_tx, 0, adapter->tx_ring->name, in igbvf_request_msix()
1088 adapter->tx_ring->itr_register = E1000_EITR(vector); in igbvf_request_msix()
1089 adapter->tx_ring->itr_val = adapter->current_itr; in igbvf_request_msix()
1092 err = request_irq(adapter->msix_entries[vector].vector, in igbvf_request_msix()
1093 igbvf_intr_msix_rx, 0, adapter->rx_ring->name, in igbvf_request_msix()
1098 adapter->rx_ring->itr_register = E1000_EITR(vector); in igbvf_request_msix()
1099 adapter->rx_ring->itr_val = adapter->current_itr; in igbvf_request_msix()
1102 err = request_irq(adapter->msix_entries[vector].vector, in igbvf_request_msix()
1107 igbvf_configure_msix(adapter); in igbvf_request_msix()
1117 static int igbvf_alloc_queues(struct igbvf_adapter *adapter) in igbvf_alloc_queues() argument
1119 struct net_device *netdev = adapter->netdev; in igbvf_alloc_queues()
1121 adapter->tx_ring = kzalloc(sizeof(struct igbvf_ring), GFP_KERNEL); in igbvf_alloc_queues()
1122 if (!adapter->tx_ring) in igbvf_alloc_queues()
1125 adapter->rx_ring = kzalloc(sizeof(struct igbvf_ring), GFP_KERNEL); in igbvf_alloc_queues()
1126 if (!adapter->rx_ring) { in igbvf_alloc_queues()
1127 kfree(adapter->tx_ring); in igbvf_alloc_queues()
1131 netif_napi_add(netdev, &adapter->rx_ring->napi, igbvf_poll, 64); in igbvf_alloc_queues()
1143 static int igbvf_request_irq(struct igbvf_adapter *adapter) in igbvf_request_irq() argument
1148 if (adapter->msix_entries) in igbvf_request_irq()
1149 err = igbvf_request_msix(adapter); in igbvf_request_irq()
1154 dev_err(&adapter->pdev->dev, in igbvf_request_irq()
1160 static void igbvf_free_irq(struct igbvf_adapter *adapter) in igbvf_free_irq() argument
1162 struct net_device *netdev = adapter->netdev; in igbvf_free_irq()
1165 if (adapter->msix_entries) { in igbvf_free_irq()
1167 free_irq(adapter->msix_entries[vector].vector, netdev); in igbvf_free_irq()
1175 static void igbvf_irq_disable(struct igbvf_adapter *adapter) in igbvf_irq_disable() argument
1177 struct e1000_hw *hw = &adapter->hw; in igbvf_irq_disable()
1181 if (adapter->msix_entries) in igbvf_irq_disable()
1189 static void igbvf_irq_enable(struct igbvf_adapter *adapter) in igbvf_irq_enable() argument
1191 struct e1000_hw *hw = &adapter->hw; in igbvf_irq_enable()
1193 ew32(EIAC, adapter->eims_enable_mask); in igbvf_irq_enable()
1194 ew32(EIAM, adapter->eims_enable_mask); in igbvf_irq_enable()
1195 ew32(EIMS, adapter->eims_enable_mask); in igbvf_irq_enable()
1206 struct igbvf_adapter *adapter = rx_ring->adapter; in igbvf_poll() local
1207 struct e1000_hw *hw = &adapter->hw; in igbvf_poll()
1210 igbvf_clean_rx_irq(adapter, &work_done, budget); in igbvf_poll()
1216 if (adapter->requested_itr & 3) in igbvf_poll()
1217 igbvf_set_itr(adapter); in igbvf_poll()
1219 if (!test_bit(__IGBVF_DOWN, &adapter->state)) in igbvf_poll()
1220 ew32(EIMS, adapter->rx_ring->eims_value); in igbvf_poll()
1232 static void igbvf_set_rlpml(struct igbvf_adapter *adapter) in igbvf_set_rlpml() argument
1235 struct e1000_hw *hw = &adapter->hw; in igbvf_set_rlpml()
1237 max_frame_size = adapter->max_frame_size + VLAN_TAG_SIZE; in igbvf_set_rlpml()
1244 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_vlan_rx_add_vid() local
1245 struct e1000_hw *hw = &adapter->hw; in igbvf_vlan_rx_add_vid()
1248 dev_err(&adapter->pdev->dev, "Failed to add vlan id %d\n", vid); in igbvf_vlan_rx_add_vid()
1251 set_bit(vid, adapter->active_vlans); in igbvf_vlan_rx_add_vid()
1258 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_vlan_rx_kill_vid() local
1259 struct e1000_hw *hw = &adapter->hw; in igbvf_vlan_rx_kill_vid()
1262 dev_err(&adapter->pdev->dev, in igbvf_vlan_rx_kill_vid()
1266 clear_bit(vid, adapter->active_vlans); in igbvf_vlan_rx_kill_vid()
1270 static void igbvf_restore_vlan(struct igbvf_adapter *adapter) in igbvf_restore_vlan() argument
1274 for_each_set_bit(vid, adapter->active_vlans, VLAN_N_VID) in igbvf_restore_vlan()
1275 igbvf_vlan_rx_add_vid(adapter->netdev, htons(ETH_P_8021Q), vid); in igbvf_restore_vlan()
1284 static void igbvf_configure_tx(struct igbvf_adapter *adapter) in igbvf_configure_tx() argument
1286 struct e1000_hw *hw = &adapter->hw; in igbvf_configure_tx()
1287 struct igbvf_ring *tx_ring = adapter->tx_ring; in igbvf_configure_tx()
1320 adapter->txd_cmd = E1000_ADVTXD_DCMD_EOP | E1000_ADVTXD_DCMD_IFCS; in igbvf_configure_tx()
1323 adapter->txd_cmd |= E1000_ADVTXD_DCMD_RS; in igbvf_configure_tx()
1330 static void igbvf_setup_srrctl(struct igbvf_adapter *adapter) in igbvf_setup_srrctl() argument
1332 struct e1000_hw *hw = &adapter->hw; in igbvf_setup_srrctl()
1343 srrctl |= ALIGN(adapter->rx_buffer_len, 1024) >> in igbvf_setup_srrctl()
1346 if (adapter->rx_buffer_len < 2048) { in igbvf_setup_srrctl()
1347 adapter->rx_ps_hdr_size = 0; in igbvf_setup_srrctl()
1350 adapter->rx_ps_hdr_size = 128; in igbvf_setup_srrctl()
1351 srrctl |= adapter->rx_ps_hdr_size << in igbvf_setup_srrctl()
1365 static void igbvf_configure_rx(struct igbvf_adapter *adapter) in igbvf_configure_rx() argument
1367 struct e1000_hw *hw = &adapter->hw; in igbvf_configure_rx()
1368 struct igbvf_ring *rx_ring = adapter->rx_ring; in igbvf_configure_rx()
1396 igbvf_set_rlpml(adapter); in igbvf_configure_rx()
1413 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_set_multi() local
1414 struct e1000_hw *hw = &adapter->hw; in igbvf_set_multi()
1439 static void igbvf_configure(struct igbvf_adapter *adapter) in igbvf_configure() argument
1441 igbvf_set_multi(adapter->netdev); in igbvf_configure()
1443 igbvf_restore_vlan(adapter); in igbvf_configure()
1445 igbvf_configure_tx(adapter); in igbvf_configure()
1446 igbvf_setup_srrctl(adapter); in igbvf_configure()
1447 igbvf_configure_rx(adapter); in igbvf_configure()
1448 igbvf_alloc_rx_buffers(adapter->rx_ring, in igbvf_configure()
1449 igbvf_desc_unused(adapter->rx_ring)); in igbvf_configure()
1460 static void igbvf_reset(struct igbvf_adapter *adapter) in igbvf_reset() argument
1462 struct e1000_mac_info *mac = &adapter->hw.mac; in igbvf_reset()
1463 struct net_device *netdev = adapter->netdev; in igbvf_reset()
1464 struct e1000_hw *hw = &adapter->hw; in igbvf_reset()
1468 dev_err(&adapter->pdev->dev, "PF still resetting\n"); in igbvf_reset()
1472 if (is_valid_ether_addr(adapter->hw.mac.addr)) { in igbvf_reset()
1473 memcpy(netdev->dev_addr, adapter->hw.mac.addr, in igbvf_reset()
1475 memcpy(netdev->perm_addr, adapter->hw.mac.addr, in igbvf_reset()
1479 adapter->last_reset = jiffies; in igbvf_reset()
1482 int igbvf_up(struct igbvf_adapter *adapter) in igbvf_up() argument
1484 struct e1000_hw *hw = &adapter->hw; in igbvf_up()
1487 igbvf_configure(adapter); in igbvf_up()
1489 clear_bit(__IGBVF_DOWN, &adapter->state); in igbvf_up()
1491 napi_enable(&adapter->rx_ring->napi); in igbvf_up()
1492 if (adapter->msix_entries) in igbvf_up()
1493 igbvf_configure_msix(adapter); in igbvf_up()
1497 igbvf_irq_enable(adapter); in igbvf_up()
1501 mod_timer(&adapter->watchdog_timer, jiffies + 1); in igbvf_up()
1506 void igbvf_down(struct igbvf_adapter *adapter) in igbvf_down() argument
1508 struct net_device *netdev = adapter->netdev; in igbvf_down()
1509 struct e1000_hw *hw = &adapter->hw; in igbvf_down()
1515 set_bit(__IGBVF_DOWN, &adapter->state); in igbvf_down()
1532 napi_disable(&adapter->rx_ring->napi); in igbvf_down()
1534 igbvf_irq_disable(adapter); in igbvf_down()
1536 del_timer_sync(&adapter->watchdog_timer); in igbvf_down()
1539 igbvf_update_stats(adapter); in igbvf_down()
1541 adapter->link_speed = 0; in igbvf_down()
1542 adapter->link_duplex = 0; in igbvf_down()
1544 igbvf_reset(adapter); in igbvf_down()
1545 igbvf_clean_tx_ring(adapter->tx_ring); in igbvf_down()
1546 igbvf_clean_rx_ring(adapter->rx_ring); in igbvf_down()
1549 void igbvf_reinit_locked(struct igbvf_adapter *adapter) in igbvf_reinit_locked() argument
1552 while (test_and_set_bit(__IGBVF_RESETTING, &adapter->state)) in igbvf_reinit_locked()
1554 igbvf_down(adapter); in igbvf_reinit_locked()
1555 igbvf_up(adapter); in igbvf_reinit_locked()
1556 clear_bit(__IGBVF_RESETTING, &adapter->state); in igbvf_reinit_locked()
1567 static int igbvf_sw_init(struct igbvf_adapter *adapter) in igbvf_sw_init() argument
1569 struct net_device *netdev = adapter->netdev; in igbvf_sw_init()
1572 adapter->rx_buffer_len = ETH_FRAME_LEN + VLAN_HLEN + ETH_FCS_LEN; in igbvf_sw_init()
1573 adapter->rx_ps_hdr_size = 0; in igbvf_sw_init()
1574 adapter->max_frame_size = netdev->mtu + ETH_HLEN + ETH_FCS_LEN; in igbvf_sw_init()
1575 adapter->min_frame_size = ETH_ZLEN + ETH_FCS_LEN; in igbvf_sw_init()
1577 adapter->tx_int_delay = 8; in igbvf_sw_init()
1578 adapter->tx_abs_int_delay = 32; in igbvf_sw_init()
1579 adapter->rx_int_delay = 0; in igbvf_sw_init()
1580 adapter->rx_abs_int_delay = 8; in igbvf_sw_init()
1581 adapter->requested_itr = 3; in igbvf_sw_init()
1582 adapter->current_itr = IGBVF_START_ITR; in igbvf_sw_init()
1585 adapter->ei->init_ops(&adapter->hw); in igbvf_sw_init()
1587 rc = adapter->hw.mac.ops.init_params(&adapter->hw); in igbvf_sw_init()
1591 rc = adapter->hw.mbx.ops.init_params(&adapter->hw); in igbvf_sw_init()
1595 igbvf_set_interrupt_capability(adapter); in igbvf_sw_init()
1597 if (igbvf_alloc_queues(adapter)) in igbvf_sw_init()
1600 spin_lock_init(&adapter->tx_queue_lock); in igbvf_sw_init()
1603 igbvf_irq_disable(adapter); in igbvf_sw_init()
1605 spin_lock_init(&adapter->stats_lock); in igbvf_sw_init()
1607 set_bit(__IGBVF_DOWN, &adapter->state); in igbvf_sw_init()
1611 static void igbvf_initialize_last_counter_stats(struct igbvf_adapter *adapter) in igbvf_initialize_last_counter_stats() argument
1613 struct e1000_hw *hw = &adapter->hw; in igbvf_initialize_last_counter_stats()
1615 adapter->stats.last_gprc = er32(VFGPRC); in igbvf_initialize_last_counter_stats()
1616 adapter->stats.last_gorc = er32(VFGORC); in igbvf_initialize_last_counter_stats()
1617 adapter->stats.last_gptc = er32(VFGPTC); in igbvf_initialize_last_counter_stats()
1618 adapter->stats.last_gotc = er32(VFGOTC); in igbvf_initialize_last_counter_stats()
1619 adapter->stats.last_mprc = er32(VFMPRC); in igbvf_initialize_last_counter_stats()
1620 adapter->stats.last_gotlbc = er32(VFGOTLBC); in igbvf_initialize_last_counter_stats()
1621 adapter->stats.last_gptlbc = er32(VFGPTLBC); in igbvf_initialize_last_counter_stats()
1622 adapter->stats.last_gorlbc = er32(VFGORLBC); in igbvf_initialize_last_counter_stats()
1623 adapter->stats.last_gprlbc = er32(VFGPRLBC); in igbvf_initialize_last_counter_stats()
1625 adapter->stats.base_gprc = er32(VFGPRC); in igbvf_initialize_last_counter_stats()
1626 adapter->stats.base_gorc = er32(VFGORC); in igbvf_initialize_last_counter_stats()
1627 adapter->stats.base_gptc = er32(VFGPTC); in igbvf_initialize_last_counter_stats()
1628 adapter->stats.base_gotc = er32(VFGOTC); in igbvf_initialize_last_counter_stats()
1629 adapter->stats.base_mprc = er32(VFMPRC); in igbvf_initialize_last_counter_stats()
1630 adapter->stats.base_gotlbc = er32(VFGOTLBC); in igbvf_initialize_last_counter_stats()
1631 adapter->stats.base_gptlbc = er32(VFGPTLBC); in igbvf_initialize_last_counter_stats()
1632 adapter->stats.base_gorlbc = er32(VFGORLBC); in igbvf_initialize_last_counter_stats()
1633 adapter->stats.base_gprlbc = er32(VFGPRLBC); in igbvf_initialize_last_counter_stats()
1650 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_open() local
1651 struct e1000_hw *hw = &adapter->hw; in igbvf_open()
1655 if (test_bit(__IGBVF_TESTING, &adapter->state)) in igbvf_open()
1659 err = igbvf_setup_tx_resources(adapter, adapter->tx_ring); in igbvf_open()
1664 err = igbvf_setup_rx_resources(adapter, adapter->rx_ring); in igbvf_open()
1673 igbvf_configure(adapter); in igbvf_open()
1675 err = igbvf_request_irq(adapter); in igbvf_open()
1680 clear_bit(__IGBVF_DOWN, &adapter->state); in igbvf_open()
1682 napi_enable(&adapter->rx_ring->napi); in igbvf_open()
1687 igbvf_irq_enable(adapter); in igbvf_open()
1691 mod_timer(&adapter->watchdog_timer, jiffies + 1); in igbvf_open()
1696 igbvf_free_rx_resources(adapter->rx_ring); in igbvf_open()
1698 igbvf_free_tx_resources(adapter->tx_ring); in igbvf_open()
1700 igbvf_reset(adapter); in igbvf_open()
1718 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_close() local
1720 WARN_ON(test_bit(__IGBVF_RESETTING, &adapter->state)); in igbvf_close()
1721 igbvf_down(adapter); in igbvf_close()
1723 igbvf_free_irq(adapter); in igbvf_close()
1725 igbvf_free_tx_resources(adapter->tx_ring); in igbvf_close()
1726 igbvf_free_rx_resources(adapter->rx_ring); in igbvf_close()
1740 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_set_mac() local
1741 struct e1000_hw *hw = &adapter->hw; in igbvf_set_mac()
1762 if (current_counter < adapter->stats.last_##name) \
1763 adapter->stats.name += 0x100000000LL; \
1764 adapter->stats.last_##name = current_counter; \
1765 adapter->stats.name &= 0xFFFFFFFF00000000LL; \
1766 adapter->stats.name |= current_counter; \
1773 void igbvf_update_stats(struct igbvf_adapter *adapter) in igbvf_update_stats() argument
1775 struct e1000_hw *hw = &adapter->hw; in igbvf_update_stats()
1776 struct pci_dev *pdev = adapter->pdev; in igbvf_update_stats()
1781 if (adapter->link_speed == 0) in igbvf_update_stats()
1784 if (test_bit(__IGBVF_RESETTING, &adapter->state)) in igbvf_update_stats()
1801 adapter->net_stats.multicast = adapter->stats.mprc; in igbvf_update_stats()
1804 static void igbvf_print_link_info(struct igbvf_adapter *adapter) in igbvf_print_link_info() argument
1806 dev_info(&adapter->pdev->dev, "Link is Up %d Mbps %s Duplex\n", in igbvf_print_link_info()
1807 adapter->link_speed, in igbvf_print_link_info()
1808 adapter->link_duplex == FULL_DUPLEX ? "Full" : "Half"); in igbvf_print_link_info()
1811 static bool igbvf_has_link(struct igbvf_adapter *adapter) in igbvf_has_link() argument
1813 struct e1000_hw *hw = &adapter->hw; in igbvf_has_link()
1818 if (test_bit(__IGBVF_DOWN, &adapter->state)) in igbvf_has_link()
1825 if (ret_val && time_after(jiffies, adapter->last_reset + (10 * HZ))) in igbvf_has_link()
1826 schedule_work(&adapter->reset_task); in igbvf_has_link()
1837 struct igbvf_adapter *adapter = (struct igbvf_adapter *)data; in igbvf_watchdog() local
1840 schedule_work(&adapter->watchdog_task); in igbvf_watchdog()
1845 struct igbvf_adapter *adapter = container_of(work, in igbvf_watchdog_task() local
1848 struct net_device *netdev = adapter->netdev; in igbvf_watchdog_task()
1849 struct e1000_mac_info *mac = &adapter->hw.mac; in igbvf_watchdog_task()
1850 struct igbvf_ring *tx_ring = adapter->tx_ring; in igbvf_watchdog_task()
1851 struct e1000_hw *hw = &adapter->hw; in igbvf_watchdog_task()
1855 link = igbvf_has_link(adapter); in igbvf_watchdog_task()
1859 mac->ops.get_link_up_info(&adapter->hw, in igbvf_watchdog_task()
1860 &adapter->link_speed, in igbvf_watchdog_task()
1861 &adapter->link_duplex); in igbvf_watchdog_task()
1862 igbvf_print_link_info(adapter); in igbvf_watchdog_task()
1869 adapter->link_speed = 0; in igbvf_watchdog_task()
1870 adapter->link_duplex = 0; in igbvf_watchdog_task()
1871 dev_info(&adapter->pdev->dev, "Link is Down\n"); in igbvf_watchdog_task()
1878 igbvf_update_stats(adapter); in igbvf_watchdog_task()
1888 adapter->tx_timeout_count++; in igbvf_watchdog_task()
1889 schedule_work(&adapter->reset_task); in igbvf_watchdog_task()
1894 ew32(EICS, adapter->rx_ring->eims_value); in igbvf_watchdog_task()
1897 if (!test_bit(__IGBVF_DOWN, &adapter->state)) in igbvf_watchdog_task()
1898 mod_timer(&adapter->watchdog_timer, in igbvf_watchdog_task()
2062 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_maybe_stop_tx() local
2065 if (igbvf_desc_unused(adapter->tx_ring) >= size) in igbvf_maybe_stop_tx()
2077 if (igbvf_desc_unused(adapter->tx_ring) < size) in igbvf_maybe_stop_tx()
2082 ++adapter->restart_queue; in igbvf_maybe_stop_tx()
2089 static inline int igbvf_tx_map_adv(struct igbvf_adapter *adapter, in igbvf_tx_map_adv() argument
2094 struct pci_dev *pdev = adapter->pdev; in igbvf_tx_map_adv()
2155 igbvf_put_txbuf(adapter, buffer_info); in igbvf_tx_map_adv()
2161 static inline void igbvf_tx_queue_adv(struct igbvf_adapter *adapter, in igbvf_tx_queue_adv() argument
2207 tx_desc->read.cmd_type_len |= cpu_to_le32(adapter->txd_cmd); in igbvf_tx_queue_adv()
2217 writel(i, adapter->hw.hw_addr + tx_ring->tail); in igbvf_tx_queue_adv()
2228 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_xmit_frame_ring_adv() local
2235 if (test_bit(__IGBVF_DOWN, &adapter->state)) { in igbvf_xmit_frame_ring_adv()
2282 count = igbvf_tx_map_adv(adapter, tx_ring, skb); in igbvf_xmit_frame_ring_adv()
2285 igbvf_tx_queue_adv(adapter, tx_ring, tx_flags, count, in igbvf_xmit_frame_ring_adv()
2301 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_xmit_frame() local
2304 if (test_bit(__IGBVF_DOWN, &adapter->state)) { in igbvf_xmit_frame()
2309 tx_ring = &adapter->tx_ring[0]; in igbvf_xmit_frame()
2320 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_tx_timeout() local
2323 adapter->tx_timeout_count++; in igbvf_tx_timeout()
2324 schedule_work(&adapter->reset_task); in igbvf_tx_timeout()
2329 struct igbvf_adapter *adapter; in igbvf_reset_task() local
2331 adapter = container_of(work, struct igbvf_adapter, reset_task); in igbvf_reset_task()
2333 igbvf_reinit_locked(adapter); in igbvf_reset_task()
2345 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_get_stats() local
2348 return &adapter->net_stats; in igbvf_get_stats()
2360 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_change_mtu() local
2369 dev_err(&adapter->pdev->dev, "MTU > 9216 not supported.\n"); in igbvf_change_mtu()
2373 while (test_and_set_bit(__IGBVF_RESETTING, &adapter->state)) in igbvf_change_mtu()
2376 adapter->max_frame_size = max_frame; in igbvf_change_mtu()
2378 igbvf_down(adapter); in igbvf_change_mtu()
2389 adapter->rx_buffer_len = 1024; in igbvf_change_mtu()
2391 adapter->rx_buffer_len = 2048; in igbvf_change_mtu()
2394 adapter->rx_buffer_len = 16384; in igbvf_change_mtu()
2396 adapter->rx_buffer_len = PAGE_SIZE / 2; in igbvf_change_mtu()
2402 adapter->rx_buffer_len = ETH_FRAME_LEN + VLAN_HLEN + in igbvf_change_mtu()
2405 dev_info(&adapter->pdev->dev, "changing MTU from %d to %d\n", in igbvf_change_mtu()
2410 igbvf_up(adapter); in igbvf_change_mtu()
2412 igbvf_reset(adapter); in igbvf_change_mtu()
2414 clear_bit(__IGBVF_RESETTING, &adapter->state); in igbvf_change_mtu()
2430 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_suspend() local
2438 WARN_ON(test_bit(__IGBVF_RESETTING, &adapter->state)); in igbvf_suspend()
2439 igbvf_down(adapter); in igbvf_suspend()
2440 igbvf_free_irq(adapter); in igbvf_suspend()
2458 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_resume() local
2471 err = igbvf_request_irq(adapter); in igbvf_resume()
2476 igbvf_reset(adapter); in igbvf_resume()
2479 igbvf_up(adapter); in igbvf_resume()
2499 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_netpoll() local
2501 disable_irq(adapter->pdev->irq); in igbvf_netpoll()
2503 igbvf_clean_tx_irq(adapter->tx_ring); in igbvf_netpoll()
2505 enable_irq(adapter->pdev->irq); in igbvf_netpoll()
2521 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_io_error_detected() local
2529 igbvf_down(adapter); in igbvf_io_error_detected()
2546 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_io_slot_reset() local
2555 igbvf_reset(adapter); in igbvf_io_slot_reset()
2571 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_io_resume() local
2574 if (igbvf_up(adapter)) { in igbvf_io_resume()
2584 static void igbvf_print_device_info(struct igbvf_adapter *adapter) in igbvf_print_device_info() argument
2586 struct e1000_hw *hw = &adapter->hw; in igbvf_print_device_info()
2587 struct net_device *netdev = adapter->netdev; in igbvf_print_device_info()
2588 struct pci_dev *pdev = adapter->pdev; in igbvf_print_device_info()
2600 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_set_features() local
2603 adapter->flags &= ~IGBVF_FLAG_RX_CSUM_DISABLED; in igbvf_set_features()
2605 adapter->flags |= IGBVF_FLAG_RX_CSUM_DISABLED; in igbvf_set_features()
2677 struct igbvf_adapter *adapter; in igbvf_probe() local
2715 adapter = netdev_priv(netdev); in igbvf_probe()
2716 hw = &adapter->hw; in igbvf_probe()
2717 adapter->netdev = netdev; in igbvf_probe()
2718 adapter->pdev = pdev; in igbvf_probe()
2719 adapter->ei = ei; in igbvf_probe()
2720 adapter->pba = ei->pba; in igbvf_probe()
2721 adapter->flags = ei->flags; in igbvf_probe()
2722 adapter->hw.back = adapter; in igbvf_probe()
2723 adapter->hw.mac.type = ei->mac; in igbvf_probe()
2724 adapter->msg_enable = netif_msg_init(debug, DEFAULT_MSG_ENABLE); in igbvf_probe()
2735 adapter->hw.hw_addr = ioremap(pci_resource_start(pdev, 0), in igbvf_probe()
2738 if (!adapter->hw.hw_addr) in igbvf_probe()
2742 err = ei->get_variants(adapter); in igbvf_probe()
2748 err = igbvf_sw_init(adapter); in igbvf_probe()
2759 adapter->bd_number = cards_found++; in igbvf_probe()
2802 else if (is_zero_ether_addr(adapter->hw.mac.addr)) in igbvf_probe()
2805 memcpy(netdev->dev_addr, adapter->hw.mac.addr, in igbvf_probe()
2812 memcpy(adapter->hw.mac.addr, netdev->dev_addr, in igbvf_probe()
2816 setup_timer(&adapter->watchdog_timer, &igbvf_watchdog, in igbvf_probe()
2817 (unsigned long)adapter); in igbvf_probe()
2819 INIT_WORK(&adapter->reset_task, igbvf_reset_task); in igbvf_probe()
2820 INIT_WORK(&adapter->watchdog_task, igbvf_watchdog_task); in igbvf_probe()
2823 adapter->rx_ring->count = 1024; in igbvf_probe()
2824 adapter->tx_ring->count = 1024; in igbvf_probe()
2827 igbvf_reset(adapter); in igbvf_probe()
2830 if (adapter->hw.mac.type == e1000_vfadapt_i350) in igbvf_probe()
2831 adapter->flags |= IGBVF_FLAG_RX_LB_VLAN_BSWAP; in igbvf_probe()
2842 igbvf_print_device_info(adapter); in igbvf_probe()
2844 igbvf_initialize_last_counter_stats(adapter); in igbvf_probe()
2849 kfree(adapter->tx_ring); in igbvf_probe()
2850 kfree(adapter->rx_ring); in igbvf_probe()
2852 igbvf_reset_interrupt_capability(adapter); in igbvf_probe()
2854 iounmap(adapter->hw.hw_addr); in igbvf_probe()
2877 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_remove() local
2878 struct e1000_hw *hw = &adapter->hw; in igbvf_remove()
2883 set_bit(__IGBVF_DOWN, &adapter->state); in igbvf_remove()
2884 del_timer_sync(&adapter->watchdog_timer); in igbvf_remove()
2886 cancel_work_sync(&adapter->reset_task); in igbvf_remove()
2887 cancel_work_sync(&adapter->watchdog_task); in igbvf_remove()
2891 igbvf_reset_interrupt_capability(adapter); in igbvf_remove()
2896 netif_napi_del(&adapter->rx_ring->napi); in igbvf_remove()
2897 kfree(adapter->tx_ring); in igbvf_remove()
2898 kfree(adapter->rx_ring); in igbvf_remove()