Lines Matching full:adapter
77 static int ixgb_sw_init(struct ixgb_adapter *adapter);
80 static void ixgb_configure_tx(struct ixgb_adapter *adapter);
81 static void ixgb_configure_rx(struct ixgb_adapter *adapter);
82 static void ixgb_setup_rctl(struct ixgb_adapter *adapter);
83 static void ixgb_clean_tx_ring(struct ixgb_adapter *adapter);
84 static void ixgb_clean_rx_ring(struct ixgb_adapter *adapter);
93 static bool ixgb_clean_tx_irq(struct ixgb_adapter *adapter);
102 static void ixgb_vlan_strip_enable(struct ixgb_adapter *adapter);
103 static void ixgb_vlan_strip_disable(struct ixgb_adapter *adapter);
106 static void ixgb_restore_vlan(struct ixgb_adapter *adapter);
177 * @adapter: board private structure
181 ixgb_irq_disable(struct ixgb_adapter *adapter) in ixgb_irq_disable() argument
183 IXGB_WRITE_REG(&adapter->hw, IMC, ~0); in ixgb_irq_disable()
184 IXGB_WRITE_FLUSH(&adapter->hw); in ixgb_irq_disable()
185 synchronize_irq(adapter->pdev->irq); in ixgb_irq_disable()
190 * @adapter: board private structure
194 ixgb_irq_enable(struct ixgb_adapter *adapter) in ixgb_irq_enable() argument
198 if (adapter->hw.subsystem_vendor_id == SUN_SUBVENDOR_ID) in ixgb_irq_enable()
200 IXGB_WRITE_REG(&adapter->hw, IMS, val); in ixgb_irq_enable()
201 IXGB_WRITE_FLUSH(&adapter->hw); in ixgb_irq_enable()
205 ixgb_up(struct ixgb_adapter *adapter) in ixgb_up() argument
207 struct net_device *netdev = adapter->netdev; in ixgb_up()
210 struct ixgb_hw *hw = &adapter->hw; in ixgb_up()
217 ixgb_restore_vlan(adapter); in ixgb_up()
219 ixgb_configure_tx(adapter); in ixgb_up()
220 ixgb_setup_rctl(adapter); in ixgb_up()
221 ixgb_configure_rx(adapter); in ixgb_up()
222 ixgb_alloc_rx_buffers(adapter, IXGB_DESC_UNUSED(&adapter->rx_ring)); in ixgb_up()
225 IXGB_WRITE_REG(&adapter->hw, IMC, 0xffffffff); in ixgb_up()
228 if (IXGB_READ_REG(&adapter->hw, STATUS) & IXGB_STATUS_PCIX_MODE) { in ixgb_up()
229 err = pci_enable_msi(adapter->pdev); in ixgb_up()
231 adapter->have_msi = true; in ixgb_up()
237 err = request_irq(adapter->pdev->irq, ixgb_intr, irq_flags, in ixgb_up()
240 if (adapter->have_msi) in ixgb_up()
241 pci_disable_msi(adapter->pdev); in ixgb_up()
242 netif_err(adapter, probe, adapter->netdev, in ixgb_up()
266 clear_bit(__IXGB_DOWN, &adapter->flags); in ixgb_up()
268 napi_enable(&adapter->napi); in ixgb_up()
269 ixgb_irq_enable(adapter); in ixgb_up()
273 mod_timer(&adapter->watchdog_timer, jiffies); in ixgb_up()
279 ixgb_down(struct ixgb_adapter *adapter, bool kill_watchdog) in ixgb_down() argument
281 struct net_device *netdev = adapter->netdev; in ixgb_down()
284 set_bit(__IXGB_DOWN, &adapter->flags); in ixgb_down()
286 napi_disable(&adapter->napi); in ixgb_down()
288 ixgb_irq_disable(adapter); in ixgb_down()
289 free_irq(adapter->pdev->irq, netdev); in ixgb_down()
291 if (adapter->have_msi) in ixgb_down()
292 pci_disable_msi(adapter->pdev); in ixgb_down()
295 del_timer_sync(&adapter->watchdog_timer); in ixgb_down()
297 adapter->link_speed = 0; in ixgb_down()
298 adapter->link_duplex = 0; in ixgb_down()
302 ixgb_reset(adapter); in ixgb_down()
303 ixgb_clean_tx_ring(adapter); in ixgb_down()
304 ixgb_clean_rx_ring(adapter); in ixgb_down()
308 ixgb_reset(struct ixgb_adapter *adapter) in ixgb_reset() argument
310 struct ixgb_hw *hw = &adapter->hw; in ixgb_reset()
314 netif_err(adapter, probe, adapter->netdev, "ixgb_init_hw failed\n"); in ixgb_reset()
344 struct ixgb_adapter *adapter = netdev_priv(netdev); in ixgb_set_features() local
350 adapter->rx_csum = !!(features & NETIF_F_RXCSUM); in ixgb_set_features()
353 ixgb_down(adapter, true); in ixgb_set_features()
354 ixgb_up(adapter); in ixgb_set_features()
357 ixgb_reset(adapter); in ixgb_set_features()
389 * ixgb_probe initializes an adapter identified by a pci_dev structure.
390 * The OS initialization, configuring of the adapter private structure,
398 struct ixgb_adapter *adapter; in ixgb_probe() local
441 adapter = netdev_priv(netdev); in ixgb_probe()
442 adapter->netdev = netdev; in ixgb_probe()
443 adapter->pdev = pdev; in ixgb_probe()
444 adapter->hw.back = adapter; in ixgb_probe()
445 adapter->msg_enable = netif_msg_init(debug, DEFAULT_DEBUG_LEVEL_SHIFT); in ixgb_probe()
447 adapter->hw.hw_addr = pci_ioremap_bar(pdev, BAR_0); in ixgb_probe()
448 if (!adapter->hw.hw_addr) { in ixgb_probe()
457 adapter->hw.io_base = pci_resource_start(pdev, i); in ixgb_probe()
465 netif_napi_add(netdev, &adapter->napi, ixgb_clean, 64); in ixgb_probe()
469 adapter->bd_number = cards_found; in ixgb_probe()
470 adapter->link_speed = 0; in ixgb_probe()
471 adapter->link_duplex = 0; in ixgb_probe()
475 err = ixgb_sw_init(adapter); in ixgb_probe()
495 if (!ixgb_validate_eeprom_checksum(&adapter->hw)) { in ixgb_probe()
496 netif_err(adapter, probe, adapter->netdev, in ixgb_probe()
502 ixgb_get_ee_mac_addr(&adapter->hw, netdev->dev_addr); in ixgb_probe()
506 netif_err(adapter, probe, adapter->netdev, "Invalid MAC Address\n"); in ixgb_probe()
511 adapter->part_num = ixgb_get_ee_pba_number(&adapter->hw); in ixgb_probe()
513 init_timer(&adapter->watchdog_timer); in ixgb_probe()
514 adapter->watchdog_timer.function = ixgb_watchdog; in ixgb_probe()
515 adapter->watchdog_timer.data = (unsigned long)adapter; in ixgb_probe()
517 INIT_WORK(&adapter->tx_timeout_task, ixgb_tx_timeout_task); in ixgb_probe()
527 netif_info(adapter, probe, adapter->netdev, in ixgb_probe()
529 ixgb_check_options(adapter); in ixgb_probe()
532 ixgb_reset(adapter); in ixgb_probe()
540 iounmap(adapter->hw.hw_addr); in ixgb_probe()
565 struct ixgb_adapter *adapter = netdev_priv(netdev); in ixgb_remove() local
567 cancel_work_sync(&adapter->tx_timeout_task); in ixgb_remove()
571 iounmap(adapter->hw.hw_addr); in ixgb_remove()
580 * @adapter: board private structure to initialize
582 * ixgb_sw_init initializes the Adapter private data structure.
588 ixgb_sw_init(struct ixgb_adapter *adapter) in ixgb_sw_init() argument
590 struct ixgb_hw *hw = &adapter->hw; in ixgb_sw_init()
591 struct net_device *netdev = adapter->netdev; in ixgb_sw_init()
592 struct pci_dev *pdev = adapter->pdev; in ixgb_sw_init()
602 adapter->rx_buffer_len = hw->max_frame_size + 8; /* + 8 for errata */ in ixgb_sw_init()
611 netif_err(adapter, probe, adapter->netdev, "unsupported device id\n"); in ixgb_sw_init()
617 set_bit(__IXGB_DOWN, &adapter->flags); in ixgb_sw_init()
637 struct ixgb_adapter *adapter = netdev_priv(netdev); in ixgb_open() local
641 err = ixgb_setup_tx_resources(adapter); in ixgb_open()
649 err = ixgb_setup_rx_resources(adapter); in ixgb_open()
653 err = ixgb_up(adapter); in ixgb_open()
662 ixgb_free_rx_resources(adapter); in ixgb_open()
664 ixgb_free_tx_resources(adapter); in ixgb_open()
666 ixgb_reset(adapter); in ixgb_open()
686 struct ixgb_adapter *adapter = netdev_priv(netdev); in ixgb_close() local
688 ixgb_down(adapter, true); in ixgb_close()
690 ixgb_free_tx_resources(adapter); in ixgb_close()
691 ixgb_free_rx_resources(adapter); in ixgb_close()
698 * @adapter: board private structure
704 ixgb_setup_tx_resources(struct ixgb_adapter *adapter) in ixgb_setup_tx_resources() argument
706 struct ixgb_desc_ring *txdr = &adapter->tx_ring; in ixgb_setup_tx_resources()
707 struct pci_dev *pdev = adapter->pdev; in ixgb_setup_tx_resources()
713 netif_err(adapter, probe, adapter->netdev, in ixgb_setup_tx_resources()
727 netif_err(adapter, probe, adapter->netdev, in ixgb_setup_tx_resources()
741 * @adapter: board private structure
747 ixgb_configure_tx(struct ixgb_adapter *adapter) in ixgb_configure_tx() argument
749 u64 tdba = adapter->tx_ring.dma; in ixgb_configure_tx()
750 u32 tdlen = adapter->tx_ring.count * sizeof(struct ixgb_tx_desc); in ixgb_configure_tx()
752 struct ixgb_hw *hw = &adapter->hw; in ixgb_configure_tx()
772 IXGB_WRITE_REG(hw, TIDV, adapter->tx_int_delay); in ixgb_configure_tx()
779 /* Setup Transmit Descriptor Settings for this adapter */ in ixgb_configure_tx()
780 adapter->tx_cmd_type = in ixgb_configure_tx()
782 (adapter->tx_int_delay_enable ? IXGB_TX_DESC_CMD_IDE : 0); in ixgb_configure_tx()
787 * @adapter: board private structure
793 ixgb_setup_rx_resources(struct ixgb_adapter *adapter) in ixgb_setup_rx_resources() argument
795 struct ixgb_desc_ring *rxdr = &adapter->rx_ring; in ixgb_setup_rx_resources()
796 struct pci_dev *pdev = adapter->pdev; in ixgb_setup_rx_resources()
802 netif_err(adapter, probe, adapter->netdev, in ixgb_setup_rx_resources()
817 netif_err(adapter, probe, adapter->netdev, in ixgb_setup_rx_resources()
831 * @adapter: Board private structure
835 ixgb_setup_rctl(struct ixgb_adapter *adapter) in ixgb_setup_rctl() argument
839 rctl = IXGB_READ_REG(&adapter->hw, RCTL); in ixgb_setup_rctl()
846 (adapter->hw.mc_filter_type << IXGB_RCTL_MO_SHIFT); in ixgb_setup_rctl()
850 if (adapter->rx_buffer_len <= IXGB_RXBUFFER_2048) in ixgb_setup_rctl()
852 else if (adapter->rx_buffer_len <= IXGB_RXBUFFER_4096) in ixgb_setup_rctl()
854 else if (adapter->rx_buffer_len <= IXGB_RXBUFFER_8192) in ixgb_setup_rctl()
856 else if (adapter->rx_buffer_len <= IXGB_RXBUFFER_16384) in ixgb_setup_rctl()
859 IXGB_WRITE_REG(&adapter->hw, RCTL, rctl); in ixgb_setup_rctl()
864 * @adapter: board private structure
870 ixgb_configure_rx(struct ixgb_adapter *adapter) in ixgb_configure_rx() argument
872 u64 rdba = adapter->rx_ring.dma; in ixgb_configure_rx()
873 u32 rdlen = adapter->rx_ring.count * sizeof(struct ixgb_rx_desc); in ixgb_configure_rx()
874 struct ixgb_hw *hw = &adapter->hw; in ixgb_configure_rx()
885 IXGB_WRITE_REG(hw, RDTR, adapter->rx_int_delay); in ixgb_configure_rx()
906 if (adapter->rx_csum) { in ixgb_configure_rx()
919 * @adapter: board private structure
925 ixgb_free_tx_resources(struct ixgb_adapter *adapter) in ixgb_free_tx_resources() argument
927 struct pci_dev *pdev = adapter->pdev; in ixgb_free_tx_resources()
929 ixgb_clean_tx_ring(adapter); in ixgb_free_tx_resources()
931 vfree(adapter->tx_ring.buffer_info); in ixgb_free_tx_resources()
932 adapter->tx_ring.buffer_info = NULL; in ixgb_free_tx_resources()
934 dma_free_coherent(&pdev->dev, adapter->tx_ring.size, in ixgb_free_tx_resources()
935 adapter->tx_ring.desc, adapter->tx_ring.dma); in ixgb_free_tx_resources()
937 adapter->tx_ring.desc = NULL; in ixgb_free_tx_resources()
941 ixgb_unmap_and_free_tx_resource(struct ixgb_adapter *adapter, in ixgb_unmap_and_free_tx_resource() argument
946 dma_unmap_page(&adapter->pdev->dev, buffer_info->dma, in ixgb_unmap_and_free_tx_resource()
949 dma_unmap_single(&adapter->pdev->dev, buffer_info->dma, in ixgb_unmap_and_free_tx_resource()
966 * @adapter: board private structure
970 ixgb_clean_tx_ring(struct ixgb_adapter *adapter) in ixgb_clean_tx_ring() argument
972 struct ixgb_desc_ring *tx_ring = &adapter->tx_ring; in ixgb_clean_tx_ring()
981 ixgb_unmap_and_free_tx_resource(adapter, buffer_info); in ixgb_clean_tx_ring()
994 IXGB_WRITE_REG(&adapter->hw, TDH, 0); in ixgb_clean_tx_ring()
995 IXGB_WRITE_REG(&adapter->hw, TDT, 0); in ixgb_clean_tx_ring()
1000 * @adapter: board private structure
1006 ixgb_free_rx_resources(struct ixgb_adapter *adapter) in ixgb_free_rx_resources() argument
1008 struct ixgb_desc_ring *rx_ring = &adapter->rx_ring; in ixgb_free_rx_resources()
1009 struct pci_dev *pdev = adapter->pdev; in ixgb_free_rx_resources()
1011 ixgb_clean_rx_ring(adapter); in ixgb_free_rx_resources()
1024 * @adapter: board private structure
1028 ixgb_clean_rx_ring(struct ixgb_adapter *adapter) in ixgb_clean_rx_ring() argument
1030 struct ixgb_desc_ring *rx_ring = &adapter->rx_ring; in ixgb_clean_rx_ring()
1032 struct pci_dev *pdev = adapter->pdev; in ixgb_clean_rx_ring()
1065 IXGB_WRITE_REG(&adapter->hw, RDH, 0); in ixgb_clean_rx_ring()
1066 IXGB_WRITE_REG(&adapter->hw, RDT, 0); in ixgb_clean_rx_ring()
1080 struct ixgb_adapter *adapter = netdev_priv(netdev); in ixgb_set_mac() local
1088 ixgb_rar_set(&adapter->hw, addr->sa_data, 0); in ixgb_set_mac()
1106 struct ixgb_adapter *adapter = netdev_priv(netdev); in ixgb_set_multi() local
1107 struct ixgb_hw *hw = &adapter->hw; in ixgb_set_multi()
1158 ixgb_vlan_strip_enable(adapter); in ixgb_set_multi()
1160 ixgb_vlan_strip_disable(adapter); in ixgb_set_multi()
1172 struct ixgb_adapter *adapter = (struct ixgb_adapter *)data; in ixgb_watchdog() local
1173 struct net_device *netdev = adapter->netdev; in ixgb_watchdog()
1174 struct ixgb_desc_ring *txdr = &adapter->tx_ring; in ixgb_watchdog()
1176 ixgb_check_for_link(&adapter->hw); in ixgb_watchdog()
1178 if (ixgb_check_for_bad_link(&adapter->hw)) { in ixgb_watchdog()
1183 if (adapter->hw.link_up) { in ixgb_watchdog()
1187 (adapter->hw.fc.type == ixgb_fc_full) ? in ixgb_watchdog()
1189 (adapter->hw.fc.type == ixgb_fc_rx_pause) ? in ixgb_watchdog()
1191 (adapter->hw.fc.type == ixgb_fc_tx_pause) ? in ixgb_watchdog()
1193 adapter->link_speed = 10000; in ixgb_watchdog()
1194 adapter->link_duplex = FULL_DUPLEX; in ixgb_watchdog()
1199 adapter->link_speed = 0; in ixgb_watchdog()
1200 adapter->link_duplex = 0; in ixgb_watchdog()
1206 ixgb_update_stats(adapter); in ixgb_watchdog()
1214 schedule_work(&adapter->tx_timeout_task); in ixgb_watchdog()
1221 adapter->detect_tx_hung = true; in ixgb_watchdog()
1224 IXGB_WRITE_REG(&adapter->hw, ICS, IXGB_INT_TXDW); in ixgb_watchdog()
1227 mod_timer(&adapter->watchdog_timer, jiffies + 2 * HZ); in ixgb_watchdog()
1235 ixgb_tso(struct ixgb_adapter *adapter, struct sk_buff *skb) in ixgb_tso() argument
1268 i = adapter->tx_ring.next_to_use; in ixgb_tso()
1269 context_desc = IXGB_CONTEXT_DESC(adapter->tx_ring, i); in ixgb_tso()
1270 buffer_info = &adapter->tx_ring.buffer_info[i]; in ixgb_tso()
1291 if (++i == adapter->tx_ring.count) i = 0; in ixgb_tso()
1292 adapter->tx_ring.next_to_use = i; in ixgb_tso()
1301 ixgb_tx_csum(struct ixgb_adapter *adapter, struct sk_buff *skb) in ixgb_tx_csum() argument
1312 i = adapter->tx_ring.next_to_use; in ixgb_tx_csum()
1313 context_desc = IXGB_CONTEXT_DESC(adapter->tx_ring, i); in ixgb_tx_csum()
1314 buffer_info = &adapter->tx_ring.buffer_info[i]; in ixgb_tx_csum()
1329 if (++i == adapter->tx_ring.count) i = 0; in ixgb_tx_csum()
1330 adapter->tx_ring.next_to_use = i; in ixgb_tx_csum()
1342 ixgb_tx_map(struct ixgb_adapter *adapter, struct sk_buff *skb, in ixgb_tx_map() argument
1345 struct ixgb_desc_ring *tx_ring = &adapter->tx_ring; in ixgb_tx_map()
1346 struct pci_dev *pdev = adapter->pdev; in ixgb_tx_map()
1437 ixgb_unmap_and_free_tx_resource(adapter, buffer_info); in ixgb_tx_map()
1444 ixgb_tx_queue(struct ixgb_adapter *adapter, int count, int vlan_id,int tx_flags) in ixgb_tx_queue() argument
1446 struct ixgb_desc_ring *tx_ring = &adapter->tx_ring; in ixgb_tx_queue()
1449 u32 cmd_type_len = adapter->tx_cmd_type; in ixgb_tx_queue()
1490 IXGB_WRITE_REG(&adapter->hw, TDT, i); in ixgb_tx_queue()
1495 struct ixgb_adapter *adapter = netdev_priv(netdev); in __ixgb_maybe_stop_tx() local
1496 struct ixgb_desc_ring *tx_ring = &adapter->tx_ring; in __ixgb_maybe_stop_tx()
1511 ++adapter->restart_queue; in __ixgb_maybe_stop_tx()
1534 struct ixgb_adapter *adapter = netdev_priv(netdev); in ixgb_xmit_frame() local
1541 if (test_bit(__IXGB_DOWN, &adapter->flags)) { in ixgb_xmit_frame()
1551 if (unlikely(ixgb_maybe_stop_tx(netdev, &adapter->tx_ring, in ixgb_xmit_frame()
1560 first = adapter->tx_ring.next_to_use; in ixgb_xmit_frame()
1562 tso = ixgb_tso(adapter, skb); in ixgb_xmit_frame()
1570 else if (ixgb_tx_csum(adapter, skb)) in ixgb_xmit_frame()
1573 count = ixgb_tx_map(adapter, skb, first); in ixgb_xmit_frame()
1576 ixgb_tx_queue(adapter, count, vlan_id, tx_flags); in ixgb_xmit_frame()
1578 ixgb_maybe_stop_tx(netdev, &adapter->tx_ring, DESC_NEEDED); in ixgb_xmit_frame()
1582 adapter->tx_ring.buffer_info[first].time_stamp = 0; in ixgb_xmit_frame()
1583 adapter->tx_ring.next_to_use = first; in ixgb_xmit_frame()
1597 struct ixgb_adapter *adapter = netdev_priv(netdev); in ixgb_tx_timeout() local
1600 schedule_work(&adapter->tx_timeout_task); in ixgb_tx_timeout()
1606 struct ixgb_adapter *adapter = in ixgb_tx_timeout_task() local
1609 adapter->tx_timeout_count++; in ixgb_tx_timeout_task()
1610 ixgb_down(adapter, true); in ixgb_tx_timeout_task()
1611 ixgb_up(adapter); in ixgb_tx_timeout_task()
1639 struct ixgb_adapter *adapter = netdev_priv(netdev); in ixgb_change_mtu() local
1646 netif_err(adapter, probe, adapter->netdev, in ixgb_change_mtu()
1655 ixgb_down(adapter, true); in ixgb_change_mtu()
1657 adapter->rx_buffer_len = max_frame + 8; /* + 8 for errata */ in ixgb_change_mtu()
1662 ixgb_up(adapter); in ixgb_change_mtu()
1669 * @adapter: board private structure
1673 ixgb_update_stats(struct ixgb_adapter *adapter) in ixgb_update_stats() argument
1675 struct net_device *netdev = adapter->netdev; in ixgb_update_stats()
1676 struct pci_dev *pdev = adapter->pdev; in ixgb_update_stats()
1678 /* Prevent stats update while adapter is being reset */ in ixgb_update_stats()
1684 u64 multi = IXGB_READ_REG(&adapter->hw, MPRCL); in ixgb_update_stats()
1685 u32 bcast_l = IXGB_READ_REG(&adapter->hw, BPRCL); in ixgb_update_stats()
1686 u32 bcast_h = IXGB_READ_REG(&adapter->hw, BPRCH); in ixgb_update_stats()
1689 multi |= ((u64)IXGB_READ_REG(&adapter->hw, MPRCH) << 32); in ixgb_update_stats()
1694 adapter->stats.mprcl += (multi & 0xFFFFFFFF); in ixgb_update_stats()
1695 adapter->stats.mprch += (multi >> 32); in ixgb_update_stats()
1696 adapter->stats.bprcl += bcast_l; in ixgb_update_stats()
1697 adapter->stats.bprch += bcast_h; in ixgb_update_stats()
1699 adapter->stats.mprcl += IXGB_READ_REG(&adapter->hw, MPRCL); in ixgb_update_stats()
1700 adapter->stats.mprch += IXGB_READ_REG(&adapter->hw, MPRCH); in ixgb_update_stats()
1701 adapter->stats.bprcl += IXGB_READ_REG(&adapter->hw, BPRCL); in ixgb_update_stats()
1702 adapter->stats.bprch += IXGB_READ_REG(&adapter->hw, BPRCH); in ixgb_update_stats()
1704 adapter->stats.tprl += IXGB_READ_REG(&adapter->hw, TPRL); in ixgb_update_stats()
1705 adapter->stats.tprh += IXGB_READ_REG(&adapter->hw, TPRH); in ixgb_update_stats()
1706 adapter->stats.gprcl += IXGB_READ_REG(&adapter->hw, GPRCL); in ixgb_update_stats()
1707 adapter->stats.gprch += IXGB_READ_REG(&adapter->hw, GPRCH); in ixgb_update_stats()
1708 adapter->stats.uprcl += IXGB_READ_REG(&adapter->hw, UPRCL); in ixgb_update_stats()
1709 adapter->stats.uprch += IXGB_READ_REG(&adapter->hw, UPRCH); in ixgb_update_stats()
1710 adapter->stats.vprcl += IXGB_READ_REG(&adapter->hw, VPRCL); in ixgb_update_stats()
1711 adapter->stats.vprch += IXGB_READ_REG(&adapter->hw, VPRCH); in ixgb_update_stats()
1712 adapter->stats.jprcl += IXGB_READ_REG(&adapter->hw, JPRCL); in ixgb_update_stats()
1713 adapter->stats.jprch += IXGB_READ_REG(&adapter->hw, JPRCH); in ixgb_update_stats()
1714 adapter->stats.gorcl += IXGB_READ_REG(&adapter->hw, GORCL); in ixgb_update_stats()
1715 adapter->stats.gorch += IXGB_READ_REG(&adapter->hw, GORCH); in ixgb_update_stats()
1716 adapter->stats.torl += IXGB_READ_REG(&adapter->hw, TORL); in ixgb_update_stats()
1717 adapter->stats.torh += IXGB_READ_REG(&adapter->hw, TORH); in ixgb_update_stats()
1718 adapter->stats.rnbc += IXGB_READ_REG(&adapter->hw, RNBC); in ixgb_update_stats()
1719 adapter->stats.ruc += IXGB_READ_REG(&adapter->hw, RUC); in ixgb_update_stats()
1720 adapter->stats.roc += IXGB_READ_REG(&adapter->hw, ROC); in ixgb_update_stats()
1721 adapter->stats.rlec += IXGB_READ_REG(&adapter->hw, RLEC); in ixgb_update_stats()
1722 adapter->stats.crcerrs += IXGB_READ_REG(&adapter->hw, CRCERRS); in ixgb_update_stats()
1723 adapter->stats.icbc += IXGB_READ_REG(&adapter->hw, ICBC); in ixgb_update_stats()
1724 adapter->stats.ecbc += IXGB_READ_REG(&adapter->hw, ECBC); in ixgb_update_stats()
1725 adapter->stats.mpc += IXGB_READ_REG(&adapter->hw, MPC); in ixgb_update_stats()
1726 adapter->stats.tptl += IXGB_READ_REG(&adapter->hw, TPTL); in ixgb_update_stats()
1727 adapter->stats.tpth += IXGB_READ_REG(&adapter->hw, TPTH); in ixgb_update_stats()
1728 adapter->stats.gptcl += IXGB_READ_REG(&adapter->hw, GPTCL); in ixgb_update_stats()
1729 adapter->stats.gptch += IXGB_READ_REG(&adapter->hw, GPTCH); in ixgb_update_stats()
1730 adapter->stats.bptcl += IXGB_READ_REG(&adapter->hw, BPTCL); in ixgb_update_stats()
1731 adapter->stats.bptch += IXGB_READ_REG(&adapter->hw, BPTCH); in ixgb_update_stats()
1732 adapter->stats.mptcl += IXGB_READ_REG(&adapter->hw, MPTCL); in ixgb_update_stats()
1733 adapter->stats.mptch += IXGB_READ_REG(&adapter->hw, MPTCH); in ixgb_update_stats()
1734 adapter->stats.uptcl += IXGB_READ_REG(&adapter->hw, UPTCL); in ixgb_update_stats()
1735 adapter->stats.uptch += IXGB_READ_REG(&adapter->hw, UPTCH); in ixgb_update_stats()
1736 adapter->stats.vptcl += IXGB_READ_REG(&adapter->hw, VPTCL); in ixgb_update_stats()
1737 adapter->stats.vptch += IXGB_READ_REG(&adapter->hw, VPTCH); in ixgb_update_stats()
1738 adapter->stats.jptcl += IXGB_READ_REG(&adapter->hw, JPTCL); in ixgb_update_stats()
1739 adapter->stats.jptch += IXGB_READ_REG(&adapter->hw, JPTCH); in ixgb_update_stats()
1740 adapter->stats.gotcl += IXGB_READ_REG(&adapter->hw, GOTCL); in ixgb_update_stats()
1741 adapter->stats.gotch += IXGB_READ_REG(&adapter->hw, GOTCH); in ixgb_update_stats()
1742 adapter->stats.totl += IXGB_READ_REG(&adapter->hw, TOTL); in ixgb_update_stats()
1743 adapter->stats.toth += IXGB_READ_REG(&adapter->hw, TOTH); in ixgb_update_stats()
1744 adapter->stats.dc += IXGB_READ_REG(&adapter->hw, DC); in ixgb_update_stats()
1745 adapter->stats.plt64c += IXGB_READ_REG(&adapter->hw, PLT64C); in ixgb_update_stats()
1746 adapter->stats.tsctc += IXGB_READ_REG(&adapter->hw, TSCTC); in ixgb_update_stats()
1747 adapter->stats.tsctfc += IXGB_READ_REG(&adapter->hw, TSCTFC); in ixgb_update_stats()
1748 adapter->stats.ibic += IXGB_READ_REG(&adapter->hw, IBIC); in ixgb_update_stats()
1749 adapter->stats.rfc += IXGB_READ_REG(&adapter->hw, RFC); in ixgb_update_stats()
1750 adapter->stats.lfc += IXGB_READ_REG(&adapter->hw, LFC); in ixgb_update_stats()
1751 adapter->stats.pfrc += IXGB_READ_REG(&adapter->hw, PFRC); in ixgb_update_stats()
1752 adapter->stats.pftc += IXGB_READ_REG(&adapter->hw, PFTC); in ixgb_update_stats()
1753 adapter->stats.mcfrc += IXGB_READ_REG(&adapter->hw, MCFRC); in ixgb_update_stats()
1754 adapter->stats.mcftc += IXGB_READ_REG(&adapter->hw, MCFTC); in ixgb_update_stats()
1755 adapter->stats.xonrxc += IXGB_READ_REG(&adapter->hw, XONRXC); in ixgb_update_stats()
1756 adapter->stats.xontxc += IXGB_READ_REG(&adapter->hw, XONTXC); in ixgb_update_stats()
1757 adapter->stats.xoffrxc += IXGB_READ_REG(&adapter->hw, XOFFRXC); in ixgb_update_stats()
1758 adapter->stats.xofftxc += IXGB_READ_REG(&adapter->hw, XOFFTXC); in ixgb_update_stats()
1759 adapter->stats.rjc += IXGB_READ_REG(&adapter->hw, RJC); in ixgb_update_stats()
1763 netdev->stats.rx_packets = adapter->stats.gprcl; in ixgb_update_stats()
1764 netdev->stats.tx_packets = adapter->stats.gptcl; in ixgb_update_stats()
1765 netdev->stats.rx_bytes = adapter->stats.gorcl; in ixgb_update_stats()
1766 netdev->stats.tx_bytes = adapter->stats.gotcl; in ixgb_update_stats()
1767 netdev->stats.multicast = adapter->stats.mprcl; in ixgb_update_stats()
1773 /* adapter->stats.rnbc + */ adapter->stats.crcerrs + in ixgb_update_stats()
1774 adapter->stats.ruc + in ixgb_update_stats()
1775 adapter->stats.roc /*+ adapter->stats.rlec */ + in ixgb_update_stats()
1776 adapter->stats.icbc + in ixgb_update_stats()
1777 adapter->stats.ecbc + adapter->stats.mpc; in ixgb_update_stats()
1780 * netdev->stats.rx_length_errors = adapter->stats.rlec; in ixgb_update_stats()
1783 netdev->stats.rx_crc_errors = adapter->stats.crcerrs; in ixgb_update_stats()
1784 netdev->stats.rx_fifo_errors = adapter->stats.mpc; in ixgb_update_stats()
1785 netdev->stats.rx_missed_errors = adapter->stats.mpc; in ixgb_update_stats()
1786 netdev->stats.rx_over_errors = adapter->stats.mpc; in ixgb_update_stats()
1808 struct ixgb_adapter *adapter = netdev_priv(netdev); in ixgb_intr() local
1809 struct ixgb_hw *hw = &adapter->hw; in ixgb_intr()
1816 if (!test_bit(__IXGB_DOWN, &adapter->flags)) in ixgb_intr()
1817 mod_timer(&adapter->watchdog_timer, jiffies); in ixgb_intr()
1819 if (napi_schedule_prep(&adapter->napi)) { in ixgb_intr()
1825 IXGB_WRITE_REG(&adapter->hw, IMC, ~0); in ixgb_intr()
1826 __napi_schedule(&adapter->napi); in ixgb_intr()
1833 * @adapter: board private structure
1839 struct ixgb_adapter *adapter = container_of(napi, struct ixgb_adapter, napi); in ixgb_clean() local
1842 ixgb_clean_tx_irq(adapter); in ixgb_clean()
1843 ixgb_clean_rx_irq(adapter, &work_done, budget); in ixgb_clean()
1848 if (!test_bit(__IXGB_DOWN, &adapter->flags)) in ixgb_clean()
1849 ixgb_irq_enable(adapter); in ixgb_clean()
1857 * @adapter: board private structure
1861 ixgb_clean_tx_irq(struct ixgb_adapter *adapter) in ixgb_clean_tx_irq() argument
1863 struct ixgb_desc_ring *tx_ring = &adapter->tx_ring; in ixgb_clean_tx_irq()
1864 struct net_device *netdev = adapter->netdev; in ixgb_clean_tx_irq()
1884 adapter->hw_csum_tx_good++; in ixgb_clean_tx_irq()
1886 ixgb_unmap_and_free_tx_resource(adapter, buffer_info); in ixgb_clean_tx_irq()
1907 !(test_bit(__IXGB_DOWN, &adapter->flags))) { in ixgb_clean_tx_irq()
1909 ++adapter->restart_queue; in ixgb_clean_tx_irq()
1913 if (adapter->detect_tx_hung) { in ixgb_clean_tx_irq()
1916 adapter->detect_tx_hung = false; in ixgb_clean_tx_irq()
1919 && !(IXGB_READ_REG(&adapter->hw, STATUS) & in ixgb_clean_tx_irq()
1922 netif_err(adapter, drv, adapter->netdev, in ixgb_clean_tx_irq()
1933 IXGB_READ_REG(&adapter->hw, TDH), in ixgb_clean_tx_irq()
1934 IXGB_READ_REG(&adapter->hw, TDT), in ixgb_clean_tx_irq()
1950 * @adapter: board private structure
1956 ixgb_rx_checksum(struct ixgb_adapter *adapter, in ixgb_rx_checksum() argument
1974 adapter->hw_csum_rx_error++; in ixgb_rx_checksum()
1978 adapter->hw_csum_rx_good++; in ixgb_rx_checksum()
2009 * @adapter: board private structure
2013 ixgb_clean_rx_irq(struct ixgb_adapter *adapter, int *work_done, int work_to_do) in ixgb_clean_rx_irq() argument
2015 struct ixgb_desc_ring *rx_ring = &adapter->rx_ring; in ixgb_clean_rx_irq()
2016 struct net_device *netdev = adapter->netdev; in ixgb_clean_rx_irq()
2017 struct pci_dev *pdev = adapter->pdev; in ixgb_clean_rx_irq()
2093 ixgb_rx_checksum(adapter, rx_desc, skb); in ixgb_clean_rx_irq()
2108 ixgb_alloc_rx_buffers(adapter, cleaned_count); in ixgb_clean_rx_irq()
2121 ixgb_alloc_rx_buffers(adapter, cleaned_count); in ixgb_clean_rx_irq()
2128 * @adapter: address of board private structure
2132 ixgb_alloc_rx_buffers(struct ixgb_adapter *adapter, int cleaned_count) in ixgb_alloc_rx_buffers() argument
2134 struct ixgb_desc_ring *rx_ring = &adapter->rx_ring; in ixgb_alloc_rx_buffers()
2135 struct net_device *netdev = adapter->netdev; in ixgb_alloc_rx_buffers()
2136 struct pci_dev *pdev = adapter->pdev; in ixgb_alloc_rx_buffers()
2157 skb = netdev_alloc_skb_ip_align(netdev, adapter->rx_buffer_len); in ixgb_alloc_rx_buffers()
2160 adapter->alloc_rx_buff_failed++; in ixgb_alloc_rx_buffers()
2165 buffer_info->length = adapter->rx_buffer_len; in ixgb_alloc_rx_buffers()
2169 adapter->rx_buffer_len, in ixgb_alloc_rx_buffers()
2194 IXGB_WRITE_REG(&adapter->hw, RDT, i); in ixgb_alloc_rx_buffers()
2199 ixgb_vlan_strip_enable(struct ixgb_adapter *adapter) in ixgb_vlan_strip_enable() argument
2204 ctrl = IXGB_READ_REG(&adapter->hw, CTRL0); in ixgb_vlan_strip_enable()
2206 IXGB_WRITE_REG(&adapter->hw, CTRL0, ctrl); in ixgb_vlan_strip_enable()
2210 ixgb_vlan_strip_disable(struct ixgb_adapter *adapter) in ixgb_vlan_strip_disable() argument
2215 ctrl = IXGB_READ_REG(&adapter->hw, CTRL0); in ixgb_vlan_strip_disable()
2217 IXGB_WRITE_REG(&adapter->hw, CTRL0, ctrl); in ixgb_vlan_strip_disable()
2223 struct ixgb_adapter *adapter = netdev_priv(netdev); in ixgb_vlan_rx_add_vid() local
2229 vfta = IXGB_READ_REG_ARRAY(&adapter->hw, VFTA, index); in ixgb_vlan_rx_add_vid()
2231 ixgb_write_vfta(&adapter->hw, index, vfta); in ixgb_vlan_rx_add_vid()
2232 set_bit(vid, adapter->active_vlans); in ixgb_vlan_rx_add_vid()
2240 struct ixgb_adapter *adapter = netdev_priv(netdev); in ixgb_vlan_rx_kill_vid() local
2246 vfta = IXGB_READ_REG_ARRAY(&adapter->hw, VFTA, index); in ixgb_vlan_rx_kill_vid()
2248 ixgb_write_vfta(&adapter->hw, index, vfta); in ixgb_vlan_rx_kill_vid()
2249 clear_bit(vid, adapter->active_vlans); in ixgb_vlan_rx_kill_vid()
2255 ixgb_restore_vlan(struct ixgb_adapter *adapter) in ixgb_restore_vlan() argument
2259 for_each_set_bit(vid, adapter->active_vlans, VLAN_N_VID) in ixgb_restore_vlan()
2260 ixgb_vlan_rx_add_vid(adapter->netdev, vid); in ixgb_restore_vlan()
2272 struct ixgb_adapter *adapter = netdev_priv(dev); in ixgb_netpoll() local
2274 disable_irq(adapter->pdev->irq); in ixgb_netpoll()
2275 ixgb_intr(adapter->pdev->irq, dev); in ixgb_netpoll()
2276 enable_irq(adapter->pdev->irq); in ixgb_netpoll()
2292 struct ixgb_adapter *adapter = netdev_priv(netdev); in ixgb_io_error_detected() local
2300 ixgb_down(adapter, true); in ixgb_io_error_detected()
2320 struct ixgb_adapter *adapter = netdev_priv(netdev); in ixgb_io_slot_reset() local
2323 netif_err(adapter, probe, adapter->netdev, in ixgb_io_slot_reset()
2336 ixgb_reset(adapter); in ixgb_io_slot_reset()
2339 if (!ixgb_validate_eeprom_checksum(&adapter->hw)) { in ixgb_io_slot_reset()
2340 netif_err(adapter, probe, adapter->netdev, in ixgb_io_slot_reset()
2344 ixgb_get_ee_mac_addr(&adapter->hw, netdev->dev_addr); in ixgb_io_slot_reset()
2348 netif_err(adapter, probe, adapter->netdev, in ixgb_io_slot_reset()
2367 struct ixgb_adapter *adapter = netdev_priv(netdev); in ixgb_io_resume() local
2372 if (ixgb_up(adapter)) { in ixgb_io_resume()
2379 mod_timer(&adapter->watchdog_timer, jiffies); in ixgb_io_resume()