Lines Matching refs:adapter
52 static int ixgb_sw_init(struct ixgb_adapter *adapter);
55 static void ixgb_configure_tx(struct ixgb_adapter *adapter);
56 static void ixgb_configure_rx(struct ixgb_adapter *adapter);
57 static void ixgb_setup_rctl(struct ixgb_adapter *adapter);
58 static void ixgb_clean_tx_ring(struct ixgb_adapter *adapter);
59 static void ixgb_clean_rx_ring(struct ixgb_adapter *adapter);
67 static bool ixgb_clean_tx_irq(struct ixgb_adapter *adapter);
76 static void ixgb_vlan_strip_enable(struct ixgb_adapter *adapter);
77 static void ixgb_vlan_strip_disable(struct ixgb_adapter *adapter);
82 static void ixgb_restore_vlan(struct ixgb_adapter *adapter);
152 ixgb_irq_disable(struct ixgb_adapter *adapter) in ixgb_irq_disable() argument
154 IXGB_WRITE_REG(&adapter->hw, IMC, ~0); in ixgb_irq_disable()
155 IXGB_WRITE_FLUSH(&adapter->hw); in ixgb_irq_disable()
156 synchronize_irq(adapter->pdev->irq); in ixgb_irq_disable()
165 ixgb_irq_enable(struct ixgb_adapter *adapter) in ixgb_irq_enable() argument
169 if (adapter->hw.subsystem_vendor_id == PCI_VENDOR_ID_SUN) in ixgb_irq_enable()
171 IXGB_WRITE_REG(&adapter->hw, IMS, val); in ixgb_irq_enable()
172 IXGB_WRITE_FLUSH(&adapter->hw); in ixgb_irq_enable()
176 ixgb_up(struct ixgb_adapter *adapter) in ixgb_up() argument
178 struct net_device *netdev = adapter->netdev; in ixgb_up()
181 struct ixgb_hw *hw = &adapter->hw; in ixgb_up()
188 ixgb_restore_vlan(adapter); in ixgb_up()
190 ixgb_configure_tx(adapter); in ixgb_up()
191 ixgb_setup_rctl(adapter); in ixgb_up()
192 ixgb_configure_rx(adapter); in ixgb_up()
193 ixgb_alloc_rx_buffers(adapter, IXGB_DESC_UNUSED(&adapter->rx_ring)); in ixgb_up()
196 IXGB_WRITE_REG(&adapter->hw, IMC, 0xffffffff); in ixgb_up()
199 if (IXGB_READ_REG(&adapter->hw, STATUS) & IXGB_STATUS_PCIX_MODE) { in ixgb_up()
200 err = pci_enable_msi(adapter->pdev); in ixgb_up()
202 adapter->have_msi = true; in ixgb_up()
208 err = request_irq(adapter->pdev->irq, ixgb_intr, irq_flags, in ixgb_up()
211 if (adapter->have_msi) in ixgb_up()
212 pci_disable_msi(adapter->pdev); in ixgb_up()
213 netif_err(adapter, probe, adapter->netdev, in ixgb_up()
237 clear_bit(__IXGB_DOWN, &adapter->flags); in ixgb_up()
239 napi_enable(&adapter->napi); in ixgb_up()
240 ixgb_irq_enable(adapter); in ixgb_up()
244 mod_timer(&adapter->watchdog_timer, jiffies); in ixgb_up()
250 ixgb_down(struct ixgb_adapter *adapter, bool kill_watchdog) in ixgb_down() argument
252 struct net_device *netdev = adapter->netdev; in ixgb_down()
255 set_bit(__IXGB_DOWN, &adapter->flags); in ixgb_down()
259 napi_disable(&adapter->napi); in ixgb_down()
261 ixgb_irq_disable(adapter); in ixgb_down()
262 free_irq(adapter->pdev->irq, netdev); in ixgb_down()
264 if (adapter->have_msi) in ixgb_down()
265 pci_disable_msi(adapter->pdev); in ixgb_down()
268 del_timer_sync(&adapter->watchdog_timer); in ixgb_down()
270 adapter->link_speed = 0; in ixgb_down()
271 adapter->link_duplex = 0; in ixgb_down()
274 ixgb_reset(adapter); in ixgb_down()
275 ixgb_clean_tx_ring(adapter); in ixgb_down()
276 ixgb_clean_rx_ring(adapter); in ixgb_down()
280 ixgb_reset(struct ixgb_adapter *adapter) in ixgb_reset() argument
282 struct ixgb_hw *hw = &adapter->hw; in ixgb_reset()
286 netif_err(adapter, probe, adapter->netdev, "ixgb_init_hw failed\n"); in ixgb_reset()
316 struct ixgb_adapter *adapter = netdev_priv(netdev); in ixgb_set_features() local
322 adapter->rx_csum = !!(features & NETIF_F_RXCSUM); in ixgb_set_features()
325 ixgb_down(adapter, true); in ixgb_set_features()
326 ixgb_up(adapter); in ixgb_set_features()
329 ixgb_reset(adapter); in ixgb_set_features()
366 struct ixgb_adapter *adapter; in ixgb_probe() local
403 adapter = netdev_priv(netdev); in ixgb_probe()
404 adapter->netdev = netdev; in ixgb_probe()
405 adapter->pdev = pdev; in ixgb_probe()
406 adapter->hw.back = adapter; in ixgb_probe()
407 adapter->msg_enable = netif_msg_init(debug, DEFAULT_MSG_ENABLE); in ixgb_probe()
409 adapter->hw.hw_addr = pci_ioremap_bar(pdev, BAR_0); in ixgb_probe()
410 if (!adapter->hw.hw_addr) { in ixgb_probe()
419 adapter->hw.io_base = pci_resource_start(pdev, i); in ixgb_probe()
427 netif_napi_add(netdev, &adapter->napi, ixgb_clean, 64); in ixgb_probe()
431 adapter->bd_number = cards_found; in ixgb_probe()
432 adapter->link_speed = 0; in ixgb_probe()
433 adapter->link_duplex = 0; in ixgb_probe()
437 err = ixgb_sw_init(adapter); in ixgb_probe()
461 if (!ixgb_validate_eeprom_checksum(&adapter->hw)) { in ixgb_probe()
462 netif_err(adapter, probe, adapter->netdev, in ixgb_probe()
468 ixgb_get_ee_mac_addr(&adapter->hw, netdev->dev_addr); in ixgb_probe()
471 netif_err(adapter, probe, adapter->netdev, "Invalid MAC Address\n"); in ixgb_probe()
476 adapter->part_num = ixgb_get_ee_pba_number(&adapter->hw); in ixgb_probe()
478 timer_setup(&adapter->watchdog_timer, ixgb_watchdog, 0); in ixgb_probe()
480 INIT_WORK(&adapter->tx_timeout_task, ixgb_tx_timeout_task); in ixgb_probe()
490 netif_info(adapter, probe, adapter->netdev, in ixgb_probe()
492 ixgb_check_options(adapter); in ixgb_probe()
495 ixgb_reset(adapter); in ixgb_probe()
503 iounmap(adapter->hw.hw_addr); in ixgb_probe()
528 struct ixgb_adapter *adapter = netdev_priv(netdev); in ixgb_remove() local
530 cancel_work_sync(&adapter->tx_timeout_task); in ixgb_remove()
534 iounmap(adapter->hw.hw_addr); in ixgb_remove()
551 ixgb_sw_init(struct ixgb_adapter *adapter) in ixgb_sw_init() argument
553 struct ixgb_hw *hw = &adapter->hw; in ixgb_sw_init()
554 struct net_device *netdev = adapter->netdev; in ixgb_sw_init()
555 struct pci_dev *pdev = adapter->pdev; in ixgb_sw_init()
565 adapter->rx_buffer_len = hw->max_frame_size + 8; /* + 8 for errata */ in ixgb_sw_init()
574 netif_err(adapter, probe, adapter->netdev, "unsupported device id\n"); in ixgb_sw_init()
580 set_bit(__IXGB_DOWN, &adapter->flags); in ixgb_sw_init()
600 struct ixgb_adapter *adapter = netdev_priv(netdev); in ixgb_open() local
604 err = ixgb_setup_tx_resources(adapter); in ixgb_open()
612 err = ixgb_setup_rx_resources(adapter); in ixgb_open()
616 err = ixgb_up(adapter); in ixgb_open()
625 ixgb_free_rx_resources(adapter); in ixgb_open()
627 ixgb_free_tx_resources(adapter); in ixgb_open()
629 ixgb_reset(adapter); in ixgb_open()
649 struct ixgb_adapter *adapter = netdev_priv(netdev); in ixgb_close() local
651 ixgb_down(adapter, true); in ixgb_close()
653 ixgb_free_tx_resources(adapter); in ixgb_close()
654 ixgb_free_rx_resources(adapter); in ixgb_close()
667 ixgb_setup_tx_resources(struct ixgb_adapter *adapter) in ixgb_setup_tx_resources() argument
669 struct ixgb_desc_ring *txdr = &adapter->tx_ring; in ixgb_setup_tx_resources()
670 struct pci_dev *pdev = adapter->pdev; in ixgb_setup_tx_resources()
704 ixgb_configure_tx(struct ixgb_adapter *adapter) in ixgb_configure_tx() argument
706 u64 tdba = adapter->tx_ring.dma; in ixgb_configure_tx()
707 u32 tdlen = adapter->tx_ring.count * sizeof(struct ixgb_tx_desc); in ixgb_configure_tx()
709 struct ixgb_hw *hw = &adapter->hw; in ixgb_configure_tx()
729 IXGB_WRITE_REG(hw, TIDV, adapter->tx_int_delay); in ixgb_configure_tx()
737 adapter->tx_cmd_type = in ixgb_configure_tx()
739 (adapter->tx_int_delay_enable ? IXGB_TX_DESC_CMD_IDE : 0); in ixgb_configure_tx()
750 ixgb_setup_rx_resources(struct ixgb_adapter *adapter) in ixgb_setup_rx_resources() argument
752 struct ixgb_desc_ring *rxdr = &adapter->rx_ring; in ixgb_setup_rx_resources()
753 struct pci_dev *pdev = adapter->pdev; in ixgb_setup_rx_resources()
786 ixgb_setup_rctl(struct ixgb_adapter *adapter) in ixgb_setup_rctl() argument
790 rctl = IXGB_READ_REG(&adapter->hw, RCTL); in ixgb_setup_rctl()
797 (adapter->hw.mc_filter_type << IXGB_RCTL_MO_SHIFT); in ixgb_setup_rctl()
801 if (adapter->rx_buffer_len <= IXGB_RXBUFFER_2048) in ixgb_setup_rctl()
803 else if (adapter->rx_buffer_len <= IXGB_RXBUFFER_4096) in ixgb_setup_rctl()
805 else if (adapter->rx_buffer_len <= IXGB_RXBUFFER_8192) in ixgb_setup_rctl()
807 else if (adapter->rx_buffer_len <= IXGB_RXBUFFER_16384) in ixgb_setup_rctl()
810 IXGB_WRITE_REG(&adapter->hw, RCTL, rctl); in ixgb_setup_rctl()
821 ixgb_configure_rx(struct ixgb_adapter *adapter) in ixgb_configure_rx() argument
823 u64 rdba = adapter->rx_ring.dma; in ixgb_configure_rx()
824 u32 rdlen = adapter->rx_ring.count * sizeof(struct ixgb_rx_desc); in ixgb_configure_rx()
825 struct ixgb_hw *hw = &adapter->hw; in ixgb_configure_rx()
836 IXGB_WRITE_REG(hw, RDTR, adapter->rx_int_delay); in ixgb_configure_rx()
857 if (adapter->rx_csum) { in ixgb_configure_rx()
876 ixgb_free_tx_resources(struct ixgb_adapter *adapter) in ixgb_free_tx_resources() argument
878 struct pci_dev *pdev = adapter->pdev; in ixgb_free_tx_resources()
880 ixgb_clean_tx_ring(adapter); in ixgb_free_tx_resources()
882 vfree(adapter->tx_ring.buffer_info); in ixgb_free_tx_resources()
883 adapter->tx_ring.buffer_info = NULL; in ixgb_free_tx_resources()
885 dma_free_coherent(&pdev->dev, adapter->tx_ring.size, in ixgb_free_tx_resources()
886 adapter->tx_ring.desc, adapter->tx_ring.dma); in ixgb_free_tx_resources()
888 adapter->tx_ring.desc = NULL; in ixgb_free_tx_resources()
892 ixgb_unmap_and_free_tx_resource(struct ixgb_adapter *adapter, in ixgb_unmap_and_free_tx_resource() argument
897 dma_unmap_page(&adapter->pdev->dev, buffer_info->dma, in ixgb_unmap_and_free_tx_resource()
900 dma_unmap_single(&adapter->pdev->dev, buffer_info->dma, in ixgb_unmap_and_free_tx_resource()
921 ixgb_clean_tx_ring(struct ixgb_adapter *adapter) in ixgb_clean_tx_ring() argument
923 struct ixgb_desc_ring *tx_ring = &adapter->tx_ring; in ixgb_clean_tx_ring()
932 ixgb_unmap_and_free_tx_resource(adapter, buffer_info); in ixgb_clean_tx_ring()
945 IXGB_WRITE_REG(&adapter->hw, TDH, 0); in ixgb_clean_tx_ring()
946 IXGB_WRITE_REG(&adapter->hw, TDT, 0); in ixgb_clean_tx_ring()
957 ixgb_free_rx_resources(struct ixgb_adapter *adapter) in ixgb_free_rx_resources() argument
959 struct ixgb_desc_ring *rx_ring = &adapter->rx_ring; in ixgb_free_rx_resources()
960 struct pci_dev *pdev = adapter->pdev; in ixgb_free_rx_resources()
962 ixgb_clean_rx_ring(adapter); in ixgb_free_rx_resources()
979 ixgb_clean_rx_ring(struct ixgb_adapter *adapter) in ixgb_clean_rx_ring() argument
981 struct ixgb_desc_ring *rx_ring = &adapter->rx_ring; in ixgb_clean_rx_ring()
983 struct pci_dev *pdev = adapter->pdev; in ixgb_clean_rx_ring()
1016 IXGB_WRITE_REG(&adapter->hw, RDH, 0); in ixgb_clean_rx_ring()
1017 IXGB_WRITE_REG(&adapter->hw, RDT, 0); in ixgb_clean_rx_ring()
1031 struct ixgb_adapter *adapter = netdev_priv(netdev); in ixgb_set_mac() local
1039 ixgb_rar_set(&adapter->hw, addr->sa_data, 0); in ixgb_set_mac()
1057 struct ixgb_adapter *adapter = netdev_priv(netdev); in ixgb_set_multi() local
1058 struct ixgb_hw *hw = &adapter->hw; in ixgb_set_multi()
1108 ixgb_vlan_strip_enable(adapter); in ixgb_set_multi()
1110 ixgb_vlan_strip_disable(adapter); in ixgb_set_multi()
1122 struct ixgb_adapter *adapter = from_timer(adapter, t, watchdog_timer); in ixgb_watchdog() local
1123 struct net_device *netdev = adapter->netdev; in ixgb_watchdog()
1124 struct ixgb_desc_ring *txdr = &adapter->tx_ring; in ixgb_watchdog()
1126 ixgb_check_for_link(&adapter->hw); in ixgb_watchdog()
1128 if (ixgb_check_for_bad_link(&adapter->hw)) { in ixgb_watchdog()
1133 if (adapter->hw.link_up) { in ixgb_watchdog()
1137 (adapter->hw.fc.type == ixgb_fc_full) ? in ixgb_watchdog()
1139 (adapter->hw.fc.type == ixgb_fc_rx_pause) ? in ixgb_watchdog()
1141 (adapter->hw.fc.type == ixgb_fc_tx_pause) ? in ixgb_watchdog()
1143 adapter->link_speed = 10000; in ixgb_watchdog()
1144 adapter->link_duplex = FULL_DUPLEX; in ixgb_watchdog()
1149 adapter->link_speed = 0; in ixgb_watchdog()
1150 adapter->link_duplex = 0; in ixgb_watchdog()
1156 ixgb_update_stats(adapter); in ixgb_watchdog()
1164 schedule_work(&adapter->tx_timeout_task); in ixgb_watchdog()
1171 adapter->detect_tx_hung = true; in ixgb_watchdog()
1174 IXGB_WRITE_REG(&adapter->hw, ICS, IXGB_INT_TXDW); in ixgb_watchdog()
1177 mod_timer(&adapter->watchdog_timer, jiffies + 2 * HZ); in ixgb_watchdog()
1185 ixgb_tso(struct ixgb_adapter *adapter, struct sk_buff *skb) in ixgb_tso() argument
1216 i = adapter->tx_ring.next_to_use; in ixgb_tso()
1217 context_desc = IXGB_CONTEXT_DESC(adapter->tx_ring, i); in ixgb_tso()
1218 buffer_info = &adapter->tx_ring.buffer_info[i]; in ixgb_tso()
1239 if (++i == adapter->tx_ring.count) i = 0; in ixgb_tso()
1240 adapter->tx_ring.next_to_use = i; in ixgb_tso()
1249 ixgb_tx_csum(struct ixgb_adapter *adapter, struct sk_buff *skb) in ixgb_tx_csum() argument
1260 i = adapter->tx_ring.next_to_use; in ixgb_tx_csum()
1261 context_desc = IXGB_CONTEXT_DESC(adapter->tx_ring, i); in ixgb_tx_csum()
1262 buffer_info = &adapter->tx_ring.buffer_info[i]; in ixgb_tx_csum()
1277 if (++i == adapter->tx_ring.count) i = 0; in ixgb_tx_csum()
1278 adapter->tx_ring.next_to_use = i; in ixgb_tx_csum()
1290 ixgb_tx_map(struct ixgb_adapter *adapter, struct sk_buff *skb, in ixgb_tx_map() argument
1293 struct ixgb_desc_ring *tx_ring = &adapter->tx_ring; in ixgb_tx_map()
1294 struct pci_dev *pdev = adapter->pdev; in ixgb_tx_map()
1383 ixgb_unmap_and_free_tx_resource(adapter, buffer_info); in ixgb_tx_map()
1390 ixgb_tx_queue(struct ixgb_adapter *adapter, int count, int vlan_id,int tx_flags) in ixgb_tx_queue() argument
1392 struct ixgb_desc_ring *tx_ring = &adapter->tx_ring; in ixgb_tx_queue()
1395 u32 cmd_type_len = adapter->tx_cmd_type; in ixgb_tx_queue()
1436 IXGB_WRITE_REG(&adapter->hw, TDT, i); in ixgb_tx_queue()
1441 struct ixgb_adapter *adapter = netdev_priv(netdev); in __ixgb_maybe_stop_tx() local
1442 struct ixgb_desc_ring *tx_ring = &adapter->tx_ring; in __ixgb_maybe_stop_tx()
1457 ++adapter->restart_queue; in __ixgb_maybe_stop_tx()
1480 struct ixgb_adapter *adapter = netdev_priv(netdev); in ixgb_xmit_frame() local
1487 if (test_bit(__IXGB_DOWN, &adapter->flags)) { in ixgb_xmit_frame()
1497 if (unlikely(ixgb_maybe_stop_tx(netdev, &adapter->tx_ring, in ixgb_xmit_frame()
1506 first = adapter->tx_ring.next_to_use; in ixgb_xmit_frame()
1508 tso = ixgb_tso(adapter, skb); in ixgb_xmit_frame()
1516 else if (ixgb_tx_csum(adapter, skb)) in ixgb_xmit_frame()
1519 count = ixgb_tx_map(adapter, skb, first); in ixgb_xmit_frame()
1522 ixgb_tx_queue(adapter, count, vlan_id, tx_flags); in ixgb_xmit_frame()
1524 ixgb_maybe_stop_tx(netdev, &adapter->tx_ring, DESC_NEEDED); in ixgb_xmit_frame()
1528 adapter->tx_ring.buffer_info[first].time_stamp = 0; in ixgb_xmit_frame()
1529 adapter->tx_ring.next_to_use = first; in ixgb_xmit_frame()
1543 struct ixgb_adapter *adapter = netdev_priv(netdev); in ixgb_tx_timeout() local
1546 schedule_work(&adapter->tx_timeout_task); in ixgb_tx_timeout()
1552 struct ixgb_adapter *adapter = in ixgb_tx_timeout_task() local
1555 adapter->tx_timeout_count++; in ixgb_tx_timeout_task()
1556 ixgb_down(adapter, true); in ixgb_tx_timeout_task()
1557 ixgb_up(adapter); in ixgb_tx_timeout_task()
1571 struct ixgb_adapter *adapter = netdev_priv(netdev); in ixgb_change_mtu() local
1575 ixgb_down(adapter, true); in ixgb_change_mtu()
1577 adapter->rx_buffer_len = max_frame + 8; /* + 8 for errata */ in ixgb_change_mtu()
1582 ixgb_up(adapter); in ixgb_change_mtu()
1593 ixgb_update_stats(struct ixgb_adapter *adapter) in ixgb_update_stats() argument
1595 struct net_device *netdev = adapter->netdev; in ixgb_update_stats()
1596 struct pci_dev *pdev = adapter->pdev; in ixgb_update_stats()
1604 u64 multi = IXGB_READ_REG(&adapter->hw, MPRCL); in ixgb_update_stats()
1605 u32 bcast_l = IXGB_READ_REG(&adapter->hw, BPRCL); in ixgb_update_stats()
1606 u32 bcast_h = IXGB_READ_REG(&adapter->hw, BPRCH); in ixgb_update_stats()
1609 multi |= ((u64)IXGB_READ_REG(&adapter->hw, MPRCH) << 32); in ixgb_update_stats()
1614 adapter->stats.mprcl += (multi & 0xFFFFFFFF); in ixgb_update_stats()
1615 adapter->stats.mprch += (multi >> 32); in ixgb_update_stats()
1616 adapter->stats.bprcl += bcast_l; in ixgb_update_stats()
1617 adapter->stats.bprch += bcast_h; in ixgb_update_stats()
1619 adapter->stats.mprcl += IXGB_READ_REG(&adapter->hw, MPRCL); in ixgb_update_stats()
1620 adapter->stats.mprch += IXGB_READ_REG(&adapter->hw, MPRCH); in ixgb_update_stats()
1621 adapter->stats.bprcl += IXGB_READ_REG(&adapter->hw, BPRCL); in ixgb_update_stats()
1622 adapter->stats.bprch += IXGB_READ_REG(&adapter->hw, BPRCH); in ixgb_update_stats()
1624 adapter->stats.tprl += IXGB_READ_REG(&adapter->hw, TPRL); in ixgb_update_stats()
1625 adapter->stats.tprh += IXGB_READ_REG(&adapter->hw, TPRH); in ixgb_update_stats()
1626 adapter->stats.gprcl += IXGB_READ_REG(&adapter->hw, GPRCL); in ixgb_update_stats()
1627 adapter->stats.gprch += IXGB_READ_REG(&adapter->hw, GPRCH); in ixgb_update_stats()
1628 adapter->stats.uprcl += IXGB_READ_REG(&adapter->hw, UPRCL); in ixgb_update_stats()
1629 adapter->stats.uprch += IXGB_READ_REG(&adapter->hw, UPRCH); in ixgb_update_stats()
1630 adapter->stats.vprcl += IXGB_READ_REG(&adapter->hw, VPRCL); in ixgb_update_stats()
1631 adapter->stats.vprch += IXGB_READ_REG(&adapter->hw, VPRCH); in ixgb_update_stats()
1632 adapter->stats.jprcl += IXGB_READ_REG(&adapter->hw, JPRCL); in ixgb_update_stats()
1633 adapter->stats.jprch += IXGB_READ_REG(&adapter->hw, JPRCH); in ixgb_update_stats()
1634 adapter->stats.gorcl += IXGB_READ_REG(&adapter->hw, GORCL); in ixgb_update_stats()
1635 adapter->stats.gorch += IXGB_READ_REG(&adapter->hw, GORCH); in ixgb_update_stats()
1636 adapter->stats.torl += IXGB_READ_REG(&adapter->hw, TORL); in ixgb_update_stats()
1637 adapter->stats.torh += IXGB_READ_REG(&adapter->hw, TORH); in ixgb_update_stats()
1638 adapter->stats.rnbc += IXGB_READ_REG(&adapter->hw, RNBC); in ixgb_update_stats()
1639 adapter->stats.ruc += IXGB_READ_REG(&adapter->hw, RUC); in ixgb_update_stats()
1640 adapter->stats.roc += IXGB_READ_REG(&adapter->hw, ROC); in ixgb_update_stats()
1641 adapter->stats.rlec += IXGB_READ_REG(&adapter->hw, RLEC); in ixgb_update_stats()
1642 adapter->stats.crcerrs += IXGB_READ_REG(&adapter->hw, CRCERRS); in ixgb_update_stats()
1643 adapter->stats.icbc += IXGB_READ_REG(&adapter->hw, ICBC); in ixgb_update_stats()
1644 adapter->stats.ecbc += IXGB_READ_REG(&adapter->hw, ECBC); in ixgb_update_stats()
1645 adapter->stats.mpc += IXGB_READ_REG(&adapter->hw, MPC); in ixgb_update_stats()
1646 adapter->stats.tptl += IXGB_READ_REG(&adapter->hw, TPTL); in ixgb_update_stats()
1647 adapter->stats.tpth += IXGB_READ_REG(&adapter->hw, TPTH); in ixgb_update_stats()
1648 adapter->stats.gptcl += IXGB_READ_REG(&adapter->hw, GPTCL); in ixgb_update_stats()
1649 adapter->stats.gptch += IXGB_READ_REG(&adapter->hw, GPTCH); in ixgb_update_stats()
1650 adapter->stats.bptcl += IXGB_READ_REG(&adapter->hw, BPTCL); in ixgb_update_stats()
1651 adapter->stats.bptch += IXGB_READ_REG(&adapter->hw, BPTCH); in ixgb_update_stats()
1652 adapter->stats.mptcl += IXGB_READ_REG(&adapter->hw, MPTCL); in ixgb_update_stats()
1653 adapter->stats.mptch += IXGB_READ_REG(&adapter->hw, MPTCH); in ixgb_update_stats()
1654 adapter->stats.uptcl += IXGB_READ_REG(&adapter->hw, UPTCL); in ixgb_update_stats()
1655 adapter->stats.uptch += IXGB_READ_REG(&adapter->hw, UPTCH); in ixgb_update_stats()
1656 adapter->stats.vptcl += IXGB_READ_REG(&adapter->hw, VPTCL); in ixgb_update_stats()
1657 adapter->stats.vptch += IXGB_READ_REG(&adapter->hw, VPTCH); in ixgb_update_stats()
1658 adapter->stats.jptcl += IXGB_READ_REG(&adapter->hw, JPTCL); in ixgb_update_stats()
1659 adapter->stats.jptch += IXGB_READ_REG(&adapter->hw, JPTCH); in ixgb_update_stats()
1660 adapter->stats.gotcl += IXGB_READ_REG(&adapter->hw, GOTCL); in ixgb_update_stats()
1661 adapter->stats.gotch += IXGB_READ_REG(&adapter->hw, GOTCH); in ixgb_update_stats()
1662 adapter->stats.totl += IXGB_READ_REG(&adapter->hw, TOTL); in ixgb_update_stats()
1663 adapter->stats.toth += IXGB_READ_REG(&adapter->hw, TOTH); in ixgb_update_stats()
1664 adapter->stats.dc += IXGB_READ_REG(&adapter->hw, DC); in ixgb_update_stats()
1665 adapter->stats.plt64c += IXGB_READ_REG(&adapter->hw, PLT64C); in ixgb_update_stats()
1666 adapter->stats.tsctc += IXGB_READ_REG(&adapter->hw, TSCTC); in ixgb_update_stats()
1667 adapter->stats.tsctfc += IXGB_READ_REG(&adapter->hw, TSCTFC); in ixgb_update_stats()
1668 adapter->stats.ibic += IXGB_READ_REG(&adapter->hw, IBIC); in ixgb_update_stats()
1669 adapter->stats.rfc += IXGB_READ_REG(&adapter->hw, RFC); in ixgb_update_stats()
1670 adapter->stats.lfc += IXGB_READ_REG(&adapter->hw, LFC); in ixgb_update_stats()
1671 adapter->stats.pfrc += IXGB_READ_REG(&adapter->hw, PFRC); in ixgb_update_stats()
1672 adapter->stats.pftc += IXGB_READ_REG(&adapter->hw, PFTC); in ixgb_update_stats()
1673 adapter->stats.mcfrc += IXGB_READ_REG(&adapter->hw, MCFRC); in ixgb_update_stats()
1674 adapter->stats.mcftc += IXGB_READ_REG(&adapter->hw, MCFTC); in ixgb_update_stats()
1675 adapter->stats.xonrxc += IXGB_READ_REG(&adapter->hw, XONRXC); in ixgb_update_stats()
1676 adapter->stats.xontxc += IXGB_READ_REG(&adapter->hw, XONTXC); in ixgb_update_stats()
1677 adapter->stats.xoffrxc += IXGB_READ_REG(&adapter->hw, XOFFRXC); in ixgb_update_stats()
1678 adapter->stats.xofftxc += IXGB_READ_REG(&adapter->hw, XOFFTXC); in ixgb_update_stats()
1679 adapter->stats.rjc += IXGB_READ_REG(&adapter->hw, RJC); in ixgb_update_stats()
1683 netdev->stats.rx_packets = adapter->stats.gprcl; in ixgb_update_stats()
1684 netdev->stats.tx_packets = adapter->stats.gptcl; in ixgb_update_stats()
1685 netdev->stats.rx_bytes = adapter->stats.gorcl; in ixgb_update_stats()
1686 netdev->stats.tx_bytes = adapter->stats.gotcl; in ixgb_update_stats()
1687 netdev->stats.multicast = adapter->stats.mprcl; in ixgb_update_stats()
1693 /* adapter->stats.rnbc + */ adapter->stats.crcerrs + in ixgb_update_stats()
1694 adapter->stats.ruc + in ixgb_update_stats()
1695 adapter->stats.roc /*+ adapter->stats.rlec */ + in ixgb_update_stats()
1696 adapter->stats.icbc + in ixgb_update_stats()
1697 adapter->stats.ecbc + adapter->stats.mpc; in ixgb_update_stats()
1703 netdev->stats.rx_crc_errors = adapter->stats.crcerrs; in ixgb_update_stats()
1704 netdev->stats.rx_fifo_errors = adapter->stats.mpc; in ixgb_update_stats()
1705 netdev->stats.rx_missed_errors = adapter->stats.mpc; in ixgb_update_stats()
1706 netdev->stats.rx_over_errors = adapter->stats.mpc; in ixgb_update_stats()
1728 struct ixgb_adapter *adapter = netdev_priv(netdev); in ixgb_intr() local
1729 struct ixgb_hw *hw = &adapter->hw; in ixgb_intr()
1736 if (!test_bit(__IXGB_DOWN, &adapter->flags)) in ixgb_intr()
1737 mod_timer(&adapter->watchdog_timer, jiffies); in ixgb_intr()
1739 if (napi_schedule_prep(&adapter->napi)) { in ixgb_intr()
1745 IXGB_WRITE_REG(&adapter->hw, IMC, ~0); in ixgb_intr()
1746 __napi_schedule(&adapter->napi); in ixgb_intr()
1759 struct ixgb_adapter *adapter = container_of(napi, struct ixgb_adapter, napi); in ixgb_clean() local
1762 ixgb_clean_tx_irq(adapter); in ixgb_clean()
1763 ixgb_clean_rx_irq(adapter, &work_done, budget); in ixgb_clean()
1768 if (!test_bit(__IXGB_DOWN, &adapter->flags)) in ixgb_clean()
1769 ixgb_irq_enable(adapter); in ixgb_clean()
1781 ixgb_clean_tx_irq(struct ixgb_adapter *adapter) in ixgb_clean_tx_irq() argument
1783 struct ixgb_desc_ring *tx_ring = &adapter->tx_ring; in ixgb_clean_tx_irq()
1784 struct net_device *netdev = adapter->netdev; in ixgb_clean_tx_irq()
1804 adapter->hw_csum_tx_good++; in ixgb_clean_tx_irq()
1806 ixgb_unmap_and_free_tx_resource(adapter, buffer_info); in ixgb_clean_tx_irq()
1827 !(test_bit(__IXGB_DOWN, &adapter->flags))) { in ixgb_clean_tx_irq()
1829 ++adapter->restart_queue; in ixgb_clean_tx_irq()
1833 if (adapter->detect_tx_hung) { in ixgb_clean_tx_irq()
1836 adapter->detect_tx_hung = false; in ixgb_clean_tx_irq()
1839 && !(IXGB_READ_REG(&adapter->hw, STATUS) & in ixgb_clean_tx_irq()
1842 netif_err(adapter, drv, adapter->netdev, in ixgb_clean_tx_irq()
1853 IXGB_READ_REG(&adapter->hw, TDH), in ixgb_clean_tx_irq()
1854 IXGB_READ_REG(&adapter->hw, TDT), in ixgb_clean_tx_irq()
1876 ixgb_rx_checksum(struct ixgb_adapter *adapter, in ixgb_rx_checksum() argument
1894 adapter->hw_csum_rx_error++; in ixgb_rx_checksum()
1898 adapter->hw_csum_rx_good++; in ixgb_rx_checksum()
1933 ixgb_clean_rx_irq(struct ixgb_adapter *adapter, int *work_done, int work_to_do) in ixgb_clean_rx_irq() argument
1935 struct ixgb_desc_ring *rx_ring = &adapter->rx_ring; in ixgb_clean_rx_irq()
1936 struct net_device *netdev = adapter->netdev; in ixgb_clean_rx_irq()
1937 struct pci_dev *pdev = adapter->pdev; in ixgb_clean_rx_irq()
2007 ixgb_check_copybreak(&adapter->napi, buffer_info, length, &skb); in ixgb_clean_rx_irq()
2013 ixgb_rx_checksum(adapter, rx_desc, skb); in ixgb_clean_rx_irq()
2028 ixgb_alloc_rx_buffers(adapter, cleaned_count); in ixgb_clean_rx_irq()
2041 ixgb_alloc_rx_buffers(adapter, cleaned_count); in ixgb_clean_rx_irq()
2052 ixgb_alloc_rx_buffers(struct ixgb_adapter *adapter, int cleaned_count) in ixgb_alloc_rx_buffers() argument
2054 struct ixgb_desc_ring *rx_ring = &adapter->rx_ring; in ixgb_alloc_rx_buffers()
2055 struct net_device *netdev = adapter->netdev; in ixgb_alloc_rx_buffers()
2056 struct pci_dev *pdev = adapter->pdev; in ixgb_alloc_rx_buffers()
2077 skb = netdev_alloc_skb_ip_align(netdev, adapter->rx_buffer_len); in ixgb_alloc_rx_buffers()
2080 adapter->alloc_rx_buff_failed++; in ixgb_alloc_rx_buffers()
2085 buffer_info->length = adapter->rx_buffer_len; in ixgb_alloc_rx_buffers()
2089 adapter->rx_buffer_len, in ixgb_alloc_rx_buffers()
2092 adapter->alloc_rx_buff_failed++; in ixgb_alloc_rx_buffers()
2119 IXGB_WRITE_REG(&adapter->hw, RDT, i); in ixgb_alloc_rx_buffers()
2124 ixgb_vlan_strip_enable(struct ixgb_adapter *adapter) in ixgb_vlan_strip_enable() argument
2129 ctrl = IXGB_READ_REG(&adapter->hw, CTRL0); in ixgb_vlan_strip_enable()
2131 IXGB_WRITE_REG(&adapter->hw, CTRL0, ctrl); in ixgb_vlan_strip_enable()
2135 ixgb_vlan_strip_disable(struct ixgb_adapter *adapter) in ixgb_vlan_strip_disable() argument
2140 ctrl = IXGB_READ_REG(&adapter->hw, CTRL0); in ixgb_vlan_strip_disable()
2142 IXGB_WRITE_REG(&adapter->hw, CTRL0, ctrl); in ixgb_vlan_strip_disable()
2148 struct ixgb_adapter *adapter = netdev_priv(netdev); in ixgb_vlan_rx_add_vid() local
2154 vfta = IXGB_READ_REG_ARRAY(&adapter->hw, VFTA, index); in ixgb_vlan_rx_add_vid()
2156 ixgb_write_vfta(&adapter->hw, index, vfta); in ixgb_vlan_rx_add_vid()
2157 set_bit(vid, adapter->active_vlans); in ixgb_vlan_rx_add_vid()
2165 struct ixgb_adapter *adapter = netdev_priv(netdev); in ixgb_vlan_rx_kill_vid() local
2171 vfta = IXGB_READ_REG_ARRAY(&adapter->hw, VFTA, index); in ixgb_vlan_rx_kill_vid()
2173 ixgb_write_vfta(&adapter->hw, index, vfta); in ixgb_vlan_rx_kill_vid()
2174 clear_bit(vid, adapter->active_vlans); in ixgb_vlan_rx_kill_vid()
2180 ixgb_restore_vlan(struct ixgb_adapter *adapter) in ixgb_restore_vlan() argument
2184 for_each_set_bit(vid, adapter->active_vlans, VLAN_N_VID) in ixgb_restore_vlan()
2185 ixgb_vlan_rx_add_vid(adapter->netdev, htons(ETH_P_8021Q), vid); in ixgb_restore_vlan()
2200 struct ixgb_adapter *adapter = netdev_priv(netdev); in ixgb_io_error_detected() local
2208 ixgb_down(adapter, true); in ixgb_io_error_detected()
2228 struct ixgb_adapter *adapter = netdev_priv(netdev); in ixgb_io_slot_reset() local
2231 netif_err(adapter, probe, adapter->netdev, in ixgb_io_slot_reset()
2244 ixgb_reset(adapter); in ixgb_io_slot_reset()
2247 if (!ixgb_validate_eeprom_checksum(&adapter->hw)) { in ixgb_io_slot_reset()
2248 netif_err(adapter, probe, adapter->netdev, in ixgb_io_slot_reset()
2252 ixgb_get_ee_mac_addr(&adapter->hw, netdev->dev_addr); in ixgb_io_slot_reset()
2256 netif_err(adapter, probe, adapter->netdev, in ixgb_io_slot_reset()
2275 struct ixgb_adapter *adapter = netdev_priv(netdev); in ixgb_io_resume() local
2280 if (ixgb_up(adapter)) { in ixgb_io_resume()
2287 mod_timer(&adapter->watchdog_timer, jiffies); in ixgb_io_resume()