Lines Matching refs:adapter
93 int e1000_up(struct e1000_adapter *adapter);
94 void e1000_down(struct e1000_adapter *adapter);
95 void e1000_reinit_locked(struct e1000_adapter *adapter);
96 void e1000_reset(struct e1000_adapter *adapter);
97 int e1000_setup_all_tx_resources(struct e1000_adapter *adapter);
98 int e1000_setup_all_rx_resources(struct e1000_adapter *adapter);
99 void e1000_free_all_tx_resources(struct e1000_adapter *adapter);
100 void e1000_free_all_rx_resources(struct e1000_adapter *adapter);
101 static int e1000_setup_tx_resources(struct e1000_adapter *adapter,
103 static int e1000_setup_rx_resources(struct e1000_adapter *adapter,
105 static void e1000_free_tx_resources(struct e1000_adapter *adapter,
107 static void e1000_free_rx_resources(struct e1000_adapter *adapter,
109 void e1000_update_stats(struct e1000_adapter *adapter);
115 static int e1000_alloc_queues(struct e1000_adapter *adapter);
116 static int e1000_sw_init(struct e1000_adapter *adapter);
119 static void e1000_configure_tx(struct e1000_adapter *adapter);
120 static void e1000_configure_rx(struct e1000_adapter *adapter);
121 static void e1000_setup_rctl(struct e1000_adapter *adapter);
122 static void e1000_clean_all_tx_rings(struct e1000_adapter *adapter);
123 static void e1000_clean_all_rx_rings(struct e1000_adapter *adapter);
124 static void e1000_clean_tx_ring(struct e1000_adapter *adapter,
126 static void e1000_clean_rx_ring(struct e1000_adapter *adapter,
138 static bool e1000_clean_tx_irq(struct e1000_adapter *adapter,
141 static bool e1000_clean_rx_irq(struct e1000_adapter *adapter,
144 static bool e1000_clean_jumbo_rx_irq(struct e1000_adapter *adapter,
147 static void e1000_alloc_dummy_rx_buffers(struct e1000_adapter *adapter, in e1000_alloc_dummy_rx_buffers() argument
152 static void e1000_alloc_rx_buffers(struct e1000_adapter *adapter,
155 static void e1000_alloc_jumbo_rx_buffers(struct e1000_adapter *adapter,
161 static void e1000_enter_82542_rst(struct e1000_adapter *adapter);
162 static void e1000_leave_82542_rst(struct e1000_adapter *adapter);
165 static void e1000_smartspeed(struct e1000_adapter *adapter);
166 static int e1000_82547_fifo_workaround(struct e1000_adapter *adapter,
169 static bool e1000_vlan_used(struct e1000_adapter *adapter);
172 static void e1000_vlan_filter_on_off(struct e1000_adapter *adapter,
178 static void e1000_restore_vlan(struct e1000_adapter *adapter);
239 struct e1000_adapter *adapter = hw->back; in e1000_get_hw_dev() local
240 return adapter->netdev; in e1000_get_hw_dev()
282 static int e1000_request_irq(struct e1000_adapter *adapter) in e1000_request_irq() argument
284 struct net_device *netdev = adapter->netdev; in e1000_request_irq()
289 err = request_irq(adapter->pdev->irq, handler, irq_flags, netdev->name, in e1000_request_irq()
298 static void e1000_free_irq(struct e1000_adapter *adapter) in e1000_free_irq() argument
300 struct net_device *netdev = adapter->netdev; in e1000_free_irq()
302 free_irq(adapter->pdev->irq, netdev); in e1000_free_irq()
309 static void e1000_irq_disable(struct e1000_adapter *adapter) in e1000_irq_disable() argument
311 struct e1000_hw *hw = &adapter->hw; in e1000_irq_disable()
315 synchronize_irq(adapter->pdev->irq); in e1000_irq_disable()
322 static void e1000_irq_enable(struct e1000_adapter *adapter) in e1000_irq_enable() argument
324 struct e1000_hw *hw = &adapter->hw; in e1000_irq_enable()
330 static void e1000_update_mng_vlan(struct e1000_adapter *adapter) in e1000_update_mng_vlan() argument
332 struct e1000_hw *hw = &adapter->hw; in e1000_update_mng_vlan()
333 struct net_device *netdev = adapter->netdev; in e1000_update_mng_vlan()
335 u16 old_vid = adapter->mng_vlan_id; in e1000_update_mng_vlan()
337 if (!e1000_vlan_used(adapter)) in e1000_update_mng_vlan()
340 if (!test_bit(vid, adapter->active_vlans)) { in e1000_update_mng_vlan()
344 adapter->mng_vlan_id = vid; in e1000_update_mng_vlan()
346 adapter->mng_vlan_id = E1000_MNG_VLAN_NONE; in e1000_update_mng_vlan()
350 !test_bit(old_vid, adapter->active_vlans)) in e1000_update_mng_vlan()
354 adapter->mng_vlan_id = vid; in e1000_update_mng_vlan()
358 static void e1000_init_manageability(struct e1000_adapter *adapter) in e1000_init_manageability() argument
360 struct e1000_hw *hw = &adapter->hw; in e1000_init_manageability()
362 if (adapter->en_mng_pt) { in e1000_init_manageability()
372 static void e1000_release_manageability(struct e1000_adapter *adapter) in e1000_release_manageability() argument
374 struct e1000_hw *hw = &adapter->hw; in e1000_release_manageability()
376 if (adapter->en_mng_pt) { in e1000_release_manageability()
390 static void e1000_configure(struct e1000_adapter *adapter) in e1000_configure() argument
392 struct net_device *netdev = adapter->netdev; in e1000_configure()
397 e1000_restore_vlan(adapter); in e1000_configure()
398 e1000_init_manageability(adapter); in e1000_configure()
400 e1000_configure_tx(adapter); in e1000_configure()
401 e1000_setup_rctl(adapter); in e1000_configure()
402 e1000_configure_rx(adapter); in e1000_configure()
407 for (i = 0; i < adapter->num_rx_queues; i++) { in e1000_configure()
408 struct e1000_rx_ring *ring = &adapter->rx_ring[i]; in e1000_configure()
409 adapter->alloc_rx_buf(adapter, ring, in e1000_configure()
414 int e1000_up(struct e1000_adapter *adapter) in e1000_up() argument
416 struct e1000_hw *hw = &adapter->hw; in e1000_up()
419 e1000_configure(adapter); in e1000_up()
421 clear_bit(__E1000_DOWN, &adapter->flags); in e1000_up()
423 napi_enable(&adapter->napi); in e1000_up()
425 e1000_irq_enable(adapter); in e1000_up()
427 netif_wake_queue(adapter->netdev); in e1000_up()
442 void e1000_power_up_phy(struct e1000_adapter *adapter) in e1000_power_up_phy() argument
444 struct e1000_hw *hw = &adapter->hw; in e1000_power_up_phy()
458 static void e1000_power_down_phy(struct e1000_adapter *adapter) in e1000_power_down_phy() argument
460 struct e1000_hw *hw = &adapter->hw; in e1000_power_down_phy()
468 if (!adapter->wol && hw->mac_type >= e1000_82540 && in e1000_power_down_phy()
498 static void e1000_down_and_stop(struct e1000_adapter *adapter) in e1000_down_and_stop() argument
500 set_bit(__E1000_DOWN, &adapter->flags); in e1000_down_and_stop()
502 cancel_delayed_work_sync(&adapter->watchdog_task); in e1000_down_and_stop()
510 cancel_delayed_work_sync(&adapter->phy_info_task); in e1000_down_and_stop()
511 cancel_delayed_work_sync(&adapter->fifo_stall_task); in e1000_down_and_stop()
514 if (!test_bit(__E1000_RESETTING, &adapter->flags)) in e1000_down_and_stop()
515 cancel_work_sync(&adapter->reset_task); in e1000_down_and_stop()
518 void e1000_down(struct e1000_adapter *adapter) in e1000_down() argument
520 struct e1000_hw *hw = &adapter->hw; in e1000_down()
521 struct net_device *netdev = adapter->netdev; in e1000_down()
541 napi_disable(&adapter->napi); in e1000_down()
543 e1000_irq_disable(adapter); in e1000_down()
549 e1000_down_and_stop(adapter); in e1000_down()
551 adapter->link_speed = 0; in e1000_down()
552 adapter->link_duplex = 0; in e1000_down()
554 e1000_reset(adapter); in e1000_down()
555 e1000_clean_all_tx_rings(adapter); in e1000_down()
556 e1000_clean_all_rx_rings(adapter); in e1000_down()
559 void e1000_reinit_locked(struct e1000_adapter *adapter) in e1000_reinit_locked() argument
562 while (test_and_set_bit(__E1000_RESETTING, &adapter->flags)) in e1000_reinit_locked()
564 e1000_down(adapter); in e1000_reinit_locked()
565 e1000_up(adapter); in e1000_reinit_locked()
566 clear_bit(__E1000_RESETTING, &adapter->flags); in e1000_reinit_locked()
569 void e1000_reset(struct e1000_adapter *adapter) in e1000_reset() argument
571 struct e1000_hw *hw = &adapter->hw; in e1000_reset()
613 adapter->tx_fifo_head = 0; in e1000_reset()
614 adapter->tx_head_addr = pba << E1000_TX_HEAD_ADDR_SHIFT; in e1000_reset()
615 adapter->tx_fifo_size = in e1000_reset()
617 atomic_set(&adapter->tx_fifo_stall, 0); in e1000_reset()
700 e1000_update_mng_vlan(adapter); in e1000_reset()
719 e1000_phy_get_info(hw, &adapter->phy_info); in e1000_reset()
721 e1000_release_manageability(adapter); in e1000_reset()
725 static void e1000_dump_eeprom(struct e1000_adapter *adapter) in e1000_dump_eeprom() argument
727 struct net_device *netdev = adapter->netdev; in e1000_dump_eeprom()
825 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_set_features() local
835 adapter->rx_csum = !!(features & NETIF_F_RXCSUM); in e1000_set_features()
838 e1000_reinit_locked(adapter); in e1000_set_features()
840 e1000_reset(adapter); in e1000_set_features()
876 static int e1000_init_hw_struct(struct e1000_adapter *adapter, in e1000_init_hw_struct() argument
879 struct pci_dev *pdev = adapter->pdev; in e1000_init_hw_struct()
890 hw->max_frame_size = adapter->netdev->mtu + in e1000_init_hw_struct()
943 struct e1000_adapter *adapter; in e1000_probe() local
983 adapter = netdev_priv(netdev); in e1000_probe()
984 adapter->netdev = netdev; in e1000_probe()
985 adapter->pdev = pdev; in e1000_probe()
986 adapter->msg_enable = netif_msg_init(debug, DEFAULT_MSG_ENABLE); in e1000_probe()
987 adapter->bars = bars; in e1000_probe()
988 adapter->need_ioport = need_ioport; in e1000_probe()
990 hw = &adapter->hw; in e1000_probe()
991 hw->back = adapter; in e1000_probe()
998 if (adapter->need_ioport) { in e1000_probe()
1010 err = e1000_init_hw_struct(adapter, hw); in e1000_probe()
1033 netif_napi_add(netdev, &adapter->napi, e1000_clean, 64); in e1000_probe()
1037 adapter->bd_number = cards_found; in e1000_probe()
1041 err = e1000_sw_init(adapter); in e1000_probe()
1088 adapter->en_mng_pt = e1000_enable_mng_pass_thru(hw); in e1000_probe()
1105 e1000_dump_eeprom(adapter); in e1000_probe()
1126 INIT_DELAYED_WORK(&adapter->watchdog_task, e1000_watchdog); in e1000_probe()
1127 INIT_DELAYED_WORK(&adapter->fifo_stall_task, in e1000_probe()
1129 INIT_DELAYED_WORK(&adapter->phy_info_task, e1000_update_phy_info_task); in e1000_probe()
1130 INIT_WORK(&adapter->reset_task, e1000_reset_task); in e1000_probe()
1132 e1000_check_options(adapter); in e1000_probe()
1163 adapter->eeprom_wol |= E1000_WUFC_MAG; in e1000_probe()
1171 adapter->eeprom_wol = 0; in e1000_probe()
1179 adapter->eeprom_wol = 0; in e1000_probe()
1184 adapter->eeprom_wol = 0; in e1000_probe()
1186 adapter->quad_port_a = true; in e1000_probe()
1194 adapter->wol = adapter->eeprom_wol; in e1000_probe()
1195 device_set_wakeup_enable(&adapter->pdev->dev, adapter->wol); in e1000_probe()
1212 e1000_reset(adapter); in e1000_probe()
1219 e1000_vlan_filter_on_off(adapter, false); in e1000_probe()
1245 kfree(adapter->tx_ring); in e1000_probe()
1246 kfree(adapter->rx_ring); in e1000_probe()
1273 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_remove() local
1274 struct e1000_hw *hw = &adapter->hw; in e1000_remove()
1276 e1000_down_and_stop(adapter); in e1000_remove()
1277 e1000_release_manageability(adapter); in e1000_remove()
1283 kfree(adapter->tx_ring); in e1000_remove()
1284 kfree(adapter->rx_ring); in e1000_remove()
1291 pci_release_selected_regions(pdev, adapter->bars); in e1000_remove()
1305 static int e1000_sw_init(struct e1000_adapter *adapter) in e1000_sw_init() argument
1307 adapter->rx_buffer_len = MAXIMUM_ETHERNET_VLAN_SIZE; in e1000_sw_init()
1309 adapter->num_tx_queues = 1; in e1000_sw_init()
1310 adapter->num_rx_queues = 1; in e1000_sw_init()
1312 if (e1000_alloc_queues(adapter)) { in e1000_sw_init()
1318 e1000_irq_disable(adapter); in e1000_sw_init()
1320 spin_lock_init(&adapter->stats_lock); in e1000_sw_init()
1322 set_bit(__E1000_DOWN, &adapter->flags); in e1000_sw_init()
1334 static int e1000_alloc_queues(struct e1000_adapter *adapter) in e1000_alloc_queues() argument
1336 adapter->tx_ring = kcalloc(adapter->num_tx_queues, in e1000_alloc_queues()
1338 if (!adapter->tx_ring) in e1000_alloc_queues()
1341 adapter->rx_ring = kcalloc(adapter->num_rx_queues, in e1000_alloc_queues()
1343 if (!adapter->rx_ring) { in e1000_alloc_queues()
1344 kfree(adapter->tx_ring); in e1000_alloc_queues()
1365 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_open() local
1366 struct e1000_hw *hw = &adapter->hw; in e1000_open()
1370 if (test_bit(__E1000_TESTING, &adapter->flags)) in e1000_open()
1376 err = e1000_setup_all_tx_resources(adapter); in e1000_open()
1381 err = e1000_setup_all_rx_resources(adapter); in e1000_open()
1385 e1000_power_up_phy(adapter); in e1000_open()
1387 adapter->mng_vlan_id = E1000_MNG_VLAN_NONE; in e1000_open()
1390 e1000_update_mng_vlan(adapter); in e1000_open()
1398 e1000_configure(adapter); in e1000_open()
1400 err = e1000_request_irq(adapter); in e1000_open()
1405 clear_bit(__E1000_DOWN, &adapter->flags); in e1000_open()
1407 napi_enable(&adapter->napi); in e1000_open()
1409 e1000_irq_enable(adapter); in e1000_open()
1419 e1000_power_down_phy(adapter); in e1000_open()
1420 e1000_free_all_rx_resources(adapter); in e1000_open()
1422 e1000_free_all_tx_resources(adapter); in e1000_open()
1424 e1000_reset(adapter); in e1000_open()
1442 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_close() local
1443 struct e1000_hw *hw = &adapter->hw; in e1000_close()
1446 while (test_bit(__E1000_RESETTING, &adapter->flags) && count--) in e1000_close()
1449 WARN_ON(test_bit(__E1000_RESETTING, &adapter->flags)); in e1000_close()
1450 e1000_down(adapter); in e1000_close()
1451 e1000_power_down_phy(adapter); in e1000_close()
1452 e1000_free_irq(adapter); in e1000_close()
1454 e1000_free_all_tx_resources(adapter); in e1000_close()
1455 e1000_free_all_rx_resources(adapter); in e1000_close()
1462 !test_bit(adapter->mng_vlan_id, adapter->active_vlans)) { in e1000_close()
1464 adapter->mng_vlan_id); in e1000_close()
1476 static bool e1000_check_64k_bound(struct e1000_adapter *adapter, void *start, in e1000_check_64k_bound() argument
1479 struct e1000_hw *hw = &adapter->hw; in e1000_check_64k_bound()
1502 static int e1000_setup_tx_resources(struct e1000_adapter *adapter, in e1000_setup_tx_resources() argument
1505 struct pci_dev *pdev = adapter->pdev; in e1000_setup_tx_resources()
1527 if (!e1000_check_64k_bound(adapter, txdr->desc, txdr->size)) { in e1000_setup_tx_resources()
1542 if (!e1000_check_64k_bound(adapter, txdr->desc, txdr->size)) { in e1000_setup_tx_resources()
1573 int e1000_setup_all_tx_resources(struct e1000_adapter *adapter) in e1000_setup_all_tx_resources() argument
1577 for (i = 0; i < adapter->num_tx_queues; i++) { in e1000_setup_all_tx_resources()
1578 err = e1000_setup_tx_resources(adapter, &adapter->tx_ring[i]); in e1000_setup_all_tx_resources()
1582 e1000_free_tx_resources(adapter, in e1000_setup_all_tx_resources()
1583 &adapter->tx_ring[i]); in e1000_setup_all_tx_resources()
1597 static void e1000_configure_tx(struct e1000_adapter *adapter) in e1000_configure_tx() argument
1600 struct e1000_hw *hw = &adapter->hw; in e1000_configure_tx()
1606 switch (adapter->num_tx_queues) { in e1000_configure_tx()
1609 tdba = adapter->tx_ring[0].dma; in e1000_configure_tx()
1610 tdlen = adapter->tx_ring[0].count * in e1000_configure_tx()
1617 adapter->tx_ring[0].tdh = ((hw->mac_type >= e1000_82543) ? in e1000_configure_tx()
1619 adapter->tx_ring[0].tdt = ((hw->mac_type >= e1000_82543) ? in e1000_configure_tx()
1649 ew32(TIDV, adapter->tx_int_delay); in e1000_configure_tx()
1651 ew32(TADV, adapter->tx_abs_int_delay); in e1000_configure_tx()
1663 adapter->txd_cmd = E1000_TXD_CMD_EOP | E1000_TXD_CMD_IFCS; in e1000_configure_tx()
1666 if (adapter->tx_int_delay) in e1000_configure_tx()
1667 adapter->txd_cmd |= E1000_TXD_CMD_IDE; in e1000_configure_tx()
1670 adapter->txd_cmd |= E1000_TXD_CMD_RPS; in e1000_configure_tx()
1672 adapter->txd_cmd |= E1000_TXD_CMD_RS; in e1000_configure_tx()
1679 adapter->pcix_82544 = true; in e1000_configure_tx()
1692 static int e1000_setup_rx_resources(struct e1000_adapter *adapter, in e1000_setup_rx_resources() argument
1695 struct pci_dev *pdev = adapter->pdev; in e1000_setup_rx_resources()
1719 if (!e1000_check_64k_bound(adapter, rxdr->desc, rxdr->size)) { in e1000_setup_rx_resources()
1734 if (!e1000_check_64k_bound(adapter, rxdr->desc, rxdr->size)) { in e1000_setup_rx_resources()
1765 int e1000_setup_all_rx_resources(struct e1000_adapter *adapter) in e1000_setup_all_rx_resources() argument
1769 for (i = 0; i < adapter->num_rx_queues; i++) { in e1000_setup_all_rx_resources()
1770 err = e1000_setup_rx_resources(adapter, &adapter->rx_ring[i]); in e1000_setup_all_rx_resources()
1774 e1000_free_rx_resources(adapter, in e1000_setup_all_rx_resources()
1775 &adapter->rx_ring[i]); in e1000_setup_all_rx_resources()
1787 static void e1000_setup_rctl(struct e1000_adapter *adapter) in e1000_setup_rctl() argument
1789 struct e1000_hw *hw = &adapter->hw; in e1000_setup_rctl()
1805 if (adapter->netdev->mtu <= ETH_DATA_LEN) in e1000_setup_rctl()
1813 switch (adapter->rx_buffer_len) { in e1000_setup_rctl()
1831 if (adapter->netdev->features & NETIF_F_RXALL) { in e1000_setup_rctl()
1856 static void e1000_configure_rx(struct e1000_adapter *adapter) in e1000_configure_rx() argument
1859 struct e1000_hw *hw = &adapter->hw; in e1000_configure_rx()
1862 if (adapter->netdev->mtu > ETH_DATA_LEN) { in e1000_configure_rx()
1863 rdlen = adapter->rx_ring[0].count * in e1000_configure_rx()
1865 adapter->clean_rx = e1000_clean_jumbo_rx_irq; in e1000_configure_rx()
1866 adapter->alloc_rx_buf = e1000_alloc_jumbo_rx_buffers; in e1000_configure_rx()
1868 rdlen = adapter->rx_ring[0].count * in e1000_configure_rx()
1870 adapter->clean_rx = e1000_clean_rx_irq; in e1000_configure_rx()
1871 adapter->alloc_rx_buf = e1000_alloc_rx_buffers; in e1000_configure_rx()
1879 ew32(RDTR, adapter->rx_int_delay); in e1000_configure_rx()
1882 ew32(RADV, adapter->rx_abs_int_delay); in e1000_configure_rx()
1883 if (adapter->itr_setting != 0) in e1000_configure_rx()
1884 ew32(ITR, 1000000000 / (adapter->itr * 256)); in e1000_configure_rx()
1890 switch (adapter->num_rx_queues) { in e1000_configure_rx()
1893 rdba = adapter->rx_ring[0].dma; in e1000_configure_rx()
1899 adapter->rx_ring[0].rdh = ((hw->mac_type >= e1000_82543) ? in e1000_configure_rx()
1901 adapter->rx_ring[0].rdt = ((hw->mac_type >= e1000_82543) ? in e1000_configure_rx()
1909 if (adapter->rx_csum) in e1000_configure_rx()
1928 static void e1000_free_tx_resources(struct e1000_adapter *adapter, in e1000_free_tx_resources() argument
1931 struct pci_dev *pdev = adapter->pdev; in e1000_free_tx_resources()
1933 e1000_clean_tx_ring(adapter, tx_ring); in e1000_free_tx_resources()
1950 void e1000_free_all_tx_resources(struct e1000_adapter *adapter) in e1000_free_all_tx_resources() argument
1954 for (i = 0; i < adapter->num_tx_queues; i++) in e1000_free_all_tx_resources()
1955 e1000_free_tx_resources(adapter, &adapter->tx_ring[i]); in e1000_free_all_tx_resources()
1959 e1000_unmap_and_free_tx_resource(struct e1000_adapter *adapter, in e1000_unmap_and_free_tx_resource() argument
1964 dma_unmap_page(&adapter->pdev->dev, buffer_info->dma, in e1000_unmap_and_free_tx_resource()
1967 dma_unmap_single(&adapter->pdev->dev, buffer_info->dma, in e1000_unmap_and_free_tx_resource()
1985 static void e1000_clean_tx_ring(struct e1000_adapter *adapter, in e1000_clean_tx_ring() argument
1988 struct e1000_hw *hw = &adapter->hw; in e1000_clean_tx_ring()
1997 e1000_unmap_and_free_tx_resource(adapter, buffer_info); in e1000_clean_tx_ring()
2000 netdev_reset_queue(adapter->netdev); in e1000_clean_tx_ring()
2020 static void e1000_clean_all_tx_rings(struct e1000_adapter *adapter) in e1000_clean_all_tx_rings() argument
2024 for (i = 0; i < adapter->num_tx_queues; i++) in e1000_clean_all_tx_rings()
2025 e1000_clean_tx_ring(adapter, &adapter->tx_ring[i]); in e1000_clean_all_tx_rings()
2035 static void e1000_free_rx_resources(struct e1000_adapter *adapter, in e1000_free_rx_resources() argument
2038 struct pci_dev *pdev = adapter->pdev; in e1000_free_rx_resources()
2040 e1000_clean_rx_ring(adapter, rx_ring); in e1000_free_rx_resources()
2057 void e1000_free_all_rx_resources(struct e1000_adapter *adapter) in e1000_free_all_rx_resources() argument
2061 for (i = 0; i < adapter->num_rx_queues; i++) in e1000_free_all_rx_resources()
2062 e1000_free_rx_resources(adapter, &adapter->rx_ring[i]); in e1000_free_all_rx_resources()
2087 static void e1000_clean_rx_ring(struct e1000_adapter *adapter, in e1000_clean_rx_ring() argument
2090 struct e1000_hw *hw = &adapter->hw; in e1000_clean_rx_ring()
2092 struct pci_dev *pdev = adapter->pdev; in e1000_clean_rx_ring()
2099 if (adapter->clean_rx == e1000_clean_rx_irq) { in e1000_clean_rx_ring()
2102 adapter->rx_buffer_len, in e1000_clean_rx_ring()
2108 } else if (adapter->clean_rx == e1000_clean_jumbo_rx_irq) { in e1000_clean_rx_ring()
2111 adapter->rx_buffer_len, in e1000_clean_rx_ring()
2123 napi_free_frags(&adapter->napi); in e1000_clean_rx_ring()
2143 static void e1000_clean_all_rx_rings(struct e1000_adapter *adapter) in e1000_clean_all_rx_rings() argument
2147 for (i = 0; i < adapter->num_rx_queues; i++) in e1000_clean_all_rx_rings()
2148 e1000_clean_rx_ring(adapter, &adapter->rx_ring[i]); in e1000_clean_all_rx_rings()
2154 static void e1000_enter_82542_rst(struct e1000_adapter *adapter) in e1000_enter_82542_rst() argument
2156 struct e1000_hw *hw = &adapter->hw; in e1000_enter_82542_rst()
2157 struct net_device *netdev = adapter->netdev; in e1000_enter_82542_rst()
2169 e1000_clean_all_rx_rings(adapter); in e1000_enter_82542_rst()
2172 static void e1000_leave_82542_rst(struct e1000_adapter *adapter) in e1000_leave_82542_rst() argument
2174 struct e1000_hw *hw = &adapter->hw; in e1000_leave_82542_rst()
2175 struct net_device *netdev = adapter->netdev; in e1000_leave_82542_rst()
2189 struct e1000_rx_ring *ring = &adapter->rx_ring[0]; in e1000_leave_82542_rst()
2190 e1000_configure_rx(adapter); in e1000_leave_82542_rst()
2191 adapter->alloc_rx_buf(adapter, ring, E1000_DESC_UNUSED(ring)); in e1000_leave_82542_rst()
2204 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_set_mac() local
2205 struct e1000_hw *hw = &adapter->hw; in e1000_set_mac()
2214 e1000_enter_82542_rst(adapter); in e1000_set_mac()
2222 e1000_leave_82542_rst(adapter); in e1000_set_mac()
2238 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_set_rx_mode() local
2239 struct e1000_hw *hw = &adapter->hw; in e1000_set_rx_mode()
2264 if (e1000_vlan_used(adapter)) in e1000_set_rx_mode()
2280 e1000_enter_82542_rst(adapter); in e1000_set_rx_mode()
2332 e1000_leave_82542_rst(adapter); in e1000_set_rx_mode()
2346 struct e1000_adapter *adapter = container_of(work, in e1000_update_phy_info_task() local
2350 e1000_phy_get_info(&adapter->hw, &adapter->phy_info); in e1000_update_phy_info_task()
2359 struct e1000_adapter *adapter = container_of(work, in e1000_82547_tx_fifo_stall_task() local
2362 struct e1000_hw *hw = &adapter->hw; in e1000_82547_tx_fifo_stall_task()
2363 struct net_device *netdev = adapter->netdev; in e1000_82547_tx_fifo_stall_task()
2366 if (atomic_read(&adapter->tx_fifo_stall)) { in e1000_82547_tx_fifo_stall_task()
2372 ew32(TDFT, adapter->tx_head_addr); in e1000_82547_tx_fifo_stall_task()
2373 ew32(TDFH, adapter->tx_head_addr); in e1000_82547_tx_fifo_stall_task()
2374 ew32(TDFTS, adapter->tx_head_addr); in e1000_82547_tx_fifo_stall_task()
2375 ew32(TDFHS, adapter->tx_head_addr); in e1000_82547_tx_fifo_stall_task()
2379 adapter->tx_fifo_head = 0; in e1000_82547_tx_fifo_stall_task()
2380 atomic_set(&adapter->tx_fifo_stall, 0); in e1000_82547_tx_fifo_stall_task()
2382 } else if (!test_bit(__E1000_DOWN, &adapter->flags)) { in e1000_82547_tx_fifo_stall_task()
2383 schedule_delayed_work(&adapter->fifo_stall_task, 1); in e1000_82547_tx_fifo_stall_task()
2388 bool e1000_has_link(struct e1000_adapter *adapter) in e1000_has_link() argument
2390 struct e1000_hw *hw = &adapter->hw; in e1000_has_link()
2431 struct e1000_adapter *adapter = container_of(work, in e1000_watchdog() local
2434 struct e1000_hw *hw = &adapter->hw; in e1000_watchdog()
2435 struct net_device *netdev = adapter->netdev; in e1000_watchdog()
2436 struct e1000_tx_ring *txdr = adapter->tx_ring; in e1000_watchdog()
2439 link = e1000_has_link(adapter); in e1000_watchdog()
2449 &adapter->link_speed, in e1000_watchdog()
2450 &adapter->link_duplex); in e1000_watchdog()
2456 adapter->link_speed, in e1000_watchdog()
2457 adapter->link_duplex == FULL_DUPLEX ? in e1000_watchdog()
2465 adapter->tx_timeout_factor = 1; in e1000_watchdog()
2466 switch (adapter->link_speed) { in e1000_watchdog()
2469 adapter->tx_timeout_factor = 16; in e1000_watchdog()
2483 if (!test_bit(__E1000_DOWN, &adapter->flags)) in e1000_watchdog()
2484 schedule_delayed_work(&adapter->phy_info_task, in e1000_watchdog()
2486 adapter->smartspeed = 0; in e1000_watchdog()
2490 adapter->link_speed = 0; in e1000_watchdog()
2491 adapter->link_duplex = 0; in e1000_watchdog()
2496 if (!test_bit(__E1000_DOWN, &adapter->flags)) in e1000_watchdog()
2497 schedule_delayed_work(&adapter->phy_info_task, in e1000_watchdog()
2501 e1000_smartspeed(adapter); in e1000_watchdog()
2505 e1000_update_stats(adapter); in e1000_watchdog()
2507 hw->tx_packet_delta = adapter->stats.tpt - adapter->tpt_old; in e1000_watchdog()
2508 adapter->tpt_old = adapter->stats.tpt; in e1000_watchdog()
2509 hw->collision_delta = adapter->stats.colc - adapter->colc_old; in e1000_watchdog()
2510 adapter->colc_old = adapter->stats.colc; in e1000_watchdog()
2512 adapter->gorcl = adapter->stats.gorcl - adapter->gorcl_old; in e1000_watchdog()
2513 adapter->gorcl_old = adapter->stats.gorcl; in e1000_watchdog()
2514 adapter->gotcl = adapter->stats.gotcl - adapter->gotcl_old; in e1000_watchdog()
2515 adapter->gotcl_old = adapter->stats.gotcl; in e1000_watchdog()
2526 adapter->tx_timeout_count++; in e1000_watchdog()
2527 schedule_work(&adapter->reset_task); in e1000_watchdog()
2534 if (hw->mac_type >= e1000_82540 && adapter->itr_setting == 4) { in e1000_watchdog()
2539 u32 goc = (adapter->gotcl + adapter->gorcl) / 10000; in e1000_watchdog()
2540 u32 dif = (adapter->gotcl > adapter->gorcl ? in e1000_watchdog()
2541 adapter->gotcl - adapter->gorcl : in e1000_watchdog()
2542 adapter->gorcl - adapter->gotcl) / 10000; in e1000_watchdog()
2552 adapter->detect_tx_hung = true; in e1000_watchdog()
2555 if (!test_bit(__E1000_DOWN, &adapter->flags)) in e1000_watchdog()
2556 schedule_delayed_work(&adapter->watchdog_task, 2 * HZ); in e1000_watchdog()
2583 static unsigned int e1000_update_itr(struct e1000_adapter *adapter, in e1000_update_itr() argument
2587 struct e1000_hw *hw = &adapter->hw; in e1000_update_itr()
2631 static void e1000_set_itr(struct e1000_adapter *adapter) in e1000_set_itr() argument
2633 struct e1000_hw *hw = &adapter->hw; in e1000_set_itr()
2635 u32 new_itr = adapter->itr; in e1000_set_itr()
2641 if (unlikely(adapter->link_speed != SPEED_1000)) { in e1000_set_itr()
2647 adapter->tx_itr = e1000_update_itr(adapter, adapter->tx_itr, in e1000_set_itr()
2648 adapter->total_tx_packets, in e1000_set_itr()
2649 adapter->total_tx_bytes); in e1000_set_itr()
2651 if (adapter->itr_setting == 3 && adapter->tx_itr == lowest_latency) in e1000_set_itr()
2652 adapter->tx_itr = low_latency; in e1000_set_itr()
2654 adapter->rx_itr = e1000_update_itr(adapter, adapter->rx_itr, in e1000_set_itr()
2655 adapter->total_rx_packets, in e1000_set_itr()
2656 adapter->total_rx_bytes); in e1000_set_itr()
2658 if (adapter->itr_setting == 3 && adapter->rx_itr == lowest_latency) in e1000_set_itr()
2659 adapter->rx_itr = low_latency; in e1000_set_itr()
2661 current_itr = max(adapter->rx_itr, adapter->tx_itr); in e1000_set_itr()
2679 if (new_itr != adapter->itr) { in e1000_set_itr()
2684 new_itr = new_itr > adapter->itr ? in e1000_set_itr()
2685 min(adapter->itr + (new_itr >> 2), new_itr) : in e1000_set_itr()
2687 adapter->itr = new_itr; in e1000_set_itr()
2700 static int e1000_tso(struct e1000_adapter *adapter, in e1000_tso() argument
2772 static bool e1000_tx_csum(struct e1000_adapter *adapter, in e1000_tx_csum() argument
2828 static int e1000_tx_map(struct e1000_adapter *adapter, in e1000_tx_map() argument
2834 struct e1000_hw *hw = &adapter->hw; in e1000_tx_map()
2835 struct pci_dev *pdev = adapter->pdev; in e1000_tx_map()
2874 if (unlikely(adapter->pcix_82544 && in e1000_tx_map()
2928 if (unlikely(adapter->pcix_82544 && in e1000_tx_map()
2970 e1000_unmap_and_free_tx_resource(adapter, buffer_info); in e1000_tx_map()
2976 static void e1000_tx_queue(struct e1000_adapter *adapter, in e1000_tx_queue() argument
3019 tx_desc->lower.data |= cpu_to_le32(adapter->txd_cmd); in e1000_tx_queue()
3046 static int e1000_82547_fifo_workaround(struct e1000_adapter *adapter, in e1000_82547_fifo_workaround() argument
3049 u32 fifo_space = adapter->tx_fifo_size - adapter->tx_fifo_head; in e1000_82547_fifo_workaround()
3054 if (adapter->link_duplex != HALF_DUPLEX) in e1000_82547_fifo_workaround()
3057 if (atomic_read(&adapter->tx_fifo_stall)) in e1000_82547_fifo_workaround()
3061 atomic_set(&adapter->tx_fifo_stall, 1); in e1000_82547_fifo_workaround()
3066 adapter->tx_fifo_head += skb_fifo_len; in e1000_82547_fifo_workaround()
3067 if (adapter->tx_fifo_head >= adapter->tx_fifo_size) in e1000_82547_fifo_workaround()
3068 adapter->tx_fifo_head -= adapter->tx_fifo_size; in e1000_82547_fifo_workaround()
3074 struct e1000_adapter *adapter = netdev_priv(netdev); in __e1000_maybe_stop_tx() local
3075 struct e1000_tx_ring *tx_ring = adapter->tx_ring; in __e1000_maybe_stop_tx()
3092 ++adapter->restart_queue; in __e1000_maybe_stop_tx()
3108 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_xmit_frame() local
3109 struct e1000_hw *hw = &adapter->hw; in e1000_xmit_frame()
3127 tx_ring = adapter->tx_ring; in e1000_xmit_frame()
3192 if (adapter->pcix_82544) in e1000_xmit_frame()
3206 if (adapter->pcix_82544) in e1000_xmit_frame()
3216 (e1000_82547_fifo_workaround(adapter, skb)))) { in e1000_xmit_frame()
3218 if (!test_bit(__E1000_DOWN, &adapter->flags)) in e1000_xmit_frame()
3219 schedule_delayed_work(&adapter->fifo_stall_task, 1); in e1000_xmit_frame()
3231 tso = e1000_tso(adapter, tx_ring, skb, protocol); in e1000_xmit_frame()
3241 } else if (likely(e1000_tx_csum(adapter, tx_ring, skb, protocol))) in e1000_xmit_frame()
3250 count = e1000_tx_map(adapter, tx_ring, skb, first, max_per_txd, in e1000_xmit_frame()
3257 e1000_tx_queue(adapter, tx_ring, tx_flags, count); in e1000_xmit_frame()
3280 static void e1000_regdump(struct e1000_adapter *adapter) in e1000_regdump() argument
3282 struct e1000_hw *hw = &adapter->hw; in e1000_regdump()
3349 static void e1000_dump(struct e1000_adapter *adapter) in e1000_dump() argument
3352 struct e1000_tx_ring *tx_ring = adapter->tx_ring; in e1000_dump()
3353 struct e1000_rx_ring *rx_ring = adapter->rx_ring; in e1000_dump()
3356 if (!netif_msg_hw(adapter)) in e1000_dump()
3360 e1000_regdump(adapter); in e1000_dump()
3395 if (!netif_msg_tx_done(adapter)) in e1000_dump()
3437 if (!netif_msg_rx_status(adapter)) in e1000_dump()
3465 readl(adapter->hw.hw_addr + i+4), in e1000_dump()
3466 readl(adapter->hw.hw_addr + i), in e1000_dump()
3467 readl(adapter->hw.hw_addr + i+12), in e1000_dump()
3468 readl(adapter->hw.hw_addr + i+8)); in e1000_dump()
3475 readl(adapter->hw.hw_addr + i+4), in e1000_dump()
3476 readl(adapter->hw.hw_addr + i), in e1000_dump()
3477 readl(adapter->hw.hw_addr + i+12), in e1000_dump()
3478 readl(adapter->hw.hw_addr + i+8)); in e1000_dump()
3490 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_tx_timeout() local
3493 adapter->tx_timeout_count++; in e1000_tx_timeout()
3494 schedule_work(&adapter->reset_task); in e1000_tx_timeout()
3499 struct e1000_adapter *adapter = in e1000_reset_task() local
3503 e1000_reinit_locked(adapter); in e1000_reset_task()
3528 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_change_mtu() local
3529 struct e1000_hw *hw = &adapter->hw; in e1000_change_mtu()
3551 while (test_and_set_bit(__E1000_RESETTING, &adapter->flags)) in e1000_change_mtu()
3557 adapter->alloc_rx_buf = e1000_alloc_dummy_rx_buffers; in e1000_change_mtu()
3558 e1000_down(adapter); in e1000_change_mtu()
3570 adapter->rx_buffer_len = E1000_RXBUFFER_2048; in e1000_change_mtu()
3573 adapter->rx_buffer_len = E1000_RXBUFFER_16384; in e1000_change_mtu()
3575 adapter->rx_buffer_len = PAGE_SIZE; in e1000_change_mtu()
3582 adapter->rx_buffer_len = MAXIMUM_ETHERNET_VLAN_SIZE; in e1000_change_mtu()
3589 e1000_up(adapter); in e1000_change_mtu()
3591 e1000_reset(adapter); in e1000_change_mtu()
3593 clear_bit(__E1000_RESETTING, &adapter->flags); in e1000_change_mtu()
3602 void e1000_update_stats(struct e1000_adapter *adapter) in e1000_update_stats() argument
3604 struct net_device *netdev = adapter->netdev; in e1000_update_stats()
3605 struct e1000_hw *hw = &adapter->hw; in e1000_update_stats()
3606 struct pci_dev *pdev = adapter->pdev; in e1000_update_stats()
3615 if (adapter->link_speed == 0) in e1000_update_stats()
3620 spin_lock_irqsave(&adapter->stats_lock, flags); in e1000_update_stats()
3627 adapter->stats.crcerrs += er32(CRCERRS); in e1000_update_stats()
3628 adapter->stats.gprc += er32(GPRC); in e1000_update_stats()
3629 adapter->stats.gorcl += er32(GORCL); in e1000_update_stats()
3630 adapter->stats.gorch += er32(GORCH); in e1000_update_stats()
3631 adapter->stats.bprc += er32(BPRC); in e1000_update_stats()
3632 adapter->stats.mprc += er32(MPRC); in e1000_update_stats()
3633 adapter->stats.roc += er32(ROC); in e1000_update_stats()
3635 adapter->stats.prc64 += er32(PRC64); in e1000_update_stats()
3636 adapter->stats.prc127 += er32(PRC127); in e1000_update_stats()
3637 adapter->stats.prc255 += er32(PRC255); in e1000_update_stats()
3638 adapter->stats.prc511 += er32(PRC511); in e1000_update_stats()
3639 adapter->stats.prc1023 += er32(PRC1023); in e1000_update_stats()
3640 adapter->stats.prc1522 += er32(PRC1522); in e1000_update_stats()
3642 adapter->stats.symerrs += er32(SYMERRS); in e1000_update_stats()
3643 adapter->stats.mpc += er32(MPC); in e1000_update_stats()
3644 adapter->stats.scc += er32(SCC); in e1000_update_stats()
3645 adapter->stats.ecol += er32(ECOL); in e1000_update_stats()
3646 adapter->stats.mcc += er32(MCC); in e1000_update_stats()
3647 adapter->stats.latecol += er32(LATECOL); in e1000_update_stats()
3648 adapter->stats.dc += er32(DC); in e1000_update_stats()
3649 adapter->stats.sec += er32(SEC); in e1000_update_stats()
3650 adapter->stats.rlec += er32(RLEC); in e1000_update_stats()
3651 adapter->stats.xonrxc += er32(XONRXC); in e1000_update_stats()
3652 adapter->stats.xontxc += er32(XONTXC); in e1000_update_stats()
3653 adapter->stats.xoffrxc += er32(XOFFRXC); in e1000_update_stats()
3654 adapter->stats.xofftxc += er32(XOFFTXC); in e1000_update_stats()
3655 adapter->stats.fcruc += er32(FCRUC); in e1000_update_stats()
3656 adapter->stats.gptc += er32(GPTC); in e1000_update_stats()
3657 adapter->stats.gotcl += er32(GOTCL); in e1000_update_stats()
3658 adapter->stats.gotch += er32(GOTCH); in e1000_update_stats()
3659 adapter->stats.rnbc += er32(RNBC); in e1000_update_stats()
3660 adapter->stats.ruc += er32(RUC); in e1000_update_stats()
3661 adapter->stats.rfc += er32(RFC); in e1000_update_stats()
3662 adapter->stats.rjc += er32(RJC); in e1000_update_stats()
3663 adapter->stats.torl += er32(TORL); in e1000_update_stats()
3664 adapter->stats.torh += er32(TORH); in e1000_update_stats()
3665 adapter->stats.totl += er32(TOTL); in e1000_update_stats()
3666 adapter->stats.toth += er32(TOTH); in e1000_update_stats()
3667 adapter->stats.tpr += er32(TPR); in e1000_update_stats()
3669 adapter->stats.ptc64 += er32(PTC64); in e1000_update_stats()
3670 adapter->stats.ptc127 += er32(PTC127); in e1000_update_stats()
3671 adapter->stats.ptc255 += er32(PTC255); in e1000_update_stats()
3672 adapter->stats.ptc511 += er32(PTC511); in e1000_update_stats()
3673 adapter->stats.ptc1023 += er32(PTC1023); in e1000_update_stats()
3674 adapter->stats.ptc1522 += er32(PTC1522); in e1000_update_stats()
3676 adapter->stats.mptc += er32(MPTC); in e1000_update_stats()
3677 adapter->stats.bptc += er32(BPTC); in e1000_update_stats()
3682 adapter->stats.tpt += hw->tx_packet_delta; in e1000_update_stats()
3684 adapter->stats.colc += hw->collision_delta; in e1000_update_stats()
3687 adapter->stats.algnerrc += er32(ALGNERRC); in e1000_update_stats()
3688 adapter->stats.rxerrc += er32(RXERRC); in e1000_update_stats()
3689 adapter->stats.tncrs += er32(TNCRS); in e1000_update_stats()
3690 adapter->stats.cexterr += er32(CEXTERR); in e1000_update_stats()
3691 adapter->stats.tsctc += er32(TSCTC); in e1000_update_stats()
3692 adapter->stats.tsctfc += er32(TSCTFC); in e1000_update_stats()
3696 netdev->stats.multicast = adapter->stats.mprc; in e1000_update_stats()
3697 netdev->stats.collisions = adapter->stats.colc; in e1000_update_stats()
3704 netdev->stats.rx_errors = adapter->stats.rxerrc + in e1000_update_stats()
3705 adapter->stats.crcerrs + adapter->stats.algnerrc + in e1000_update_stats()
3706 adapter->stats.ruc + adapter->stats.roc + in e1000_update_stats()
3707 adapter->stats.cexterr; in e1000_update_stats()
3708 adapter->stats.rlerrc = adapter->stats.ruc + adapter->stats.roc; in e1000_update_stats()
3709 netdev->stats.rx_length_errors = adapter->stats.rlerrc; in e1000_update_stats()
3710 netdev->stats.rx_crc_errors = adapter->stats.crcerrs; in e1000_update_stats()
3711 netdev->stats.rx_frame_errors = adapter->stats.algnerrc; in e1000_update_stats()
3712 netdev->stats.rx_missed_errors = adapter->stats.mpc; in e1000_update_stats()
3715 adapter->stats.txerrc = adapter->stats.ecol + adapter->stats.latecol; in e1000_update_stats()
3716 netdev->stats.tx_errors = adapter->stats.txerrc; in e1000_update_stats()
3717 netdev->stats.tx_aborted_errors = adapter->stats.ecol; in e1000_update_stats()
3718 netdev->stats.tx_window_errors = adapter->stats.latecol; in e1000_update_stats()
3719 netdev->stats.tx_carrier_errors = adapter->stats.tncrs; in e1000_update_stats()
3721 adapter->link_duplex == FULL_DUPLEX) { in e1000_update_stats()
3723 adapter->stats.tncrs = 0; in e1000_update_stats()
3730 if ((adapter->link_speed == SPEED_1000) && in e1000_update_stats()
3733 adapter->phy_stats.idle_errors += phy_tmp; in e1000_update_stats()
3739 adapter->phy_stats.receive_errors += phy_tmp; in e1000_update_stats()
3744 adapter->stats.mgptc += er32(MGTPTC); in e1000_update_stats()
3745 adapter->stats.mgprc += er32(MGTPRC); in e1000_update_stats()
3746 adapter->stats.mgpdc += er32(MGTPDC); in e1000_update_stats()
3749 spin_unlock_irqrestore(&adapter->stats_lock, flags); in e1000_update_stats()
3760 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_intr() local
3761 struct e1000_hw *hw = &adapter->hw; in e1000_intr()
3771 if (unlikely(test_bit(__E1000_DOWN, &adapter->flags))) in e1000_intr()
3777 if (!test_bit(__E1000_DOWN, &adapter->flags)) in e1000_intr()
3778 schedule_delayed_work(&adapter->watchdog_task, 1); in e1000_intr()
3785 if (likely(napi_schedule_prep(&adapter->napi))) { in e1000_intr()
3786 adapter->total_tx_bytes = 0; in e1000_intr()
3787 adapter->total_tx_packets = 0; in e1000_intr()
3788 adapter->total_rx_bytes = 0; in e1000_intr()
3789 adapter->total_rx_packets = 0; in e1000_intr()
3790 __napi_schedule(&adapter->napi); in e1000_intr()
3795 if (!test_bit(__E1000_DOWN, &adapter->flags)) in e1000_intr()
3796 e1000_irq_enable(adapter); in e1000_intr()
3808 struct e1000_adapter *adapter = container_of(napi, struct e1000_adapter, in e1000_clean() local
3812 tx_clean_complete = e1000_clean_tx_irq(adapter, &adapter->tx_ring[0]); in e1000_clean()
3814 adapter->clean_rx(adapter, &adapter->rx_ring[0], &work_done, budget); in e1000_clean()
3821 if (likely(adapter->itr_setting & 3)) in e1000_clean()
3822 e1000_set_itr(adapter); in e1000_clean()
3824 if (!test_bit(__E1000_DOWN, &adapter->flags)) in e1000_clean()
3825 e1000_irq_enable(adapter); in e1000_clean()
3835 static bool e1000_clean_tx_irq(struct e1000_adapter *adapter, in e1000_clean_tx_irq() argument
3838 struct e1000_hw *hw = &adapter->hw; in e1000_clean_tx_irq()
3839 struct net_device *netdev = adapter->netdev; in e1000_clean_tx_irq()
3869 e1000_unmap_and_free_tx_resource(adapter, buffer_info); in e1000_clean_tx_irq()
3892 !(test_bit(__E1000_DOWN, &adapter->flags))) { in e1000_clean_tx_irq()
3894 ++adapter->restart_queue; in e1000_clean_tx_irq()
3898 if (adapter->detect_tx_hung) { in e1000_clean_tx_irq()
3902 adapter->detect_tx_hung = false; in e1000_clean_tx_irq()
3905 (adapter->tx_timeout_factor * HZ)) && in e1000_clean_tx_irq()
3920 (unsigned long)(tx_ring - adapter->tx_ring), in e1000_clean_tx_irq()
3929 e1000_dump(adapter); in e1000_clean_tx_irq()
3933 adapter->total_tx_bytes += total_tx_bytes; in e1000_clean_tx_irq()
3934 adapter->total_tx_packets += total_tx_packets; in e1000_clean_tx_irq()
3947 static void e1000_rx_checksum(struct e1000_adapter *adapter, u32 status_err, in e1000_rx_checksum() argument
3950 struct e1000_hw *hw = &adapter->hw; in e1000_rx_checksum()
3963 adapter->hw_csum_err++; in e1000_rx_checksum()
3975 adapter->hw_csum_good++; in e1000_rx_checksum()
3997 static void e1000_receive_skb(struct e1000_adapter *adapter, u8 status, in e1000_receive_skb() argument
4000 skb->protocol = eth_type_trans(skb, adapter->netdev); in e1000_receive_skb()
4007 napi_gro_receive(&adapter->napi, skb); in e1000_receive_skb()
4087 static bool e1000_tbi_should_accept(struct e1000_adapter *adapter, in e1000_tbi_should_accept() argument
4091 struct e1000_hw *hw = &adapter->hw; in e1000_tbi_should_accept()
4097 spin_lock_irqsave(&adapter->stats_lock, irq_flags); in e1000_tbi_should_accept()
4098 e1000_tbi_adjust_stats(hw, &adapter->stats, length, data); in e1000_tbi_should_accept()
4099 spin_unlock_irqrestore(&adapter->stats_lock, irq_flags); in e1000_tbi_should_accept()
4107 static struct sk_buff *e1000_alloc_rx_skb(struct e1000_adapter *adapter, in e1000_alloc_rx_skb() argument
4110 struct sk_buff *skb = napi_alloc_skb(&adapter->napi, bufsz); in e1000_alloc_rx_skb()
4113 adapter->alloc_rx_buff_failed++; in e1000_alloc_rx_skb()
4127 static bool e1000_clean_jumbo_rx_irq(struct e1000_adapter *adapter, in e1000_clean_jumbo_rx_irq() argument
4131 struct net_device *netdev = adapter->netdev; in e1000_clean_jumbo_rx_irq()
4132 struct pci_dev *pdev = adapter->pdev; in e1000_clean_jumbo_rx_irq()
4165 adapter->rx_buffer_len, DMA_FROM_DEVICE); in e1000_clean_jumbo_rx_irq()
4175 if (e1000_tbi_should_accept(adapter, status, in e1000_clean_jumbo_rx_irq()
4198 rxtop = napi_get_frags(&adapter->napi); in e1000_clean_jumbo_rx_irq()
4233 skb = e1000_alloc_rx_skb(adapter, in e1000_clean_jumbo_rx_irq()
4246 e1000_rx_checksum(adapter, in e1000_clean_jumbo_rx_irq()
4253 e1000_receive_skb(adapter, status, in e1000_clean_jumbo_rx_irq()
4257 skb = napi_get_frags(&adapter->napi); in e1000_clean_jumbo_rx_irq()
4259 adapter->alloc_rx_buff_failed++; in e1000_clean_jumbo_rx_irq()
4271 e1000_rx_checksum(adapter, in e1000_clean_jumbo_rx_irq()
4288 napi_gro_frags(&adapter->napi); in e1000_clean_jumbo_rx_irq()
4295 adapter->alloc_rx_buf(adapter, rx_ring, cleaned_count); in e1000_clean_jumbo_rx_irq()
4307 adapter->alloc_rx_buf(adapter, rx_ring, cleaned_count); in e1000_clean_jumbo_rx_irq()
4309 adapter->total_rx_packets += total_rx_packets; in e1000_clean_jumbo_rx_irq()
4310 adapter->total_rx_bytes += total_rx_bytes; in e1000_clean_jumbo_rx_irq()
4319 static struct sk_buff *e1000_copybreak(struct e1000_adapter *adapter, in e1000_copybreak() argument
4328 skb = e1000_alloc_rx_skb(adapter, length); in e1000_copybreak()
4332 dma_sync_single_for_cpu(&adapter->pdev->dev, buffer_info->dma, in e1000_copybreak()
4347 static bool e1000_clean_rx_irq(struct e1000_adapter *adapter, in e1000_clean_rx_irq() argument
4351 struct net_device *netdev = adapter->netdev; in e1000_clean_rx_irq()
4352 struct pci_dev *pdev = adapter->pdev; in e1000_clean_rx_irq()
4380 skb = e1000_copybreak(adapter, buffer_info, length, data); in e1000_clean_rx_irq()
4382 unsigned int frag_len = e1000_frag_len(adapter); in e1000_clean_rx_irq()
4386 adapter->alloc_rx_buff_failed++; in e1000_clean_rx_irq()
4392 adapter->rx_buffer_len, in e1000_clean_rx_irq()
4414 adapter->discarding = true; in e1000_clean_rx_irq()
4416 if (adapter->discarding) { in e1000_clean_rx_irq()
4421 adapter->discarding = false; in e1000_clean_rx_irq()
4426 if (e1000_tbi_should_accept(adapter, status, in e1000_clean_rx_irq()
4454 e1000_rx_checksum(adapter, in e1000_clean_rx_irq()
4459 e1000_receive_skb(adapter, status, rx_desc->special, skb); in e1000_clean_rx_irq()
4466 adapter->alloc_rx_buf(adapter, rx_ring, cleaned_count); in e1000_clean_rx_irq()
4478 adapter->alloc_rx_buf(adapter, rx_ring, cleaned_count); in e1000_clean_rx_irq()
4480 adapter->total_rx_packets += total_rx_packets; in e1000_clean_rx_irq()
4481 adapter->total_rx_bytes += total_rx_bytes; in e1000_clean_rx_irq()
4494 e1000_alloc_jumbo_rx_buffers(struct e1000_adapter *adapter, in e1000_alloc_jumbo_rx_buffers() argument
4497 struct pci_dev *pdev = adapter->pdev; in e1000_alloc_jumbo_rx_buffers()
4510 adapter->alloc_rx_buff_failed++; in e1000_alloc_jumbo_rx_buffers()
4518 adapter->rx_buffer_len, in e1000_alloc_jumbo_rx_buffers()
4524 adapter->alloc_rx_buff_failed++; in e1000_alloc_jumbo_rx_buffers()
4548 writel(i, adapter->hw.hw_addr + rx_ring->rdt); in e1000_alloc_jumbo_rx_buffers()
4556 static void e1000_alloc_rx_buffers(struct e1000_adapter *adapter, in e1000_alloc_rx_buffers() argument
4560 struct e1000_hw *hw = &adapter->hw; in e1000_alloc_rx_buffers()
4561 struct pci_dev *pdev = adapter->pdev; in e1000_alloc_rx_buffers()
4565 unsigned int bufsz = adapter->rx_buffer_len; in e1000_alloc_rx_buffers()
4576 data = e1000_alloc_frag(adapter); in e1000_alloc_rx_buffers()
4579 adapter->alloc_rx_buff_failed++; in e1000_alloc_rx_buffers()
4584 if (!e1000_check_64k_bound(adapter, data, bufsz)) { in e1000_alloc_rx_buffers()
4589 data = e1000_alloc_frag(adapter); in e1000_alloc_rx_buffers()
4593 adapter->alloc_rx_buff_failed++; in e1000_alloc_rx_buffers()
4597 if (!e1000_check_64k_bound(adapter, data, bufsz)) { in e1000_alloc_rx_buffers()
4601 adapter->alloc_rx_buff_failed++; in e1000_alloc_rx_buffers()
4610 adapter->rx_buffer_len, in e1000_alloc_rx_buffers()
4615 adapter->alloc_rx_buff_failed++; in e1000_alloc_rx_buffers()
4624 if (!e1000_check_64k_bound(adapter, in e1000_alloc_rx_buffers()
4626 adapter->rx_buffer_len)) { in e1000_alloc_rx_buffers()
4628 "%p\n", adapter->rx_buffer_len, in e1000_alloc_rx_buffers()
4632 adapter->rx_buffer_len, in e1000_alloc_rx_buffers()
4639 adapter->alloc_rx_buff_failed++; in e1000_alloc_rx_buffers()
4671 static void e1000_smartspeed(struct e1000_adapter *adapter) in e1000_smartspeed() argument
4673 struct e1000_hw *hw = &adapter->hw; in e1000_smartspeed()
4681 if (adapter->smartspeed == 0) { in e1000_smartspeed()
4694 adapter->smartspeed++; in e1000_smartspeed()
4705 } else if (adapter->smartspeed == E1000_SMARTSPEED_DOWNSHIFT) { in e1000_smartspeed()
4718 if (adapter->smartspeed++ == E1000_SMARTSPEED_MAX) in e1000_smartspeed()
4719 adapter->smartspeed = 0; in e1000_smartspeed()
4749 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_mii_ioctl() local
4750 struct e1000_hw *hw = &adapter->hw; in e1000_mii_ioctl()
4764 spin_lock_irqsave(&adapter->stats_lock, flags); in e1000_mii_ioctl()
4767 spin_unlock_irqrestore(&adapter->stats_lock, flags); in e1000_mii_ioctl()
4770 spin_unlock_irqrestore(&adapter->stats_lock, flags); in e1000_mii_ioctl()
4776 spin_lock_irqsave(&adapter->stats_lock, flags); in e1000_mii_ioctl()
4779 spin_unlock_irqrestore(&adapter->stats_lock, flags); in e1000_mii_ioctl()
4782 spin_unlock_irqrestore(&adapter->stats_lock, flags); in e1000_mii_ioctl()
4800 adapter, speed, in e1000_mii_ioctl()
4807 if (netif_running(adapter->netdev)) in e1000_mii_ioctl()
4808 e1000_reinit_locked(adapter); in e1000_mii_ioctl()
4810 e1000_reset(adapter); in e1000_mii_ioctl()
4823 if (netif_running(adapter->netdev)) in e1000_mii_ioctl()
4824 e1000_reinit_locked(adapter); in e1000_mii_ioctl()
4826 e1000_reset(adapter); in e1000_mii_ioctl()
4839 struct e1000_adapter *adapter = hw->back; in e1000_pci_set_mwi() local
4840 int ret_val = pci_set_mwi(adapter->pdev); in e1000_pci_set_mwi()
4848 struct e1000_adapter *adapter = hw->back; in e1000_pci_clear_mwi() local
4850 pci_clear_mwi(adapter->pdev); in e1000_pci_clear_mwi()
4855 struct e1000_adapter *adapter = hw->back; in e1000_pcix_get_mmrbc() local
4856 return pcix_get_mmrbc(adapter->pdev); in e1000_pcix_get_mmrbc()
4861 struct e1000_adapter *adapter = hw->back; in e1000_pcix_set_mmrbc() local
4862 pcix_set_mmrbc(adapter->pdev, mmrbc); in e1000_pcix_set_mmrbc()
4870 static bool e1000_vlan_used(struct e1000_adapter *adapter) in e1000_vlan_used() argument
4874 for_each_set_bit(vid, adapter->active_vlans, VLAN_N_VID) in e1000_vlan_used()
4879 static void __e1000_vlan_mode(struct e1000_adapter *adapter, in __e1000_vlan_mode() argument
4882 struct e1000_hw *hw = &adapter->hw; in __e1000_vlan_mode()
4895 static void e1000_vlan_filter_on_off(struct e1000_adapter *adapter, in e1000_vlan_filter_on_off() argument
4898 struct e1000_hw *hw = &adapter->hw; in e1000_vlan_filter_on_off()
4901 if (!test_bit(__E1000_DOWN, &adapter->flags)) in e1000_vlan_filter_on_off()
4902 e1000_irq_disable(adapter); in e1000_vlan_filter_on_off()
4904 __e1000_vlan_mode(adapter, adapter->netdev->features); in e1000_vlan_filter_on_off()
4909 if (!(adapter->netdev->flags & IFF_PROMISC)) in e1000_vlan_filter_on_off()
4912 e1000_update_mng_vlan(adapter); in e1000_vlan_filter_on_off()
4920 if (!test_bit(__E1000_DOWN, &adapter->flags)) in e1000_vlan_filter_on_off()
4921 e1000_irq_enable(adapter); in e1000_vlan_filter_on_off()
4927 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_vlan_mode() local
4929 if (!test_bit(__E1000_DOWN, &adapter->flags)) in e1000_vlan_mode()
4930 e1000_irq_disable(adapter); in e1000_vlan_mode()
4932 __e1000_vlan_mode(adapter, features); in e1000_vlan_mode()
4934 if (!test_bit(__E1000_DOWN, &adapter->flags)) in e1000_vlan_mode()
4935 e1000_irq_enable(adapter); in e1000_vlan_mode()
4941 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_vlan_rx_add_vid() local
4942 struct e1000_hw *hw = &adapter->hw; in e1000_vlan_rx_add_vid()
4947 (vid == adapter->mng_vlan_id)) in e1000_vlan_rx_add_vid()
4950 if (!e1000_vlan_used(adapter)) in e1000_vlan_rx_add_vid()
4951 e1000_vlan_filter_on_off(adapter, true); in e1000_vlan_rx_add_vid()
4959 set_bit(vid, adapter->active_vlans); in e1000_vlan_rx_add_vid()
4967 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_vlan_rx_kill_vid() local
4968 struct e1000_hw *hw = &adapter->hw; in e1000_vlan_rx_kill_vid()
4971 if (!test_bit(__E1000_DOWN, &adapter->flags)) in e1000_vlan_rx_kill_vid()
4972 e1000_irq_disable(adapter); in e1000_vlan_rx_kill_vid()
4973 if (!test_bit(__E1000_DOWN, &adapter->flags)) in e1000_vlan_rx_kill_vid()
4974 e1000_irq_enable(adapter); in e1000_vlan_rx_kill_vid()
4982 clear_bit(vid, adapter->active_vlans); in e1000_vlan_rx_kill_vid()
4984 if (!e1000_vlan_used(adapter)) in e1000_vlan_rx_kill_vid()
4985 e1000_vlan_filter_on_off(adapter, false); in e1000_vlan_rx_kill_vid()
4990 static void e1000_restore_vlan(struct e1000_adapter *adapter) in e1000_restore_vlan() argument
4994 if (!e1000_vlan_used(adapter)) in e1000_restore_vlan()
4997 e1000_vlan_filter_on_off(adapter, true); in e1000_restore_vlan()
4998 for_each_set_bit(vid, adapter->active_vlans, VLAN_N_VID) in e1000_restore_vlan()
4999 e1000_vlan_rx_add_vid(adapter->netdev, htons(ETH_P_8021Q), vid); in e1000_restore_vlan()
5002 int e1000_set_spd_dplx(struct e1000_adapter *adapter, u32 spd, u8 dplx) in e1000_set_spd_dplx() argument
5004 struct e1000_hw *hw = &adapter->hw; in e1000_set_spd_dplx()
5055 struct e1000_adapter *adapter = netdev_priv(netdev); in __e1000_shutdown() local
5056 struct e1000_hw *hw = &adapter->hw; in __e1000_shutdown()
5058 u32 wufc = adapter->wol; in __e1000_shutdown()
5068 while (test_bit(__E1000_RESETTING, &adapter->flags) && count--) in __e1000_shutdown()
5071 WARN_ON(test_bit(__E1000_RESETTING, &adapter->flags)); in __e1000_shutdown()
5072 e1000_down(adapter); in __e1000_shutdown()
5086 e1000_setup_rctl(adapter); in __e1000_shutdown()
5124 e1000_release_manageability(adapter); in __e1000_shutdown()
5129 if (adapter->en_mng_pt) in __e1000_shutdown()
5133 e1000_free_irq(adapter); in __e1000_shutdown()
5163 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_resume() local
5164 struct e1000_hw *hw = &adapter->hw; in e1000_resume()
5171 if (adapter->need_ioport) in e1000_resume()
5185 err = e1000_request_irq(adapter); in e1000_resume()
5190 e1000_power_up_phy(adapter); in e1000_resume()
5191 e1000_reset(adapter); in e1000_resume()
5194 e1000_init_manageability(adapter); in e1000_resume()
5197 e1000_up(adapter); in e1000_resume()
5224 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_netpoll() local
5226 disable_irq(adapter->pdev->irq); in e1000_netpoll()
5227 e1000_intr(adapter->pdev->irq, netdev); in e1000_netpoll()
5228 enable_irq(adapter->pdev->irq); in e1000_netpoll()
5244 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_io_error_detected() local
5252 e1000_down(adapter); in e1000_io_error_detected()
5269 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_io_slot_reset() local
5270 struct e1000_hw *hw = &adapter->hw; in e1000_io_slot_reset()
5273 if (adapter->need_ioport) in e1000_io_slot_reset()
5286 e1000_reset(adapter); in e1000_io_slot_reset()
5303 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_io_resume() local
5305 e1000_init_manageability(adapter); in e1000_io_resume()
5308 if (e1000_up(adapter)) { in e1000_io_resume()