Lines Matching full:adapter
76 * @adapter: board private structure
83 static void igbvf_receive_skb(struct igbvf_adapter *adapter, in igbvf_receive_skb() argument
91 if ((adapter->flags & IGBVF_FLAG_RX_LB_VLAN_BSWAP) && in igbvf_receive_skb()
96 if (test_bit(vid, adapter->active_vlans)) in igbvf_receive_skb()
100 napi_gro_receive(&adapter->rx_ring->napi, skb); in igbvf_receive_skb()
103 static inline void igbvf_rx_checksum_adv(struct igbvf_adapter *adapter, in igbvf_rx_checksum_adv() argument
110 (adapter->flags & IGBVF_FLAG_RX_CSUM_DISABLED)) in igbvf_rx_checksum_adv()
117 adapter->hw_csum_err++; in igbvf_rx_checksum_adv()
125 adapter->hw_csum_good++; in igbvf_rx_checksum_adv()
136 struct igbvf_adapter *adapter = rx_ring->adapter; in igbvf_alloc_rx_buffers() local
137 struct net_device *netdev = adapter->netdev; in igbvf_alloc_rx_buffers()
138 struct pci_dev *pdev = adapter->pdev; in igbvf_alloc_rx_buffers()
148 if (adapter->rx_ps_hdr_size) in igbvf_alloc_rx_buffers()
149 bufsz = adapter->rx_ps_hdr_size; in igbvf_alloc_rx_buffers()
151 bufsz = adapter->rx_buffer_len; in igbvf_alloc_rx_buffers()
156 if (adapter->rx_ps_hdr_size && !buffer_info->page_dma) { in igbvf_alloc_rx_buffers()
160 adapter->alloc_rx_buff_failed++; in igbvf_alloc_rx_buffers()
184 adapter->alloc_rx_buff_failed++; in igbvf_alloc_rx_buffers()
202 if (adapter->rx_ps_hdr_size) { in igbvf_alloc_rx_buffers()
231 writel(i, adapter->hw.hw_addr + rx_ring->tail); in igbvf_alloc_rx_buffers()
237 * @adapter: board private structure
244 static bool igbvf_clean_rx_irq(struct igbvf_adapter *adapter, in igbvf_clean_rx_irq() argument
247 struct igbvf_ring *rx_ring = adapter->rx_ring; in igbvf_clean_rx_irq()
248 struct net_device *netdev = adapter->netdev; in igbvf_clean_rx_irq()
249 struct pci_dev *pdev = adapter->pdev; in igbvf_clean_rx_irq()
278 if (hlen > adapter->rx_ps_hdr_size) in igbvf_clean_rx_irq()
279 hlen = adapter->rx_ps_hdr_size; in igbvf_clean_rx_irq()
288 if (!adapter->rx_ps_hdr_size) { in igbvf_clean_rx_irq()
290 adapter->rx_buffer_len, in igbvf_clean_rx_irq()
299 adapter->rx_ps_hdr_size, in igbvf_clean_rx_irq()
316 if ((adapter->rx_buffer_len > (PAGE_SIZE / 2)) || in igbvf_clean_rx_irq()
350 igbvf_rx_checksum_adv(adapter, staterr, skb); in igbvf_clean_rx_irq()
354 igbvf_receive_skb(adapter, netdev, skb, staterr, in igbvf_clean_rx_irq()
379 adapter->total_rx_packets += total_packets; in igbvf_clean_rx_irq()
380 adapter->total_rx_bytes += total_bytes; in igbvf_clean_rx_irq()
386 static void igbvf_put_txbuf(struct igbvf_adapter *adapter, in igbvf_put_txbuf() argument
391 dma_unmap_page(&adapter->pdev->dev, in igbvf_put_txbuf()
396 dma_unmap_single(&adapter->pdev->dev, in igbvf_put_txbuf()
411 * @adapter: board private structure
416 int igbvf_setup_tx_resources(struct igbvf_adapter *adapter, in igbvf_setup_tx_resources() argument
419 struct pci_dev *pdev = adapter->pdev; in igbvf_setup_tx_resources()
436 tx_ring->adapter = adapter; in igbvf_setup_tx_resources()
443 dev_err(&adapter->pdev->dev, in igbvf_setup_tx_resources()
450 * @adapter: board private structure
455 int igbvf_setup_rx_resources(struct igbvf_adapter *adapter, in igbvf_setup_rx_resources() argument
458 struct pci_dev *pdev = adapter->pdev; in igbvf_setup_rx_resources()
480 rx_ring->adapter = adapter; in igbvf_setup_rx_resources()
487 dev_err(&adapter->pdev->dev, in igbvf_setup_rx_resources()
498 struct igbvf_adapter *adapter = tx_ring->adapter; in igbvf_clean_tx_ring() local
509 igbvf_put_txbuf(adapter, buffer_info); in igbvf_clean_tx_ring()
521 writel(0, adapter->hw.hw_addr + tx_ring->head); in igbvf_clean_tx_ring()
522 writel(0, adapter->hw.hw_addr + tx_ring->tail); in igbvf_clean_tx_ring()
533 struct pci_dev *pdev = tx_ring->adapter->pdev; in igbvf_free_tx_resources()
552 struct igbvf_adapter *adapter = rx_ring->adapter; in igbvf_clean_rx_ring() local
554 struct pci_dev *pdev = adapter->pdev; in igbvf_clean_rx_ring()
565 if (adapter->rx_ps_hdr_size) { in igbvf_clean_rx_ring()
567 adapter->rx_ps_hdr_size, in igbvf_clean_rx_ring()
571 adapter->rx_buffer_len, in igbvf_clean_rx_ring()
604 writel(0, adapter->hw.hw_addr + rx_ring->head); in igbvf_clean_rx_ring()
605 writel(0, adapter->hw.hw_addr + rx_ring->tail); in igbvf_clean_rx_ring()
617 struct pci_dev *pdev = rx_ring->adapter->pdev; in igbvf_free_rx_resources()
631 * @adapter: pointer to adapter
632 * @itr_setting: current adapter->itr
643 static enum latency_range igbvf_update_itr(struct igbvf_adapter *adapter, in igbvf_update_itr() argument
713 static void igbvf_set_itr(struct igbvf_adapter *adapter) in igbvf_set_itr() argument
717 adapter->tx_ring->itr_range = in igbvf_set_itr()
718 igbvf_update_itr(adapter, in igbvf_set_itr()
719 adapter->tx_ring->itr_val, in igbvf_set_itr()
720 adapter->total_tx_packets, in igbvf_set_itr()
721 adapter->total_tx_bytes); in igbvf_set_itr()
724 if (adapter->requested_itr == 3 && in igbvf_set_itr()
725 adapter->tx_ring->itr_range == lowest_latency) in igbvf_set_itr()
726 adapter->tx_ring->itr_range = low_latency; in igbvf_set_itr()
728 new_itr = igbvf_range_to_itr(adapter->tx_ring->itr_range); in igbvf_set_itr()
730 if (new_itr != adapter->tx_ring->itr_val) { in igbvf_set_itr()
731 u32 current_itr = adapter->tx_ring->itr_val; in igbvf_set_itr()
739 adapter->tx_ring->itr_val = new_itr; in igbvf_set_itr()
741 adapter->tx_ring->set_itr = 1; in igbvf_set_itr()
744 adapter->rx_ring->itr_range = in igbvf_set_itr()
745 igbvf_update_itr(adapter, adapter->rx_ring->itr_val, in igbvf_set_itr()
746 adapter->total_rx_packets, in igbvf_set_itr()
747 adapter->total_rx_bytes); in igbvf_set_itr()
748 if (adapter->requested_itr == 3 && in igbvf_set_itr()
749 adapter->rx_ring->itr_range == lowest_latency) in igbvf_set_itr()
750 adapter->rx_ring->itr_range = low_latency; in igbvf_set_itr()
752 new_itr = igbvf_range_to_itr(adapter->rx_ring->itr_range); in igbvf_set_itr()
754 if (new_itr != adapter->rx_ring->itr_val) { in igbvf_set_itr()
755 u32 current_itr = adapter->rx_ring->itr_val; in igbvf_set_itr()
760 adapter->rx_ring->itr_val = new_itr; in igbvf_set_itr()
762 adapter->rx_ring->set_itr = 1; in igbvf_set_itr()
774 struct igbvf_adapter *adapter = tx_ring->adapter; in igbvf_clean_tx_irq() local
775 struct net_device *netdev = adapter->netdev; in igbvf_clean_tx_irq()
819 igbvf_put_txbuf(adapter, buffer_info); in igbvf_clean_tx_irq()
841 !(test_bit(__IGBVF_DOWN, &adapter->state))) { in igbvf_clean_tx_irq()
843 ++adapter->restart_queue; in igbvf_clean_tx_irq()
855 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_msix_other() local
856 struct e1000_hw *hw = &adapter->hw; in igbvf_msix_other()
858 adapter->int_counter1++; in igbvf_msix_other()
861 if (!test_bit(__IGBVF_DOWN, &adapter->state)) in igbvf_msix_other()
862 mod_timer(&adapter->watchdog_timer, jiffies + 1); in igbvf_msix_other()
864 ew32(EIMS, adapter->eims_other); in igbvf_msix_other()
872 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_intr_msix_tx() local
873 struct e1000_hw *hw = &adapter->hw; in igbvf_intr_msix_tx()
874 struct igbvf_ring *tx_ring = adapter->tx_ring; in igbvf_intr_msix_tx()
878 adapter->hw.hw_addr + tx_ring->itr_register); in igbvf_intr_msix_tx()
879 adapter->tx_ring->set_itr = 0; in igbvf_intr_msix_tx()
882 adapter->total_tx_bytes = 0; in igbvf_intr_msix_tx()
883 adapter->total_tx_packets = 0; in igbvf_intr_msix_tx()
900 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_intr_msix_rx() local
902 adapter->int_counter0++; in igbvf_intr_msix_rx()
907 if (adapter->rx_ring->set_itr) { in igbvf_intr_msix_rx()
908 writel(adapter->rx_ring->itr_val, in igbvf_intr_msix_rx()
909 adapter->hw.hw_addr + adapter->rx_ring->itr_register); in igbvf_intr_msix_rx()
910 adapter->rx_ring->set_itr = 0; in igbvf_intr_msix_rx()
913 if (napi_schedule_prep(&adapter->rx_ring->napi)) { in igbvf_intr_msix_rx()
914 adapter->total_rx_bytes = 0; in igbvf_intr_msix_rx()
915 adapter->total_rx_packets = 0; in igbvf_intr_msix_rx()
916 __napi_schedule(&adapter->rx_ring->napi); in igbvf_intr_msix_rx()
924 static void igbvf_assign_vector(struct igbvf_adapter *adapter, int rx_queue, in igbvf_assign_vector() argument
927 struct e1000_hw *hw = &adapter->hw; in igbvf_assign_vector()
947 adapter->rx_ring[rx_queue].eims_value = BIT(msix_vector); in igbvf_assign_vector()
962 adapter->tx_ring[tx_queue].eims_value = BIT(msix_vector); in igbvf_assign_vector()
969 * @adapter: board private structure
974 static void igbvf_configure_msix(struct igbvf_adapter *adapter) in igbvf_configure_msix() argument
977 struct e1000_hw *hw = &adapter->hw; in igbvf_configure_msix()
978 struct igbvf_ring *tx_ring = adapter->tx_ring; in igbvf_configure_msix()
979 struct igbvf_ring *rx_ring = adapter->rx_ring; in igbvf_configure_msix()
982 adapter->eims_enable_mask = 0; in igbvf_configure_msix()
984 igbvf_assign_vector(adapter, IGBVF_NO_QUEUE, 0, vector++); in igbvf_configure_msix()
985 adapter->eims_enable_mask |= tx_ring->eims_value; in igbvf_configure_msix()
987 igbvf_assign_vector(adapter, 0, IGBVF_NO_QUEUE, vector++); in igbvf_configure_msix()
988 adapter->eims_enable_mask |= rx_ring->eims_value; in igbvf_configure_msix()
997 adapter->eims_enable_mask = GENMASK(vector - 1, 0); in igbvf_configure_msix()
998 adapter->eims_other = BIT(vector - 1); in igbvf_configure_msix()
1002 static void igbvf_reset_interrupt_capability(struct igbvf_adapter *adapter) in igbvf_reset_interrupt_capability() argument
1004 if (adapter->msix_entries) { in igbvf_reset_interrupt_capability()
1005 pci_disable_msix(adapter->pdev); in igbvf_reset_interrupt_capability()
1006 kfree(adapter->msix_entries); in igbvf_reset_interrupt_capability()
1007 adapter->msix_entries = NULL; in igbvf_reset_interrupt_capability()
1013 * @adapter: board private structure
1018 static void igbvf_set_interrupt_capability(struct igbvf_adapter *adapter) in igbvf_set_interrupt_capability() argument
1024 adapter->msix_entries = kcalloc(3, sizeof(struct msix_entry), in igbvf_set_interrupt_capability()
1026 if (adapter->msix_entries) { in igbvf_set_interrupt_capability()
1028 adapter->msix_entries[i].entry = i; in igbvf_set_interrupt_capability()
1030 err = pci_enable_msix_range(adapter->pdev, in igbvf_set_interrupt_capability()
1031 adapter->msix_entries, 3, 3); in igbvf_set_interrupt_capability()
1036 dev_err(&adapter->pdev->dev, in igbvf_set_interrupt_capability()
1038 igbvf_reset_interrupt_capability(adapter); in igbvf_set_interrupt_capability()
1044 * @adapter: board private structure
1049 static int igbvf_request_msix(struct igbvf_adapter *adapter) in igbvf_request_msix() argument
1051 struct net_device *netdev = adapter->netdev; in igbvf_request_msix()
1055 sprintf(adapter->tx_ring->name, "%s-tx-0", netdev->name); in igbvf_request_msix()
1056 sprintf(adapter->rx_ring->name, "%s-rx-0", netdev->name); in igbvf_request_msix()
1058 memcpy(adapter->tx_ring->name, netdev->name, IFNAMSIZ); in igbvf_request_msix()
1059 memcpy(adapter->rx_ring->name, netdev->name, IFNAMSIZ); in igbvf_request_msix()
1062 err = request_irq(adapter->msix_entries[vector].vector, in igbvf_request_msix()
1063 igbvf_intr_msix_tx, 0, adapter->tx_ring->name, in igbvf_request_msix()
1068 adapter->tx_ring->itr_register = E1000_EITR(vector); in igbvf_request_msix()
1069 adapter->tx_ring->itr_val = adapter->current_itr; in igbvf_request_msix()
1072 err = request_irq(adapter->msix_entries[vector].vector, in igbvf_request_msix()
1073 igbvf_intr_msix_rx, 0, adapter->rx_ring->name, in igbvf_request_msix()
1078 adapter->rx_ring->itr_register = E1000_EITR(vector); in igbvf_request_msix()
1079 adapter->rx_ring->itr_val = adapter->current_itr; in igbvf_request_msix()
1082 err = request_irq(adapter->msix_entries[vector].vector, in igbvf_request_msix()
1087 igbvf_configure_msix(adapter); in igbvf_request_msix()
1090 free_irq(adapter->msix_entries[--vector].vector, netdev); in igbvf_request_msix()
1092 free_irq(adapter->msix_entries[--vector].vector, netdev); in igbvf_request_msix()
1099 * @adapter: board private structure to initialize
1101 static int igbvf_alloc_queues(struct igbvf_adapter *adapter) in igbvf_alloc_queues() argument
1103 struct net_device *netdev = adapter->netdev; in igbvf_alloc_queues()
1105 adapter->tx_ring = kzalloc(sizeof(struct igbvf_ring), GFP_KERNEL); in igbvf_alloc_queues()
1106 if (!adapter->tx_ring) in igbvf_alloc_queues()
1109 adapter->rx_ring = kzalloc(sizeof(struct igbvf_ring), GFP_KERNEL); in igbvf_alloc_queues()
1110 if (!adapter->rx_ring) { in igbvf_alloc_queues()
1111 kfree(adapter->tx_ring); in igbvf_alloc_queues()
1115 netif_napi_add(netdev, &adapter->rx_ring->napi, igbvf_poll); in igbvf_alloc_queues()
1122 * @adapter: board private structure
1127 static int igbvf_request_irq(struct igbvf_adapter *adapter) in igbvf_request_irq() argument
1132 if (adapter->msix_entries) in igbvf_request_irq()
1133 err = igbvf_request_msix(adapter); in igbvf_request_irq()
1138 dev_err(&adapter->pdev->dev, in igbvf_request_irq()
1144 static void igbvf_free_irq(struct igbvf_adapter *adapter) in igbvf_free_irq() argument
1146 struct net_device *netdev = adapter->netdev; in igbvf_free_irq()
1149 if (adapter->msix_entries) { in igbvf_free_irq()
1151 free_irq(adapter->msix_entries[vector].vector, netdev); in igbvf_free_irq()
1157 * @adapter: board private structure
1159 static void igbvf_irq_disable(struct igbvf_adapter *adapter) in igbvf_irq_disable() argument
1161 struct e1000_hw *hw = &adapter->hw; in igbvf_irq_disable()
1165 if (adapter->msix_entries) in igbvf_irq_disable()
1171 * @adapter: board private structure
1173 static void igbvf_irq_enable(struct igbvf_adapter *adapter) in igbvf_irq_enable() argument
1175 struct e1000_hw *hw = &adapter->hw; in igbvf_irq_enable()
1177 ew32(EIAC, adapter->eims_enable_mask); in igbvf_irq_enable()
1178 ew32(EIAM, adapter->eims_enable_mask); in igbvf_irq_enable()
1179 ew32(EIMS, adapter->eims_enable_mask); in igbvf_irq_enable()
1190 struct igbvf_adapter *adapter = rx_ring->adapter; in igbvf_poll() local
1191 struct e1000_hw *hw = &adapter->hw; in igbvf_poll()
1194 igbvf_clean_rx_irq(adapter, &work_done, budget); in igbvf_poll()
1203 if (adapter->requested_itr & 3) in igbvf_poll()
1204 igbvf_set_itr(adapter); in igbvf_poll()
1206 if (!test_bit(__IGBVF_DOWN, &adapter->state)) in igbvf_poll()
1207 ew32(EIMS, adapter->rx_ring->eims_value); in igbvf_poll()
1215 * @adapter: board private structure
1219 static void igbvf_set_rlpml(struct igbvf_adapter *adapter) in igbvf_set_rlpml() argument
1222 struct e1000_hw *hw = &adapter->hw; in igbvf_set_rlpml()
1224 max_frame_size = adapter->max_frame_size + VLAN_TAG_SIZE; in igbvf_set_rlpml()
1236 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_vlan_rx_add_vid() local
1237 struct e1000_hw *hw = &adapter->hw; in igbvf_vlan_rx_add_vid()
1242 dev_warn(&adapter->pdev->dev, "Vlan id %d\n is not added", vid); in igbvf_vlan_rx_add_vid()
1249 set_bit(vid, adapter->active_vlans); in igbvf_vlan_rx_add_vid()
1256 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_vlan_rx_kill_vid() local
1257 struct e1000_hw *hw = &adapter->hw; in igbvf_vlan_rx_kill_vid()
1262 dev_err(&adapter->pdev->dev, in igbvf_vlan_rx_kill_vid()
1270 clear_bit(vid, adapter->active_vlans); in igbvf_vlan_rx_kill_vid()
1274 static void igbvf_restore_vlan(struct igbvf_adapter *adapter) in igbvf_restore_vlan() argument
1278 for_each_set_bit(vid, adapter->active_vlans, VLAN_N_VID) in igbvf_restore_vlan()
1279 igbvf_vlan_rx_add_vid(adapter->netdev, htons(ETH_P_8021Q), vid); in igbvf_restore_vlan()
1284 * @adapter: board private structure
1288 static void igbvf_configure_tx(struct igbvf_adapter *adapter) in igbvf_configure_tx() argument
1290 struct e1000_hw *hw = &adapter->hw; in igbvf_configure_tx()
1291 struct igbvf_ring *tx_ring = adapter->tx_ring; in igbvf_configure_tx()
1324 adapter->txd_cmd = E1000_ADVTXD_DCMD_EOP | E1000_ADVTXD_DCMD_IFCS; in igbvf_configure_tx()
1327 adapter->txd_cmd |= E1000_ADVTXD_DCMD_RS; in igbvf_configure_tx()
1332 * @adapter: Board private structure
1334 static void igbvf_setup_srrctl(struct igbvf_adapter *adapter) in igbvf_setup_srrctl() argument
1336 struct e1000_hw *hw = &adapter->hw; in igbvf_setup_srrctl()
1347 srrctl |= ALIGN(adapter->rx_buffer_len, 1024) >> in igbvf_setup_srrctl()
1350 if (adapter->rx_buffer_len < 2048) { in igbvf_setup_srrctl()
1351 adapter->rx_ps_hdr_size = 0; in igbvf_setup_srrctl()
1354 adapter->rx_ps_hdr_size = 128; in igbvf_setup_srrctl()
1355 srrctl |= adapter->rx_ps_hdr_size << in igbvf_setup_srrctl()
1365 * @adapter: board private structure
1369 static void igbvf_configure_rx(struct igbvf_adapter *adapter) in igbvf_configure_rx() argument
1371 struct e1000_hw *hw = &adapter->hw; in igbvf_configure_rx()
1372 struct igbvf_ring *rx_ring = adapter->rx_ring; in igbvf_configure_rx()
1400 igbvf_set_rlpml(adapter); in igbvf_configure_rx()
1417 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_set_multi() local
1418 struct e1000_hw *hw = &adapter->hw; in igbvf_set_multi()
1452 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_set_uni() local
1453 struct e1000_hw *hw = &adapter->hw; in igbvf_set_uni()
1493 * @adapter: private board structure
1495 static void igbvf_configure(struct igbvf_adapter *adapter) in igbvf_configure() argument
1497 igbvf_set_rx_mode(adapter->netdev); in igbvf_configure()
1499 igbvf_restore_vlan(adapter); in igbvf_configure()
1501 igbvf_configure_tx(adapter); in igbvf_configure()
1502 igbvf_setup_srrctl(adapter); in igbvf_configure()
1503 igbvf_configure_rx(adapter); in igbvf_configure()
1504 igbvf_alloc_rx_buffers(adapter->rx_ring, in igbvf_configure()
1505 igbvf_desc_unused(adapter->rx_ring)); in igbvf_configure()
1509 * @adapter: private board structure
1516 static void igbvf_reset(struct igbvf_adapter *adapter) in igbvf_reset() argument
1518 struct e1000_mac_info *mac = &adapter->hw.mac; in igbvf_reset()
1519 struct net_device *netdev = adapter->netdev; in igbvf_reset()
1520 struct e1000_hw *hw = &adapter->hw; in igbvf_reset()
1526 dev_info(&adapter->pdev->dev, "PF still resetting\n"); in igbvf_reset()
1532 if (is_valid_ether_addr(adapter->hw.mac.addr)) { in igbvf_reset()
1533 eth_hw_addr_set(netdev, adapter->hw.mac.addr); in igbvf_reset()
1534 memcpy(netdev->perm_addr, adapter->hw.mac.addr, in igbvf_reset()
1538 adapter->last_reset = jiffies; in igbvf_reset()
1541 int igbvf_up(struct igbvf_adapter *adapter) in igbvf_up() argument
1543 struct e1000_hw *hw = &adapter->hw; in igbvf_up()
1546 igbvf_configure(adapter); in igbvf_up()
1548 clear_bit(__IGBVF_DOWN, &adapter->state); in igbvf_up()
1550 napi_enable(&adapter->rx_ring->napi); in igbvf_up()
1551 if (adapter->msix_entries) in igbvf_up()
1552 igbvf_configure_msix(adapter); in igbvf_up()
1556 igbvf_irq_enable(adapter); in igbvf_up()
1560 mod_timer(&adapter->watchdog_timer, jiffies + 1); in igbvf_up()
1565 void igbvf_down(struct igbvf_adapter *adapter) in igbvf_down() argument
1567 struct net_device *netdev = adapter->netdev; in igbvf_down()
1568 struct e1000_hw *hw = &adapter->hw; in igbvf_down()
1574 set_bit(__IGBVF_DOWN, &adapter->state); in igbvf_down()
1591 napi_disable(&adapter->rx_ring->napi); in igbvf_down()
1593 igbvf_irq_disable(adapter); in igbvf_down()
1595 timer_delete_sync(&adapter->watchdog_timer); in igbvf_down()
1598 igbvf_update_stats(adapter); in igbvf_down()
1600 adapter->link_speed = 0; in igbvf_down()
1601 adapter->link_duplex = 0; in igbvf_down()
1603 igbvf_reset(adapter); in igbvf_down()
1604 igbvf_clean_tx_ring(adapter->tx_ring); in igbvf_down()
1605 igbvf_clean_rx_ring(adapter->rx_ring); in igbvf_down()
1608 void igbvf_reinit_locked(struct igbvf_adapter *adapter) in igbvf_reinit_locked() argument
1611 while (test_and_set_bit(__IGBVF_RESETTING, &adapter->state)) in igbvf_reinit_locked()
1613 igbvf_down(adapter); in igbvf_reinit_locked()
1614 igbvf_up(adapter); in igbvf_reinit_locked()
1615 clear_bit(__IGBVF_RESETTING, &adapter->state); in igbvf_reinit_locked()
1620 * @adapter: board private structure to initialize
1622 * igbvf_sw_init initializes the Adapter private data structure.
1626 static int igbvf_sw_init(struct igbvf_adapter *adapter) in igbvf_sw_init() argument
1628 struct net_device *netdev = adapter->netdev; in igbvf_sw_init()
1631 adapter->rx_buffer_len = ETH_FRAME_LEN + VLAN_HLEN + ETH_FCS_LEN; in igbvf_sw_init()
1632 adapter->rx_ps_hdr_size = 0; in igbvf_sw_init()
1633 adapter->max_frame_size = netdev->mtu + ETH_HLEN + ETH_FCS_LEN; in igbvf_sw_init()
1634 adapter->min_frame_size = ETH_ZLEN + ETH_FCS_LEN; in igbvf_sw_init()
1636 adapter->tx_int_delay = 8; in igbvf_sw_init()
1637 adapter->tx_abs_int_delay = 32; in igbvf_sw_init()
1638 adapter->rx_int_delay = 0; in igbvf_sw_init()
1639 adapter->rx_abs_int_delay = 8; in igbvf_sw_init()
1640 adapter->requested_itr = 3; in igbvf_sw_init()
1641 adapter->current_itr = IGBVF_START_ITR; in igbvf_sw_init()
1644 adapter->ei->init_ops(&adapter->hw); in igbvf_sw_init()
1646 rc = adapter->hw.mac.ops.init_params(&adapter->hw); in igbvf_sw_init()
1650 rc = adapter->hw.mbx.ops.init_params(&adapter->hw); in igbvf_sw_init()
1654 igbvf_set_interrupt_capability(adapter); in igbvf_sw_init()
1656 if (igbvf_alloc_queues(adapter)) in igbvf_sw_init()
1660 igbvf_irq_disable(adapter); in igbvf_sw_init()
1662 spin_lock_init(&adapter->hw.mbx_lock); in igbvf_sw_init()
1664 set_bit(__IGBVF_DOWN, &adapter->state); in igbvf_sw_init()
1668 static void igbvf_initialize_last_counter_stats(struct igbvf_adapter *adapter) in igbvf_initialize_last_counter_stats() argument
1670 struct e1000_hw *hw = &adapter->hw; in igbvf_initialize_last_counter_stats()
1672 adapter->stats.last_gprc = er32(VFGPRC); in igbvf_initialize_last_counter_stats()
1673 adapter->stats.last_gorc = er32(VFGORC); in igbvf_initialize_last_counter_stats()
1674 adapter->stats.last_gptc = er32(VFGPTC); in igbvf_initialize_last_counter_stats()
1675 adapter->stats.last_gotc = er32(VFGOTC); in igbvf_initialize_last_counter_stats()
1676 adapter->stats.last_mprc = er32(VFMPRC); in igbvf_initialize_last_counter_stats()
1677 adapter->stats.last_gotlbc = er32(VFGOTLBC); in igbvf_initialize_last_counter_stats()
1678 adapter->stats.last_gptlbc = er32(VFGPTLBC); in igbvf_initialize_last_counter_stats()
1679 adapter->stats.last_gorlbc = er32(VFGORLBC); in igbvf_initialize_last_counter_stats()
1680 adapter->stats.last_gprlbc = er32(VFGPRLBC); in igbvf_initialize_last_counter_stats()
1682 adapter->stats.base_gprc = er32(VFGPRC); in igbvf_initialize_last_counter_stats()
1683 adapter->stats.base_gorc = er32(VFGORC); in igbvf_initialize_last_counter_stats()
1684 adapter->stats.base_gptc = er32(VFGPTC); in igbvf_initialize_last_counter_stats()
1685 adapter->stats.base_gotc = er32(VFGOTC); in igbvf_initialize_last_counter_stats()
1686 adapter->stats.base_mprc = er32(VFMPRC); in igbvf_initialize_last_counter_stats()
1687 adapter->stats.base_gotlbc = er32(VFGOTLBC); in igbvf_initialize_last_counter_stats()
1688 adapter->stats.base_gptlbc = er32(VFGPTLBC); in igbvf_initialize_last_counter_stats()
1689 adapter->stats.base_gorlbc = er32(VFGORLBC); in igbvf_initialize_last_counter_stats()
1690 adapter->stats.base_gprlbc = er32(VFGPRLBC); in igbvf_initialize_last_counter_stats()
1707 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_open() local
1708 struct e1000_hw *hw = &adapter->hw; in igbvf_open()
1712 if (test_bit(__IGBVF_TESTING, &adapter->state)) in igbvf_open()
1716 err = igbvf_setup_tx_resources(adapter, adapter->tx_ring); in igbvf_open()
1721 err = igbvf_setup_rx_resources(adapter, adapter->rx_ring); in igbvf_open()
1730 igbvf_configure(adapter); in igbvf_open()
1732 err = igbvf_request_irq(adapter); in igbvf_open()
1737 clear_bit(__IGBVF_DOWN, &adapter->state); in igbvf_open()
1739 napi_enable(&adapter->rx_ring->napi); in igbvf_open()
1744 igbvf_irq_enable(adapter); in igbvf_open()
1748 mod_timer(&adapter->watchdog_timer, jiffies + 1); in igbvf_open()
1753 igbvf_free_rx_resources(adapter->rx_ring); in igbvf_open()
1755 igbvf_free_tx_resources(adapter->tx_ring); in igbvf_open()
1757 igbvf_reset(adapter); in igbvf_open()
1775 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_close() local
1777 WARN_ON(test_bit(__IGBVF_RESETTING, &adapter->state)); in igbvf_close()
1778 igbvf_down(adapter); in igbvf_close()
1780 igbvf_free_irq(adapter); in igbvf_close()
1782 igbvf_free_tx_resources(adapter->tx_ring); in igbvf_close()
1783 igbvf_free_rx_resources(adapter->rx_ring); in igbvf_close()
1797 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_set_mac() local
1798 struct e1000_hw *hw = &adapter->hw; in igbvf_set_mac()
1823 if (current_counter < adapter->stats.last_##name) \
1824 adapter->stats.name += 0x100000000LL; \
1825 adapter->stats.last_##name = current_counter; \
1826 adapter->stats.name &= 0xFFFFFFFF00000000LL; \
1827 adapter->stats.name |= current_counter; \
1832 * @adapter: board private structure
1834 void igbvf_update_stats(struct igbvf_adapter *adapter) in igbvf_update_stats() argument
1836 struct e1000_hw *hw = &adapter->hw; in igbvf_update_stats()
1837 struct pci_dev *pdev = adapter->pdev; in igbvf_update_stats()
1839 /* Prevent stats update while adapter is being reset, link is down in igbvf_update_stats()
1842 if (adapter->link_speed == 0) in igbvf_update_stats()
1845 if (test_bit(__IGBVF_RESETTING, &adapter->state)) in igbvf_update_stats()
1862 adapter->netdev->stats.multicast = adapter->stats.mprc; in igbvf_update_stats()
1865 static void igbvf_print_link_info(struct igbvf_adapter *adapter) in igbvf_print_link_info() argument
1867 dev_info(&adapter->pdev->dev, "Link is Up %d Mbps %s Duplex\n", in igbvf_print_link_info()
1868 adapter->link_speed, in igbvf_print_link_info()
1869 adapter->link_duplex == FULL_DUPLEX ? "Full" : "Half"); in igbvf_print_link_info()
1872 static bool igbvf_has_link(struct igbvf_adapter *adapter) in igbvf_has_link() argument
1874 struct e1000_hw *hw = &adapter->hw; in igbvf_has_link()
1879 if (test_bit(__IGBVF_DOWN, &adapter->state)) in igbvf_has_link()
1891 if (ret_val && time_after(jiffies, adapter->last_reset + (10 * HZ))) in igbvf_has_link()
1892 schedule_work(&adapter->reset_task); in igbvf_has_link()
1903 struct igbvf_adapter *adapter = timer_container_of(adapter, t, in igbvf_watchdog() local
1907 schedule_work(&adapter->watchdog_task); in igbvf_watchdog()
1912 struct igbvf_adapter *adapter = container_of(work, in igbvf_watchdog_task() local
1915 struct net_device *netdev = adapter->netdev; in igbvf_watchdog_task()
1916 struct e1000_mac_info *mac = &adapter->hw.mac; in igbvf_watchdog_task()
1917 struct igbvf_ring *tx_ring = adapter->tx_ring; in igbvf_watchdog_task()
1918 struct e1000_hw *hw = &adapter->hw; in igbvf_watchdog_task()
1922 link = igbvf_has_link(adapter); in igbvf_watchdog_task()
1926 mac->ops.get_link_up_info(&adapter->hw, in igbvf_watchdog_task()
1927 &adapter->link_speed, in igbvf_watchdog_task()
1928 &adapter->link_duplex); in igbvf_watchdog_task()
1929 igbvf_print_link_info(adapter); in igbvf_watchdog_task()
1936 adapter->link_speed = 0; in igbvf_watchdog_task()
1937 adapter->link_duplex = 0; in igbvf_watchdog_task()
1938 dev_info(&adapter->pdev->dev, "Link is Down\n"); in igbvf_watchdog_task()
1945 igbvf_update_stats(adapter); in igbvf_watchdog_task()
1955 adapter->tx_timeout_count++; in igbvf_watchdog_task()
1956 schedule_work(&adapter->reset_task); in igbvf_watchdog_task()
1961 ew32(EICS, adapter->rx_ring->eims_value); in igbvf_watchdog_task()
1964 if (!test_bit(__IGBVF_DOWN, &adapter->state)) in igbvf_watchdog_task()
1965 mod_timer(&adapter->watchdog_timer, in igbvf_watchdog_task()
2118 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_maybe_stop_tx() local
2121 if (igbvf_desc_unused(adapter->tx_ring) >= size) in igbvf_maybe_stop_tx()
2133 if (igbvf_desc_unused(adapter->tx_ring) < size) in igbvf_maybe_stop_tx()
2138 ++adapter->restart_queue; in igbvf_maybe_stop_tx()
2145 static inline int igbvf_tx_map_adv(struct igbvf_adapter *adapter, in igbvf_tx_map_adv() argument
2150 struct pci_dev *pdev = adapter->pdev; in igbvf_tx_map_adv()
2211 igbvf_put_txbuf(adapter, buffer_info); in igbvf_tx_map_adv()
2217 static inline void igbvf_tx_queue_adv(struct igbvf_adapter *adapter, in igbvf_tx_queue_adv() argument
2263 tx_desc->read.cmd_type_len |= cpu_to_le32(adapter->txd_cmd); in igbvf_tx_queue_adv()
2273 writel(i, adapter->hw.hw_addr + tx_ring->tail); in igbvf_tx_queue_adv()
2280 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_xmit_frame_ring_adv() local
2287 if (test_bit(__IGBVF_DOWN, &adapter->state)) { in igbvf_xmit_frame_ring_adv()
2334 count = igbvf_tx_map_adv(adapter, tx_ring, skb); in igbvf_xmit_frame_ring_adv()
2337 igbvf_tx_queue_adv(adapter, tx_ring, tx_flags, count, in igbvf_xmit_frame_ring_adv()
2353 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_xmit_frame() local
2356 if (test_bit(__IGBVF_DOWN, &adapter->state)) { in igbvf_xmit_frame()
2361 tx_ring = &adapter->tx_ring[0]; in igbvf_xmit_frame()
2373 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_tx_timeout() local
2376 adapter->tx_timeout_count++; in igbvf_tx_timeout()
2377 schedule_work(&adapter->reset_task); in igbvf_tx_timeout()
2382 struct igbvf_adapter *adapter; in igbvf_reset_task() local
2384 adapter = container_of(work, struct igbvf_adapter, reset_task); in igbvf_reset_task()
2386 igbvf_reinit_locked(adapter); in igbvf_reset_task()
2398 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_change_mtu() local
2401 while (test_and_set_bit(__IGBVF_RESETTING, &adapter->state)) in igbvf_change_mtu()
2404 adapter->max_frame_size = max_frame; in igbvf_change_mtu()
2406 igbvf_down(adapter); in igbvf_change_mtu()
2417 adapter->rx_buffer_len = 1024; in igbvf_change_mtu()
2419 adapter->rx_buffer_len = 2048; in igbvf_change_mtu()
2422 adapter->rx_buffer_len = 16384; in igbvf_change_mtu()
2424 adapter->rx_buffer_len = PAGE_SIZE / 2; in igbvf_change_mtu()
2430 adapter->rx_buffer_len = ETH_FRAME_LEN + VLAN_HLEN + in igbvf_change_mtu()
2438 igbvf_up(adapter); in igbvf_change_mtu()
2440 igbvf_reset(adapter); in igbvf_change_mtu()
2442 clear_bit(__IGBVF_RESETTING, &adapter->state); in igbvf_change_mtu()
2458 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_suspend() local
2463 WARN_ON(test_bit(__IGBVF_RESETTING, &adapter->state)); in igbvf_suspend()
2464 igbvf_down(adapter); in igbvf_suspend()
2465 igbvf_free_irq(adapter); in igbvf_suspend()
2475 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_resume() local
2481 err = igbvf_request_irq(adapter); in igbvf_resume()
2486 igbvf_reset(adapter); in igbvf_resume()
2489 igbvf_up(adapter); in igbvf_resume()
2508 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_netpoll() local
2510 disable_irq(adapter->pdev->irq); in igbvf_netpoll()
2512 igbvf_clean_tx_irq(adapter->tx_ring); in igbvf_netpoll()
2514 enable_irq(adapter->pdev->irq); in igbvf_netpoll()
2530 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_io_error_detected() local
2538 igbvf_down(adapter); in igbvf_io_error_detected()
2555 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_io_slot_reset() local
2564 igbvf_reset(adapter); in igbvf_io_slot_reset()
2580 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_io_resume() local
2583 if (igbvf_up(adapter)) { in igbvf_io_resume()
2600 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_io_prepare() local
2602 while (test_and_set_bit(__IGBVF_RESETTING, &adapter->state)) in igbvf_io_prepare()
2604 igbvf_down(adapter); in igbvf_io_prepare()
2614 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_io_reset_done() local
2616 igbvf_up(adapter); in igbvf_io_reset_done()
2617 clear_bit(__IGBVF_RESETTING, &adapter->state); in igbvf_io_reset_done()
2620 static void igbvf_print_device_info(struct igbvf_adapter *adapter) in igbvf_print_device_info() argument
2622 struct e1000_hw *hw = &adapter->hw; in igbvf_print_device_info()
2623 struct net_device *netdev = adapter->netdev; in igbvf_print_device_info()
2624 struct pci_dev *pdev = adapter->pdev; in igbvf_print_device_info()
2636 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_set_features() local
2639 adapter->flags &= ~IGBVF_FLAG_RX_CSUM_DISABLED; in igbvf_set_features()
2641 adapter->flags |= IGBVF_FLAG_RX_CSUM_DISABLED; in igbvf_set_features()
2705 * igbvf_probe initializes an adapter identified by a pci_dev structure.
2706 * The OS initialization, configuring of the adapter private structure,
2712 struct igbvf_adapter *adapter; in igbvf_probe() local
2743 adapter = netdev_priv(netdev); in igbvf_probe()
2744 hw = &adapter->hw; in igbvf_probe()
2745 adapter->netdev = netdev; in igbvf_probe()
2746 adapter->pdev = pdev; in igbvf_probe()
2747 adapter->ei = ei; in igbvf_probe()
2748 adapter->pba = ei->pba; in igbvf_probe()
2749 adapter->flags = ei->flags; in igbvf_probe()
2750 adapter->hw.back = adapter; in igbvf_probe()
2751 adapter->hw.mac.type = ei->mac; in igbvf_probe()
2752 adapter->msg_enable = netif_msg_init(debug, DEFAULT_MSG_ENABLE); in igbvf_probe()
2763 adapter->hw.hw_addr = ioremap(pci_resource_start(pdev, 0), in igbvf_probe()
2766 if (!adapter->hw.hw_addr) in igbvf_probe()
2770 err = ei->get_variants(adapter); in igbvf_probe()
2775 /* setup adapter struct */ in igbvf_probe()
2776 err = igbvf_sw_init(adapter); in igbvf_probe()
2787 adapter->bd_number = cards_found++; in igbvf_probe()
2833 else if (is_zero_ether_addr(adapter->hw.mac.addr)) in igbvf_probe()
2836 eth_hw_addr_set(netdev, adapter->hw.mac.addr); in igbvf_probe()
2844 memcpy(adapter->hw.mac.addr, netdev->dev_addr, in igbvf_probe()
2848 timer_setup(&adapter->watchdog_timer, igbvf_watchdog, 0); in igbvf_probe()
2850 INIT_WORK(&adapter->reset_task, igbvf_reset_task); in igbvf_probe()
2851 INIT_WORK(&adapter->watchdog_task, igbvf_watchdog_task); in igbvf_probe()
2854 adapter->rx_ring->count = 1024; in igbvf_probe()
2855 adapter->tx_ring->count = 1024; in igbvf_probe()
2858 igbvf_reset(adapter); in igbvf_probe()
2861 if (adapter->hw.mac.type == e1000_vfadapt_i350) in igbvf_probe()
2862 adapter->flags |= IGBVF_FLAG_RX_LB_VLAN_BSWAP; in igbvf_probe()
2873 igbvf_print_device_info(adapter); in igbvf_probe()
2875 igbvf_initialize_last_counter_stats(adapter); in igbvf_probe()
2880 netif_napi_del(&adapter->rx_ring->napi); in igbvf_probe()
2881 kfree(adapter->tx_ring); in igbvf_probe()
2882 kfree(adapter->rx_ring); in igbvf_probe()
2884 igbvf_reset_interrupt_capability(adapter); in igbvf_probe()
2886 iounmap(adapter->hw.hw_addr); in igbvf_probe()
2909 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_remove() local
2910 struct e1000_hw *hw = &adapter->hw; in igbvf_remove()
2915 set_bit(__IGBVF_DOWN, &adapter->state); in igbvf_remove()
2916 timer_delete_sync(&adapter->watchdog_timer); in igbvf_remove()
2918 cancel_work_sync(&adapter->reset_task); in igbvf_remove()
2919 cancel_work_sync(&adapter->watchdog_task); in igbvf_remove()
2923 igbvf_reset_interrupt_capability(adapter); in igbvf_remove()
2928 netif_napi_del(&adapter->rx_ring->napi); in igbvf_remove()
2929 kfree(adapter->tx_ring); in igbvf_remove()
2930 kfree(adapter->rx_ring); in igbvf_remove()