Lines Matching full:adapter

95  * @adapter: board private structure
100 static void igbvf_receive_skb(struct igbvf_adapter *adapter, in igbvf_receive_skb() argument
107 if (test_bit(vid, adapter->active_vlans)) in igbvf_receive_skb()
113 static inline void igbvf_rx_checksum_adv(struct igbvf_adapter *adapter, in igbvf_rx_checksum_adv() argument
120 (adapter->flags & IGBVF_FLAG_RX_CSUM_DISABLED)) in igbvf_rx_checksum_adv()
127 adapter->hw_csum_err++; in igbvf_rx_checksum_adv()
135 adapter->hw_csum_good++; in igbvf_rx_checksum_adv()
146 struct igbvf_adapter *adapter = rx_ring->adapter; in igbvf_alloc_rx_buffers() local
147 struct net_device *netdev = adapter->netdev; in igbvf_alloc_rx_buffers()
148 struct pci_dev *pdev = adapter->pdev; in igbvf_alloc_rx_buffers()
158 if (adapter->rx_ps_hdr_size) in igbvf_alloc_rx_buffers()
159 bufsz = adapter->rx_ps_hdr_size; in igbvf_alloc_rx_buffers()
161 bufsz = adapter->rx_buffer_len; in igbvf_alloc_rx_buffers()
166 if (adapter->rx_ps_hdr_size && !buffer_info->page_dma) { in igbvf_alloc_rx_buffers()
170 adapter->alloc_rx_buff_failed++; in igbvf_alloc_rx_buffers()
187 adapter->alloc_rx_buff_failed++; in igbvf_alloc_rx_buffers()
198 if (adapter->rx_ps_hdr_size) { in igbvf_alloc_rx_buffers()
227 writel(i, adapter->hw.hw_addr + rx_ring->tail); in igbvf_alloc_rx_buffers()
233 * @adapter: board private structure
238 static bool igbvf_clean_rx_irq(struct igbvf_adapter *adapter, in igbvf_clean_rx_irq() argument
241 struct igbvf_ring *rx_ring = adapter->rx_ring; in igbvf_clean_rx_irq()
242 struct net_device *netdev = adapter->netdev; in igbvf_clean_rx_irq()
243 struct pci_dev *pdev = adapter->pdev; in igbvf_clean_rx_irq()
272 if (hlen > adapter->rx_ps_hdr_size) in igbvf_clean_rx_irq()
273 hlen = adapter->rx_ps_hdr_size; in igbvf_clean_rx_irq()
282 if (!adapter->rx_ps_hdr_size) { in igbvf_clean_rx_irq()
284 adapter->rx_buffer_len, in igbvf_clean_rx_irq()
293 adapter->rx_ps_hdr_size, in igbvf_clean_rx_irq()
309 if ((adapter->rx_buffer_len > (PAGE_SIZE / 2)) || in igbvf_clean_rx_irq()
343 igbvf_rx_checksum_adv(adapter, staterr, skb); in igbvf_clean_rx_irq()
347 igbvf_receive_skb(adapter, netdev, skb, staterr, in igbvf_clean_rx_irq()
372 adapter->total_rx_packets += total_packets; in igbvf_clean_rx_irq()
373 adapter->total_rx_bytes += total_bytes; in igbvf_clean_rx_irq()
374 adapter->net_stats.rx_bytes += total_bytes; in igbvf_clean_rx_irq()
375 adapter->net_stats.rx_packets += total_packets; in igbvf_clean_rx_irq()
379 static void igbvf_put_txbuf(struct igbvf_adapter *adapter, in igbvf_put_txbuf() argument
384 dma_unmap_page(&adapter->pdev->dev, in igbvf_put_txbuf()
389 dma_unmap_single(&adapter->pdev->dev, in igbvf_put_txbuf()
404 * @adapter: board private structure
408 int igbvf_setup_tx_resources(struct igbvf_adapter *adapter, in igbvf_setup_tx_resources() argument
411 struct pci_dev *pdev = adapter->pdev; in igbvf_setup_tx_resources()
429 tx_ring->adapter = adapter; in igbvf_setup_tx_resources()
436 dev_err(&adapter->pdev->dev, in igbvf_setup_tx_resources()
443 * @adapter: board private structure
447 int igbvf_setup_rx_resources(struct igbvf_adapter *adapter, in igbvf_setup_rx_resources() argument
450 struct pci_dev *pdev = adapter->pdev; in igbvf_setup_rx_resources()
473 rx_ring->adapter = adapter; in igbvf_setup_rx_resources()
480 dev_err(&adapter->pdev->dev, in igbvf_setup_rx_resources()
491 struct igbvf_adapter *adapter = tx_ring->adapter; in igbvf_clean_tx_ring() local
502 igbvf_put_txbuf(adapter, buffer_info); in igbvf_clean_tx_ring()
514 writel(0, adapter->hw.hw_addr + tx_ring->head); in igbvf_clean_tx_ring()
515 writel(0, adapter->hw.hw_addr + tx_ring->tail); in igbvf_clean_tx_ring()
526 struct pci_dev *pdev = tx_ring->adapter->pdev; in igbvf_free_tx_resources()
541 * @adapter: board private structure
545 struct igbvf_adapter *adapter = rx_ring->adapter; in igbvf_clean_rx_ring() local
547 struct pci_dev *pdev = adapter->pdev; in igbvf_clean_rx_ring()
558 if (adapter->rx_ps_hdr_size){ in igbvf_clean_rx_ring()
560 adapter->rx_ps_hdr_size, in igbvf_clean_rx_ring()
564 adapter->rx_buffer_len, in igbvf_clean_rx_ring()
597 writel(0, adapter->hw.hw_addr + rx_ring->head); in igbvf_clean_rx_ring()
598 writel(0, adapter->hw.hw_addr + rx_ring->tail); in igbvf_clean_rx_ring()
610 struct pci_dev *pdev = rx_ring->adapter->pdev; in igbvf_free_rx_resources()
624 * @adapter: pointer to adapter
625 * @itr_setting: current adapter->itr
638 static unsigned int igbvf_update_itr(struct igbvf_adapter *adapter, in igbvf_update_itr() argument
684 static void igbvf_set_itr(struct igbvf_adapter *adapter) in igbvf_set_itr() argument
686 struct e1000_hw *hw = &adapter->hw; in igbvf_set_itr()
688 u32 new_itr = adapter->itr; in igbvf_set_itr()
690 adapter->tx_itr = igbvf_update_itr(adapter, adapter->tx_itr, in igbvf_set_itr()
691 adapter->total_tx_packets, in igbvf_set_itr()
692 adapter->total_tx_bytes); in igbvf_set_itr()
694 if (adapter->itr_setting == 3 && adapter->tx_itr == lowest_latency) in igbvf_set_itr()
695 adapter->tx_itr = low_latency; in igbvf_set_itr()
697 adapter->rx_itr = igbvf_update_itr(adapter, adapter->rx_itr, in igbvf_set_itr()
698 adapter->total_rx_packets, in igbvf_set_itr()
699 adapter->total_rx_bytes); in igbvf_set_itr()
701 if (adapter->itr_setting == 3 && adapter->rx_itr == lowest_latency) in igbvf_set_itr()
702 adapter->rx_itr = low_latency; in igbvf_set_itr()
704 current_itr = max(adapter->rx_itr, adapter->tx_itr); in igbvf_set_itr()
721 if (new_itr != adapter->itr) { in igbvf_set_itr()
727 new_itr = new_itr > adapter->itr ? in igbvf_set_itr()
728 min(adapter->itr + (new_itr >> 2), new_itr) : in igbvf_set_itr()
730 adapter->itr = new_itr; in igbvf_set_itr()
731 adapter->rx_ring->itr_val = 1952; in igbvf_set_itr()
733 if (adapter->msix_entries) in igbvf_set_itr()
734 adapter->rx_ring->set_itr = 1; in igbvf_set_itr()
742 * @adapter: board private structure
747 struct igbvf_adapter *adapter = tx_ring->adapter; in igbvf_clean_tx_irq() local
748 struct net_device *netdev = adapter->netdev; in igbvf_clean_tx_irq()
781 igbvf_put_txbuf(adapter, buffer_info); in igbvf_clean_tx_irq()
802 !(test_bit(__IGBVF_DOWN, &adapter->state))) { in igbvf_clean_tx_irq()
804 ++adapter->restart_queue; in igbvf_clean_tx_irq()
808 adapter->net_stats.tx_bytes += total_bytes; in igbvf_clean_tx_irq()
809 adapter->net_stats.tx_packets += total_packets; in igbvf_clean_tx_irq()
816 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_msix_other() local
817 struct e1000_hw *hw = &adapter->hw; in igbvf_msix_other()
819 adapter->int_counter1++; in igbvf_msix_other()
823 if (!test_bit(__IGBVF_DOWN, &adapter->state)) in igbvf_msix_other()
824 mod_timer(&adapter->watchdog_timer, jiffies + 1); in igbvf_msix_other()
826 ew32(EIMS, adapter->eims_other); in igbvf_msix_other()
834 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_intr_msix_tx() local
835 struct e1000_hw *hw = &adapter->hw; in igbvf_intr_msix_tx()
836 struct igbvf_ring *tx_ring = adapter->tx_ring; in igbvf_intr_msix_tx()
839 adapter->total_tx_bytes = 0; in igbvf_intr_msix_tx()
840 adapter->total_tx_packets = 0; in igbvf_intr_msix_tx()
856 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_intr_msix_rx() local
858 adapter->int_counter0++; in igbvf_intr_msix_rx()
863 if (adapter->rx_ring->set_itr) { in igbvf_intr_msix_rx()
864 writel(adapter->rx_ring->itr_val, in igbvf_intr_msix_rx()
865 adapter->hw.hw_addr + adapter->rx_ring->itr_register); in igbvf_intr_msix_rx()
866 adapter->rx_ring->set_itr = 0; in igbvf_intr_msix_rx()
869 if (napi_schedule_prep(&adapter->rx_ring->napi)) { in igbvf_intr_msix_rx()
870 adapter->total_rx_bytes = 0; in igbvf_intr_msix_rx()
871 adapter->total_rx_packets = 0; in igbvf_intr_msix_rx()
872 __napi_schedule(&adapter->rx_ring->napi); in igbvf_intr_msix_rx()
880 static void igbvf_assign_vector(struct igbvf_adapter *adapter, int rx_queue, in igbvf_assign_vector() argument
883 struct e1000_hw *hw = &adapter->hw; in igbvf_assign_vector()
902 adapter->rx_ring[rx_queue].eims_value = 1 << msix_vector; in igbvf_assign_vector()
917 adapter->tx_ring[tx_queue].eims_value = 1 << msix_vector; in igbvf_assign_vector()
928 static void igbvf_configure_msix(struct igbvf_adapter *adapter) in igbvf_configure_msix() argument
931 struct e1000_hw *hw = &adapter->hw; in igbvf_configure_msix()
932 struct igbvf_ring *tx_ring = adapter->tx_ring; in igbvf_configure_msix()
933 struct igbvf_ring *rx_ring = adapter->rx_ring; in igbvf_configure_msix()
936 adapter->eims_enable_mask = 0; in igbvf_configure_msix()
938 igbvf_assign_vector(adapter, IGBVF_NO_QUEUE, 0, vector++); in igbvf_configure_msix()
939 adapter->eims_enable_mask |= tx_ring->eims_value; in igbvf_configure_msix()
946 igbvf_assign_vector(adapter, 0, IGBVF_NO_QUEUE, vector++); in igbvf_configure_msix()
947 adapter->eims_enable_mask |= rx_ring->eims_value; in igbvf_configure_msix()
960 adapter->eims_enable_mask = (1 << (vector)) - 1; in igbvf_configure_msix()
961 adapter->eims_other = 1 << (vector - 1); in igbvf_configure_msix()
965 static void igbvf_reset_interrupt_capability(struct igbvf_adapter *adapter) in igbvf_reset_interrupt_capability() argument
967 if (adapter->msix_entries) { in igbvf_reset_interrupt_capability()
968 pci_disable_msix(adapter->pdev); in igbvf_reset_interrupt_capability()
969 kfree(adapter->msix_entries); in igbvf_reset_interrupt_capability()
970 adapter->msix_entries = NULL; in igbvf_reset_interrupt_capability()
980 static void igbvf_set_interrupt_capability(struct igbvf_adapter *adapter) in igbvf_set_interrupt_capability() argument
986 adapter->msix_entries = kcalloc(3, sizeof(struct msix_entry), in igbvf_set_interrupt_capability()
988 if (adapter->msix_entries) { in igbvf_set_interrupt_capability()
990 adapter->msix_entries[i].entry = i; in igbvf_set_interrupt_capability()
992 err = pci_enable_msix(adapter->pdev, in igbvf_set_interrupt_capability()
993 adapter->msix_entries, 3); in igbvf_set_interrupt_capability()
998 dev_err(&adapter->pdev->dev, in igbvf_set_interrupt_capability()
1000 igbvf_reset_interrupt_capability(adapter); in igbvf_set_interrupt_capability()
1010 static int igbvf_request_msix(struct igbvf_adapter *adapter) in igbvf_request_msix() argument
1012 struct net_device *netdev = adapter->netdev; in igbvf_request_msix()
1016 sprintf(adapter->tx_ring->name, "%s-tx-0", netdev->name); in igbvf_request_msix()
1017 sprintf(adapter->rx_ring->name, "%s-rx-0", netdev->name); in igbvf_request_msix()
1019 memcpy(adapter->tx_ring->name, netdev->name, IFNAMSIZ); in igbvf_request_msix()
1020 memcpy(adapter->rx_ring->name, netdev->name, IFNAMSIZ); in igbvf_request_msix()
1023 err = request_irq(adapter->msix_entries[vector].vector, in igbvf_request_msix()
1024 igbvf_intr_msix_tx, 0, adapter->tx_ring->name, in igbvf_request_msix()
1029 adapter->tx_ring->itr_register = E1000_EITR(vector); in igbvf_request_msix()
1030 adapter->tx_ring->itr_val = 1952; in igbvf_request_msix()
1033 err = request_irq(adapter->msix_entries[vector].vector, in igbvf_request_msix()
1034 igbvf_intr_msix_rx, 0, adapter->rx_ring->name, in igbvf_request_msix()
1039 adapter->rx_ring->itr_register = E1000_EITR(vector); in igbvf_request_msix()
1040 adapter->rx_ring->itr_val = 1952; in igbvf_request_msix()
1043 err = request_irq(adapter->msix_entries[vector].vector, in igbvf_request_msix()
1048 igbvf_configure_msix(adapter); in igbvf_request_msix()
1056 * @adapter: board private structure to initialize
1058 static int __devinit igbvf_alloc_queues(struct igbvf_adapter *adapter) in igbvf_alloc_queues() argument
1060 struct net_device *netdev = adapter->netdev; in igbvf_alloc_queues()
1062 adapter->tx_ring = kzalloc(sizeof(struct igbvf_ring), GFP_KERNEL); in igbvf_alloc_queues()
1063 if (!adapter->tx_ring) in igbvf_alloc_queues()
1066 adapter->rx_ring = kzalloc(sizeof(struct igbvf_ring), GFP_KERNEL); in igbvf_alloc_queues()
1067 if (!adapter->rx_ring) { in igbvf_alloc_queues()
1068 kfree(adapter->tx_ring); in igbvf_alloc_queues()
1072 netif_napi_add(netdev, &adapter->rx_ring->napi, igbvf_poll, 64); in igbvf_alloc_queues()
1083 static int igbvf_request_irq(struct igbvf_adapter *adapter) in igbvf_request_irq() argument
1088 if (adapter->msix_entries) in igbvf_request_irq()
1089 err = igbvf_request_msix(adapter); in igbvf_request_irq()
1094 dev_err(&adapter->pdev->dev, in igbvf_request_irq()
1100 static void igbvf_free_irq(struct igbvf_adapter *adapter) in igbvf_free_irq() argument
1102 struct net_device *netdev = adapter->netdev; in igbvf_free_irq()
1105 if (adapter->msix_entries) { in igbvf_free_irq()
1107 free_irq(adapter->msix_entries[vector].vector, netdev); in igbvf_free_irq()
1114 static void igbvf_irq_disable(struct igbvf_adapter *adapter) in igbvf_irq_disable() argument
1116 struct e1000_hw *hw = &adapter->hw; in igbvf_irq_disable()
1120 if (adapter->msix_entries) in igbvf_irq_disable()
1127 static void igbvf_irq_enable(struct igbvf_adapter *adapter) in igbvf_irq_enable() argument
1129 struct e1000_hw *hw = &adapter->hw; in igbvf_irq_enable()
1131 ew32(EIAC, adapter->eims_enable_mask); in igbvf_irq_enable()
1132 ew32(EIAM, adapter->eims_enable_mask); in igbvf_irq_enable()
1133 ew32(EIMS, adapter->eims_enable_mask); in igbvf_irq_enable()
1144 struct igbvf_adapter *adapter = rx_ring->adapter; in igbvf_poll() local
1145 struct e1000_hw *hw = &adapter->hw; in igbvf_poll()
1148 igbvf_clean_rx_irq(adapter, &work_done, budget); in igbvf_poll()
1154 if (adapter->itr_setting & 3) in igbvf_poll()
1155 igbvf_set_itr(adapter); in igbvf_poll()
1157 if (!test_bit(__IGBVF_DOWN, &adapter->state)) in igbvf_poll()
1158 ew32(EIMS, adapter->rx_ring->eims_value); in igbvf_poll()
1166 * @adapter: board private structure
1170 static void igbvf_set_rlpml(struct igbvf_adapter *adapter) in igbvf_set_rlpml() argument
1173 struct e1000_hw *hw = &adapter->hw; in igbvf_set_rlpml()
1175 max_frame_size = adapter->max_frame_size + VLAN_TAG_SIZE; in igbvf_set_rlpml()
1181 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_vlan_rx_add_vid() local
1182 struct e1000_hw *hw = &adapter->hw; in igbvf_vlan_rx_add_vid()
1185 dev_err(&adapter->pdev->dev, "Failed to add vlan id %d\n", vid); in igbvf_vlan_rx_add_vid()
1188 set_bit(vid, adapter->active_vlans); in igbvf_vlan_rx_add_vid()
1194 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_vlan_rx_kill_vid() local
1195 struct e1000_hw *hw = &adapter->hw; in igbvf_vlan_rx_kill_vid()
1198 dev_err(&adapter->pdev->dev, in igbvf_vlan_rx_kill_vid()
1202 clear_bit(vid, adapter->active_vlans); in igbvf_vlan_rx_kill_vid()
1206 static void igbvf_restore_vlan(struct igbvf_adapter *adapter) in igbvf_restore_vlan() argument
1210 for_each_set_bit(vid, adapter->active_vlans, VLAN_N_VID) in igbvf_restore_vlan()
1211 igbvf_vlan_rx_add_vid(adapter->netdev, vid); in igbvf_restore_vlan()
1216 * @adapter: board private structure
1220 static void igbvf_configure_tx(struct igbvf_adapter *adapter) in igbvf_configure_tx() argument
1222 struct e1000_hw *hw = &adapter->hw; in igbvf_configure_tx()
1223 struct igbvf_ring *tx_ring = adapter->tx_ring; in igbvf_configure_tx()
1256 adapter->txd_cmd = E1000_ADVTXD_DCMD_EOP | E1000_ADVTXD_DCMD_IFCS; in igbvf_configure_tx()
1259 adapter->txd_cmd |= E1000_ADVTXD_DCMD_RS; in igbvf_configure_tx()
1264 * @adapter: Board private structure
1266 static void igbvf_setup_srrctl(struct igbvf_adapter *adapter) in igbvf_setup_srrctl() argument
1268 struct e1000_hw *hw = &adapter->hw; in igbvf_setup_srrctl()
1279 srrctl |= ALIGN(adapter->rx_buffer_len, 1024) >> in igbvf_setup_srrctl()
1282 if (adapter->rx_buffer_len < 2048) { in igbvf_setup_srrctl()
1283 adapter->rx_ps_hdr_size = 0; in igbvf_setup_srrctl()
1286 adapter->rx_ps_hdr_size = 128; in igbvf_setup_srrctl()
1287 srrctl |= adapter->rx_ps_hdr_size << in igbvf_setup_srrctl()
1297 * @adapter: board private structure
1301 static void igbvf_configure_rx(struct igbvf_adapter *adapter) in igbvf_configure_rx() argument
1303 struct e1000_hw *hw = &adapter->hw; in igbvf_configure_rx()
1304 struct igbvf_ring *rx_ring = adapter->rx_ring; in igbvf_configure_rx()
1335 igbvf_set_rlpml(adapter); in igbvf_configure_rx()
1352 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_set_multi() local
1353 struct e1000_hw *hw = &adapter->hw; in igbvf_set_multi()
1361 dev_err(&adapter->pdev->dev, in igbvf_set_multi()
1378 * @adapter: private board structure
1380 static void igbvf_configure(struct igbvf_adapter *adapter) in igbvf_configure() argument
1382 igbvf_set_multi(adapter->netdev); in igbvf_configure()
1384 igbvf_restore_vlan(adapter); in igbvf_configure()
1386 igbvf_configure_tx(adapter); in igbvf_configure()
1387 igbvf_setup_srrctl(adapter); in igbvf_configure()
1388 igbvf_configure_rx(adapter); in igbvf_configure()
1389 igbvf_alloc_rx_buffers(adapter->rx_ring, in igbvf_configure()
1390 igbvf_desc_unused(adapter->rx_ring)); in igbvf_configure()
1400 static void igbvf_reset(struct igbvf_adapter *adapter) in igbvf_reset() argument
1402 struct e1000_mac_info *mac = &adapter->hw.mac; in igbvf_reset()
1403 struct net_device *netdev = adapter->netdev; in igbvf_reset()
1404 struct e1000_hw *hw = &adapter->hw; in igbvf_reset()
1408 dev_err(&adapter->pdev->dev, "PF still resetting\n"); in igbvf_reset()
1412 if (is_valid_ether_addr(adapter->hw.mac.addr)) { in igbvf_reset()
1413 memcpy(netdev->dev_addr, adapter->hw.mac.addr, in igbvf_reset()
1415 memcpy(netdev->perm_addr, adapter->hw.mac.addr, in igbvf_reset()
1419 adapter->last_reset = jiffies; in igbvf_reset()
1422 int igbvf_up(struct igbvf_adapter *adapter) in igbvf_up() argument
1424 struct e1000_hw *hw = &adapter->hw; in igbvf_up()
1427 igbvf_configure(adapter); in igbvf_up()
1429 clear_bit(__IGBVF_DOWN, &adapter->state); in igbvf_up()
1431 napi_enable(&adapter->rx_ring->napi); in igbvf_up()
1432 if (adapter->msix_entries) in igbvf_up()
1433 igbvf_configure_msix(adapter); in igbvf_up()
1437 igbvf_irq_enable(adapter); in igbvf_up()
1441 mod_timer(&adapter->watchdog_timer, jiffies + 1); in igbvf_up()
1447 void igbvf_down(struct igbvf_adapter *adapter) in igbvf_down() argument
1449 struct net_device *netdev = adapter->netdev; in igbvf_down()
1450 struct e1000_hw *hw = &adapter->hw; in igbvf_down()
1457 set_bit(__IGBVF_DOWN, &adapter->state); in igbvf_down()
1473 napi_disable(&adapter->rx_ring->napi); in igbvf_down()
1475 igbvf_irq_disable(adapter); in igbvf_down()
1477 del_timer_sync(&adapter->watchdog_timer); in igbvf_down()
1482 igbvf_update_stats(adapter); in igbvf_down()
1484 adapter->link_speed = 0; in igbvf_down()
1485 adapter->link_duplex = 0; in igbvf_down()
1487 igbvf_reset(adapter); in igbvf_down()
1488 igbvf_clean_tx_ring(adapter->tx_ring); in igbvf_down()
1489 igbvf_clean_rx_ring(adapter->rx_ring); in igbvf_down()
1492 void igbvf_reinit_locked(struct igbvf_adapter *adapter) in igbvf_reinit_locked() argument
1495 while (test_and_set_bit(__IGBVF_RESETTING, &adapter->state)) in igbvf_reinit_locked()
1497 igbvf_down(adapter); in igbvf_reinit_locked()
1498 igbvf_up(adapter); in igbvf_reinit_locked()
1499 clear_bit(__IGBVF_RESETTING, &adapter->state); in igbvf_reinit_locked()
1504 * @adapter: board private structure to initialize
1506 * igbvf_sw_init initializes the Adapter private data structure.
1510 static int __devinit igbvf_sw_init(struct igbvf_adapter *adapter) in igbvf_sw_init() argument
1512 struct net_device *netdev = adapter->netdev; in igbvf_sw_init()
1515 adapter->rx_buffer_len = ETH_FRAME_LEN + VLAN_HLEN + ETH_FCS_LEN; in igbvf_sw_init()
1516 adapter->rx_ps_hdr_size = 0; in igbvf_sw_init()
1517 adapter->max_frame_size = netdev->mtu + ETH_HLEN + ETH_FCS_LEN; in igbvf_sw_init()
1518 adapter->min_frame_size = ETH_ZLEN + ETH_FCS_LEN; in igbvf_sw_init()
1520 adapter->tx_int_delay = 8; in igbvf_sw_init()
1521 adapter->tx_abs_int_delay = 32; in igbvf_sw_init()
1522 adapter->rx_int_delay = 0; in igbvf_sw_init()
1523 adapter->rx_abs_int_delay = 8; in igbvf_sw_init()
1524 adapter->itr_setting = 3; in igbvf_sw_init()
1525 adapter->itr = 20000; in igbvf_sw_init()
1528 adapter->ei->init_ops(&adapter->hw); in igbvf_sw_init()
1530 rc = adapter->hw.mac.ops.init_params(&adapter->hw); in igbvf_sw_init()
1534 rc = adapter->hw.mbx.ops.init_params(&adapter->hw); in igbvf_sw_init()
1538 igbvf_set_interrupt_capability(adapter); in igbvf_sw_init()
1540 if (igbvf_alloc_queues(adapter)) in igbvf_sw_init()
1543 spin_lock_init(&adapter->tx_queue_lock); in igbvf_sw_init()
1546 igbvf_irq_disable(adapter); in igbvf_sw_init()
1548 spin_lock_init(&adapter->stats_lock); in igbvf_sw_init()
1550 set_bit(__IGBVF_DOWN, &adapter->state); in igbvf_sw_init()
1554 static void igbvf_initialize_last_counter_stats(struct igbvf_adapter *adapter) in igbvf_initialize_last_counter_stats() argument
1556 struct e1000_hw *hw = &adapter->hw; in igbvf_initialize_last_counter_stats()
1558 adapter->stats.last_gprc = er32(VFGPRC); in igbvf_initialize_last_counter_stats()
1559 adapter->stats.last_gorc = er32(VFGORC); in igbvf_initialize_last_counter_stats()
1560 adapter->stats.last_gptc = er32(VFGPTC); in igbvf_initialize_last_counter_stats()
1561 adapter->stats.last_gotc = er32(VFGOTC); in igbvf_initialize_last_counter_stats()
1562 adapter->stats.last_mprc = er32(VFMPRC); in igbvf_initialize_last_counter_stats()
1563 adapter->stats.last_gotlbc = er32(VFGOTLBC); in igbvf_initialize_last_counter_stats()
1564 adapter->stats.last_gptlbc = er32(VFGPTLBC); in igbvf_initialize_last_counter_stats()
1565 adapter->stats.last_gorlbc = er32(VFGORLBC); in igbvf_initialize_last_counter_stats()
1566 adapter->stats.last_gprlbc = er32(VFGPRLBC); in igbvf_initialize_last_counter_stats()
1568 adapter->stats.base_gprc = er32(VFGPRC); in igbvf_initialize_last_counter_stats()
1569 adapter->stats.base_gorc = er32(VFGORC); in igbvf_initialize_last_counter_stats()
1570 adapter->stats.base_gptc = er32(VFGPTC); in igbvf_initialize_last_counter_stats()
1571 adapter->stats.base_gotc = er32(VFGOTC); in igbvf_initialize_last_counter_stats()
1572 adapter->stats.base_mprc = er32(VFMPRC); in igbvf_initialize_last_counter_stats()
1573 adapter->stats.base_gotlbc = er32(VFGOTLBC); in igbvf_initialize_last_counter_stats()
1574 adapter->stats.base_gptlbc = er32(VFGPTLBC); in igbvf_initialize_last_counter_stats()
1575 adapter->stats.base_gorlbc = er32(VFGORLBC); in igbvf_initialize_last_counter_stats()
1576 adapter->stats.base_gprlbc = er32(VFGPRLBC); in igbvf_initialize_last_counter_stats()
1593 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_open() local
1594 struct e1000_hw *hw = &adapter->hw; in igbvf_open()
1598 if (test_bit(__IGBVF_TESTING, &adapter->state)) in igbvf_open()
1602 err = igbvf_setup_tx_resources(adapter, adapter->tx_ring); in igbvf_open()
1607 err = igbvf_setup_rx_resources(adapter, adapter->rx_ring); in igbvf_open()
1617 igbvf_configure(adapter); in igbvf_open()
1619 err = igbvf_request_irq(adapter); in igbvf_open()
1624 clear_bit(__IGBVF_DOWN, &adapter->state); in igbvf_open()
1626 napi_enable(&adapter->rx_ring->napi); in igbvf_open()
1631 igbvf_irq_enable(adapter); in igbvf_open()
1635 mod_timer(&adapter->watchdog_timer, jiffies + 1); in igbvf_open()
1640 igbvf_free_rx_resources(adapter->rx_ring); in igbvf_open()
1642 igbvf_free_tx_resources(adapter->tx_ring); in igbvf_open()
1644 igbvf_reset(adapter); in igbvf_open()
1662 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_close() local
1664 WARN_ON(test_bit(__IGBVF_RESETTING, &adapter->state)); in igbvf_close()
1665 igbvf_down(adapter); in igbvf_close()
1667 igbvf_free_irq(adapter); in igbvf_close()
1669 igbvf_free_tx_resources(adapter->tx_ring); in igbvf_close()
1670 igbvf_free_rx_resources(adapter->rx_ring); in igbvf_close()
1683 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_set_mac() local
1684 struct e1000_hw *hw = &adapter->hw; in igbvf_set_mac()
1705 if (current_counter < adapter->stats.last_##name) \
1706 adapter->stats.name += 0x100000000LL; \
1707 adapter->stats.last_##name = current_counter; \
1708 adapter->stats.name &= 0xFFFFFFFF00000000LL; \
1709 adapter->stats.name |= current_counter; \
1714 * @adapter: board private structure
1716 void igbvf_update_stats(struct igbvf_adapter *adapter) in igbvf_update_stats() argument
1718 struct e1000_hw *hw = &adapter->hw; in igbvf_update_stats()
1719 struct pci_dev *pdev = adapter->pdev; in igbvf_update_stats()
1722 * Prevent stats update while adapter is being reset, link is down in igbvf_update_stats()
1725 if (adapter->link_speed == 0) in igbvf_update_stats()
1728 if (test_bit(__IGBVF_RESETTING, &adapter->state)) in igbvf_update_stats()
1745 adapter->net_stats.multicast = adapter->stats.mprc; in igbvf_update_stats()
1748 static void igbvf_print_link_info(struct igbvf_adapter *adapter) in igbvf_print_link_info() argument
1750 dev_info(&adapter->pdev->dev, "Link is Up %d Mbps %s Duplex\n", in igbvf_print_link_info()
1751 adapter->link_speed, in igbvf_print_link_info()
1752 adapter->link_duplex == FULL_DUPLEX ? "Full" : "Half"); in igbvf_print_link_info()
1755 static bool igbvf_has_link(struct igbvf_adapter *adapter) in igbvf_has_link() argument
1757 struct e1000_hw *hw = &adapter->hw; in igbvf_has_link()
1762 if (test_bit(__IGBVF_DOWN, &adapter->state)) in igbvf_has_link()
1769 if (ret_val && time_after(jiffies, adapter->last_reset + (10 * HZ))) in igbvf_has_link()
1770 schedule_work(&adapter->reset_task); in igbvf_has_link()
1777 * @data: pointer to adapter cast into an unsigned long
1781 struct igbvf_adapter *adapter = (struct igbvf_adapter *) data; in igbvf_watchdog() local
1784 schedule_work(&adapter->watchdog_task); in igbvf_watchdog()
1789 struct igbvf_adapter *adapter = container_of(work, in igbvf_watchdog_task() local
1792 struct net_device *netdev = adapter->netdev; in igbvf_watchdog_task()
1793 struct e1000_mac_info *mac = &adapter->hw.mac; in igbvf_watchdog_task()
1794 struct igbvf_ring *tx_ring = adapter->tx_ring; in igbvf_watchdog_task()
1795 struct e1000_hw *hw = &adapter->hw; in igbvf_watchdog_task()
1799 link = igbvf_has_link(adapter); in igbvf_watchdog_task()
1803 mac->ops.get_link_up_info(&adapter->hw, in igbvf_watchdog_task()
1804 &adapter->link_speed, in igbvf_watchdog_task()
1805 &adapter->link_duplex); in igbvf_watchdog_task()
1806 igbvf_print_link_info(adapter); in igbvf_watchdog_task()
1813 adapter->link_speed = 0; in igbvf_watchdog_task()
1814 adapter->link_duplex = 0; in igbvf_watchdog_task()
1815 dev_info(&adapter->pdev->dev, "Link is Down\n"); in igbvf_watchdog_task()
1822 igbvf_update_stats(adapter); in igbvf_watchdog_task()
1833 adapter->tx_timeout_count++; in igbvf_watchdog_task()
1834 schedule_work(&adapter->reset_task); in igbvf_watchdog_task()
1839 ew32(EICS, adapter->rx_ring->eims_value); in igbvf_watchdog_task()
1842 if (!test_bit(__IGBVF_DOWN, &adapter->state)) in igbvf_watchdog_task()
1843 mod_timer(&adapter->watchdog_timer, in igbvf_watchdog_task()
1854 static int igbvf_tso(struct igbvf_adapter *adapter, in igbvf_tso() argument
1869 dev_err(&adapter->pdev->dev, in igbvf_tso()
1934 static inline bool igbvf_tx_csum(struct igbvf_adapter *adapter, in igbvf_tx_csum() argument
1998 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_maybe_stop_tx() local
2001 if (igbvf_desc_unused(adapter->tx_ring) >= size) in igbvf_maybe_stop_tx()
2009 if (igbvf_desc_unused(adapter->tx_ring) < size) in igbvf_maybe_stop_tx()
2014 ++adapter->restart_queue; in igbvf_maybe_stop_tx()
2021 static inline int igbvf_tx_map_adv(struct igbvf_adapter *adapter, in igbvf_tx_map_adv() argument
2027 struct pci_dev *pdev = adapter->pdev; in igbvf_tx_map_adv()
2093 igbvf_put_txbuf(adapter, buffer_info); in igbvf_tx_map_adv()
2099 static inline void igbvf_tx_queue_adv(struct igbvf_adapter *adapter, in igbvf_tx_queue_adv() argument
2144 tx_desc->read.cmd_type_len |= cpu_to_le32(adapter->txd_cmd); in igbvf_tx_queue_adv()
2152 writel(i, adapter->hw.hw_addr + tx_ring->tail); in igbvf_tx_queue_adv()
2162 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_xmit_frame_ring_adv() local
2168 if (test_bit(__IGBVF_DOWN, &adapter->state)) { in igbvf_xmit_frame_ring_adv()
2201 igbvf_tso(adapter, tx_ring, skb, tx_flags, &hdr_len) : 0; in igbvf_xmit_frame_ring_adv()
2209 else if (igbvf_tx_csum(adapter, tx_ring, skb, tx_flags) && in igbvf_xmit_frame_ring_adv()
2217 count = igbvf_tx_map_adv(adapter, tx_ring, skb, first); in igbvf_xmit_frame_ring_adv()
2220 igbvf_tx_queue_adv(adapter, tx_ring, tx_flags, count, in igbvf_xmit_frame_ring_adv()
2236 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_xmit_frame() local
2239 if (test_bit(__IGBVF_DOWN, &adapter->state)) { in igbvf_xmit_frame()
2244 tx_ring = &adapter->tx_ring[0]; in igbvf_xmit_frame()
2255 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_tx_timeout() local
2258 adapter->tx_timeout_count++; in igbvf_tx_timeout()
2259 schedule_work(&adapter->reset_task); in igbvf_tx_timeout()
2264 struct igbvf_adapter *adapter; in igbvf_reset_task() local
2265 adapter = container_of(work, struct igbvf_adapter, reset_task); in igbvf_reset_task()
2267 igbvf_reinit_locked(adapter); in igbvf_reset_task()
2279 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_get_stats() local
2282 return &adapter->net_stats; in igbvf_get_stats()
2294 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_change_mtu() local
2298 dev_err(&adapter->pdev->dev, "Invalid MTU setting\n"); in igbvf_change_mtu()
2304 dev_err(&adapter->pdev->dev, "MTU > 9216 not supported.\n"); in igbvf_change_mtu()
2308 while (test_and_set_bit(__IGBVF_RESETTING, &adapter->state)) in igbvf_change_mtu()
2311 adapter->max_frame_size = max_frame; in igbvf_change_mtu()
2313 igbvf_down(adapter); in igbvf_change_mtu()
2325 adapter->rx_buffer_len = 1024; in igbvf_change_mtu()
2327 adapter->rx_buffer_len = 2048; in igbvf_change_mtu()
2330 adapter->rx_buffer_len = 16384; in igbvf_change_mtu()
2332 adapter->rx_buffer_len = PAGE_SIZE / 2; in igbvf_change_mtu()
2339 adapter->rx_buffer_len = ETH_FRAME_LEN + VLAN_HLEN + in igbvf_change_mtu()
2342 dev_info(&adapter->pdev->dev, "changing MTU from %d to %d\n", in igbvf_change_mtu()
2347 igbvf_up(adapter); in igbvf_change_mtu()
2349 igbvf_reset(adapter); in igbvf_change_mtu()
2351 clear_bit(__IGBVF_RESETTING, &adapter->state); in igbvf_change_mtu()
2367 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_suspend() local
2375 WARN_ON(test_bit(__IGBVF_RESETTING, &adapter->state)); in igbvf_suspend()
2376 igbvf_down(adapter); in igbvf_suspend()
2377 igbvf_free_irq(adapter); in igbvf_suspend()
2395 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_resume() local
2408 err = igbvf_request_irq(adapter); in igbvf_resume()
2413 igbvf_reset(adapter); in igbvf_resume()
2416 igbvf_up(adapter); in igbvf_resume()
2437 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_netpoll() local
2439 disable_irq(adapter->pdev->irq); in igbvf_netpoll()
2441 igbvf_clean_tx_irq(adapter->tx_ring); in igbvf_netpoll()
2443 enable_irq(adapter->pdev->irq); in igbvf_netpoll()
2459 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_io_error_detected() local
2467 igbvf_down(adapter); in igbvf_io_error_detected()
2484 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_io_slot_reset() local
2493 igbvf_reset(adapter); in igbvf_io_slot_reset()
2509 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_io_resume() local
2512 if (igbvf_up(adapter)) { in igbvf_io_resume()
2522 static void igbvf_print_device_info(struct igbvf_adapter *adapter) in igbvf_print_device_info() argument
2524 struct e1000_hw *hw = &adapter->hw; in igbvf_print_device_info()
2525 struct net_device *netdev = adapter->netdev; in igbvf_print_device_info()
2526 struct pci_dev *pdev = adapter->pdev; in igbvf_print_device_info()
2538 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_set_features() local
2541 adapter->flags &= ~IGBVF_FLAG_RX_CSUM_DISABLED; in igbvf_set_features()
2543 adapter->flags |= IGBVF_FLAG_RX_CSUM_DISABLED; in igbvf_set_features()
2573 * igbvf_probe initializes an adapter identified by a pci_dev structure.
2574 * The OS initialization, configuring of the adapter private structure,
2581 struct igbvf_adapter *adapter; in igbvf_probe() local
2625 adapter = netdev_priv(netdev); in igbvf_probe()
2626 hw = &adapter->hw; in igbvf_probe()
2627 adapter->netdev = netdev; in igbvf_probe()
2628 adapter->pdev = pdev; in igbvf_probe()
2629 adapter->ei = ei; in igbvf_probe()
2630 adapter->pba = ei->pba; in igbvf_probe()
2631 adapter->flags = ei->flags; in igbvf_probe()
2632 adapter->hw.back = adapter; in igbvf_probe()
2633 adapter->hw.mac.type = ei->mac; in igbvf_probe()
2634 adapter->msg_enable = (1 << NETIF_MSG_DRV | NETIF_MSG_PROBE) - 1; in igbvf_probe()
2645 adapter->hw.hw_addr = ioremap(pci_resource_start(pdev, 0), in igbvf_probe()
2648 if (!adapter->hw.hw_addr) in igbvf_probe()
2652 err = ei->get_variants(adapter); in igbvf_probe()
2657 /* setup adapter struct */ in igbvf_probe()
2658 err = igbvf_sw_init(adapter); in igbvf_probe()
2669 adapter->bd_number = cards_found++; in igbvf_probe()
2698 dev_hw_addr_random(adapter->netdev, hw->mac.addr); in igbvf_probe()
2707 memcpy(netdev->dev_addr, adapter->hw.mac.addr, netdev->addr_len); in igbvf_probe()
2708 memcpy(netdev->perm_addr, adapter->hw.mac.addr, netdev->addr_len); in igbvf_probe()
2717 setup_timer(&adapter->watchdog_timer, &igbvf_watchdog, in igbvf_probe()
2718 (unsigned long) adapter); in igbvf_probe()
2720 INIT_WORK(&adapter->reset_task, igbvf_reset_task); in igbvf_probe()
2721 INIT_WORK(&adapter->watchdog_task, igbvf_watchdog_task); in igbvf_probe()
2724 adapter->rx_ring->count = 1024; in igbvf_probe()
2725 adapter->tx_ring->count = 1024; in igbvf_probe()
2728 igbvf_reset(adapter); in igbvf_probe()
2739 igbvf_print_device_info(adapter); in igbvf_probe()
2741 igbvf_initialize_last_counter_stats(adapter); in igbvf_probe()
2746 kfree(adapter->tx_ring); in igbvf_probe()
2747 kfree(adapter->rx_ring); in igbvf_probe()
2749 igbvf_reset_interrupt_capability(adapter); in igbvf_probe()
2750 iounmap(adapter->hw.hw_addr); in igbvf_probe()
2773 struct igbvf_adapter *adapter = netdev_priv(netdev); in igbvf_remove() local
2774 struct e1000_hw *hw = &adapter->hw; in igbvf_remove()
2780 set_bit(__IGBVF_DOWN, &adapter->state); in igbvf_remove()
2781 del_timer_sync(&adapter->watchdog_timer); in igbvf_remove()
2783 cancel_work_sync(&adapter->reset_task); in igbvf_remove()
2784 cancel_work_sync(&adapter->watchdog_task); in igbvf_remove()
2788 igbvf_reset_interrupt_capability(adapter); in igbvf_remove()
2794 netif_napi_del(&adapter->rx_ring->napi); in igbvf_remove()
2795 kfree(adapter->tx_ring); in igbvf_remove()
2796 kfree(adapter->rx_ring); in igbvf_remove()