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()
2092 static void e1000_clean_rx_ring(struct e1000_adapter *adapter, in e1000_clean_rx_ring() argument
2095 struct e1000_hw *hw = &adapter->hw; in e1000_clean_rx_ring()
2097 struct pci_dev *pdev = adapter->pdev; in e1000_clean_rx_ring()
2104 if (adapter->clean_rx == e1000_clean_rx_irq) { in e1000_clean_rx_ring()
2107 adapter->rx_buffer_len, in e1000_clean_rx_ring()
2113 } else if (adapter->clean_rx == e1000_clean_jumbo_rx_irq) { in e1000_clean_rx_ring()
2116 adapter->rx_buffer_len, in e1000_clean_rx_ring()
2128 napi_free_frags(&adapter->napi); in e1000_clean_rx_ring()
2148 static void e1000_clean_all_rx_rings(struct e1000_adapter *adapter) in e1000_clean_all_rx_rings() argument
2152 for (i = 0; i < adapter->num_rx_queues; i++) in e1000_clean_all_rx_rings()
2153 e1000_clean_rx_ring(adapter, &adapter->rx_ring[i]); in e1000_clean_all_rx_rings()
2159 static void e1000_enter_82542_rst(struct e1000_adapter *adapter) in e1000_enter_82542_rst() argument
2161 struct e1000_hw *hw = &adapter->hw; in e1000_enter_82542_rst()
2162 struct net_device *netdev = adapter->netdev; in e1000_enter_82542_rst()
2174 e1000_clean_all_rx_rings(adapter); in e1000_enter_82542_rst()
2177 static void e1000_leave_82542_rst(struct e1000_adapter *adapter) in e1000_leave_82542_rst() argument
2179 struct e1000_hw *hw = &adapter->hw; in e1000_leave_82542_rst()
2180 struct net_device *netdev = adapter->netdev; in e1000_leave_82542_rst()
2194 struct e1000_rx_ring *ring = &adapter->rx_ring[0]; in e1000_leave_82542_rst()
2195 e1000_configure_rx(adapter); in e1000_leave_82542_rst()
2196 adapter->alloc_rx_buf(adapter, ring, E1000_DESC_UNUSED(ring)); in e1000_leave_82542_rst()
2209 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_set_mac() local
2210 struct e1000_hw *hw = &adapter->hw; in e1000_set_mac()
2219 e1000_enter_82542_rst(adapter); in e1000_set_mac()
2227 e1000_leave_82542_rst(adapter); in e1000_set_mac()
2243 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_set_rx_mode() local
2244 struct e1000_hw *hw = &adapter->hw; in e1000_set_rx_mode()
2269 if (e1000_vlan_used(adapter)) in e1000_set_rx_mode()
2285 e1000_enter_82542_rst(adapter); in e1000_set_rx_mode()
2337 e1000_leave_82542_rst(adapter); in e1000_set_rx_mode()
2351 struct e1000_adapter *adapter = container_of(work, in e1000_update_phy_info_task() local
2355 e1000_phy_get_info(&adapter->hw, &adapter->phy_info); in e1000_update_phy_info_task()
2364 struct e1000_adapter *adapter = container_of(work, in e1000_82547_tx_fifo_stall_task() local
2367 struct e1000_hw *hw = &adapter->hw; in e1000_82547_tx_fifo_stall_task()
2368 struct net_device *netdev = adapter->netdev; in e1000_82547_tx_fifo_stall_task()
2371 if (atomic_read(&adapter->tx_fifo_stall)) { in e1000_82547_tx_fifo_stall_task()
2377 ew32(TDFT, adapter->tx_head_addr); in e1000_82547_tx_fifo_stall_task()
2378 ew32(TDFH, adapter->tx_head_addr); in e1000_82547_tx_fifo_stall_task()
2379 ew32(TDFTS, adapter->tx_head_addr); in e1000_82547_tx_fifo_stall_task()
2380 ew32(TDFHS, adapter->tx_head_addr); in e1000_82547_tx_fifo_stall_task()
2384 adapter->tx_fifo_head = 0; in e1000_82547_tx_fifo_stall_task()
2385 atomic_set(&adapter->tx_fifo_stall, 0); in e1000_82547_tx_fifo_stall_task()
2387 } else if (!test_bit(__E1000_DOWN, &adapter->flags)) { in e1000_82547_tx_fifo_stall_task()
2388 schedule_delayed_work(&adapter->fifo_stall_task, 1); in e1000_82547_tx_fifo_stall_task()
2393 bool e1000_has_link(struct e1000_adapter *adapter) in e1000_has_link() argument
2395 struct e1000_hw *hw = &adapter->hw; in e1000_has_link()
2436 struct e1000_adapter *adapter = container_of(work, in e1000_watchdog() local
2439 struct e1000_hw *hw = &adapter->hw; in e1000_watchdog()
2440 struct net_device *netdev = adapter->netdev; in e1000_watchdog()
2441 struct e1000_tx_ring *txdr = adapter->tx_ring; in e1000_watchdog()
2444 link = e1000_has_link(adapter); in e1000_watchdog()
2454 &adapter->link_speed, in e1000_watchdog()
2455 &adapter->link_duplex); in e1000_watchdog()
2461 adapter->link_speed, in e1000_watchdog()
2462 adapter->link_duplex == FULL_DUPLEX ? in e1000_watchdog()
2470 adapter->tx_timeout_factor = 1; in e1000_watchdog()
2471 switch (adapter->link_speed) { in e1000_watchdog()
2474 adapter->tx_timeout_factor = 16; in e1000_watchdog()
2488 if (!test_bit(__E1000_DOWN, &adapter->flags)) in e1000_watchdog()
2489 schedule_delayed_work(&adapter->phy_info_task, in e1000_watchdog()
2491 adapter->smartspeed = 0; in e1000_watchdog()
2495 adapter->link_speed = 0; in e1000_watchdog()
2496 adapter->link_duplex = 0; in e1000_watchdog()
2501 if (!test_bit(__E1000_DOWN, &adapter->flags)) in e1000_watchdog()
2502 schedule_delayed_work(&adapter->phy_info_task, in e1000_watchdog()
2506 e1000_smartspeed(adapter); in e1000_watchdog()
2510 e1000_update_stats(adapter); in e1000_watchdog()
2512 hw->tx_packet_delta = adapter->stats.tpt - adapter->tpt_old; in e1000_watchdog()
2513 adapter->tpt_old = adapter->stats.tpt; in e1000_watchdog()
2514 hw->collision_delta = adapter->stats.colc - adapter->colc_old; in e1000_watchdog()
2515 adapter->colc_old = adapter->stats.colc; in e1000_watchdog()
2517 adapter->gorcl = adapter->stats.gorcl - adapter->gorcl_old; in e1000_watchdog()
2518 adapter->gorcl_old = adapter->stats.gorcl; in e1000_watchdog()
2519 adapter->gotcl = adapter->stats.gotcl - adapter->gotcl_old; in e1000_watchdog()
2520 adapter->gotcl_old = adapter->stats.gotcl; in e1000_watchdog()
2531 adapter->tx_timeout_count++; in e1000_watchdog()
2532 schedule_work(&adapter->reset_task); in e1000_watchdog()
2539 if (hw->mac_type >= e1000_82540 && adapter->itr_setting == 4) { in e1000_watchdog()
2544 u32 goc = (adapter->gotcl + adapter->gorcl) / 10000; in e1000_watchdog()
2545 u32 dif = (adapter->gotcl > adapter->gorcl ? in e1000_watchdog()
2546 adapter->gotcl - adapter->gorcl : in e1000_watchdog()
2547 adapter->gorcl - adapter->gotcl) / 10000; in e1000_watchdog()
2557 adapter->detect_tx_hung = true; in e1000_watchdog()
2560 if (!test_bit(__E1000_DOWN, &adapter->flags)) in e1000_watchdog()
2561 schedule_delayed_work(&adapter->watchdog_task, 2 * HZ); in e1000_watchdog()
2588 static unsigned int e1000_update_itr(struct e1000_adapter *adapter, in e1000_update_itr() argument
2592 struct e1000_hw *hw = &adapter->hw; in e1000_update_itr()
2636 static void e1000_set_itr(struct e1000_adapter *adapter) in e1000_set_itr() argument
2638 struct e1000_hw *hw = &adapter->hw; in e1000_set_itr()
2640 u32 new_itr = adapter->itr; in e1000_set_itr()
2646 if (unlikely(adapter->link_speed != SPEED_1000)) { in e1000_set_itr()
2652 adapter->tx_itr = e1000_update_itr(adapter, adapter->tx_itr, in e1000_set_itr()
2653 adapter->total_tx_packets, in e1000_set_itr()
2654 adapter->total_tx_bytes); in e1000_set_itr()
2656 if (adapter->itr_setting == 3 && adapter->tx_itr == lowest_latency) in e1000_set_itr()
2657 adapter->tx_itr = low_latency; in e1000_set_itr()
2659 adapter->rx_itr = e1000_update_itr(adapter, adapter->rx_itr, in e1000_set_itr()
2660 adapter->total_rx_packets, in e1000_set_itr()
2661 adapter->total_rx_bytes); in e1000_set_itr()
2663 if (adapter->itr_setting == 3 && adapter->rx_itr == lowest_latency) in e1000_set_itr()
2664 adapter->rx_itr = low_latency; in e1000_set_itr()
2666 current_itr = max(adapter->rx_itr, adapter->tx_itr); in e1000_set_itr()
2684 if (new_itr != adapter->itr) { in e1000_set_itr()
2689 new_itr = new_itr > adapter->itr ? in e1000_set_itr()
2690 min(adapter->itr + (new_itr >> 2), new_itr) : in e1000_set_itr()
2692 adapter->itr = new_itr; in e1000_set_itr()
2705 static int e1000_tso(struct e1000_adapter *adapter, in e1000_tso() argument
2777 static bool e1000_tx_csum(struct e1000_adapter *adapter, in e1000_tx_csum() argument
2833 static int e1000_tx_map(struct e1000_adapter *adapter, in e1000_tx_map() argument
2839 struct e1000_hw *hw = &adapter->hw; in e1000_tx_map()
2840 struct pci_dev *pdev = adapter->pdev; in e1000_tx_map()
2879 if (unlikely(adapter->pcix_82544 && in e1000_tx_map()
2933 if (unlikely(adapter->pcix_82544 && in e1000_tx_map()
2975 e1000_unmap_and_free_tx_resource(adapter, buffer_info); in e1000_tx_map()
2981 static void e1000_tx_queue(struct e1000_adapter *adapter, in e1000_tx_queue() argument
3024 tx_desc->lower.data |= cpu_to_le32(adapter->txd_cmd); in e1000_tx_queue()
3051 static int e1000_82547_fifo_workaround(struct e1000_adapter *adapter, in e1000_82547_fifo_workaround() argument
3054 u32 fifo_space = adapter->tx_fifo_size - adapter->tx_fifo_head; in e1000_82547_fifo_workaround()
3059 if (adapter->link_duplex != HALF_DUPLEX) in e1000_82547_fifo_workaround()
3062 if (atomic_read(&adapter->tx_fifo_stall)) in e1000_82547_fifo_workaround()
3066 atomic_set(&adapter->tx_fifo_stall, 1); in e1000_82547_fifo_workaround()
3071 adapter->tx_fifo_head += skb_fifo_len; in e1000_82547_fifo_workaround()
3072 if (adapter->tx_fifo_head >= adapter->tx_fifo_size) in e1000_82547_fifo_workaround()
3073 adapter->tx_fifo_head -= adapter->tx_fifo_size; in e1000_82547_fifo_workaround()
3079 struct e1000_adapter *adapter = netdev_priv(netdev); in __e1000_maybe_stop_tx() local
3080 struct e1000_tx_ring *tx_ring = adapter->tx_ring; in __e1000_maybe_stop_tx()
3097 ++adapter->restart_queue; in __e1000_maybe_stop_tx()
3113 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_xmit_frame() local
3114 struct e1000_hw *hw = &adapter->hw; in e1000_xmit_frame()
3132 tx_ring = adapter->tx_ring; in e1000_xmit_frame()
3197 if (adapter->pcix_82544) in e1000_xmit_frame()
3211 if (adapter->pcix_82544) in e1000_xmit_frame()
3221 (e1000_82547_fifo_workaround(adapter, skb)))) { in e1000_xmit_frame()
3223 if (!test_bit(__E1000_DOWN, &adapter->flags)) in e1000_xmit_frame()
3224 schedule_delayed_work(&adapter->fifo_stall_task, 1); in e1000_xmit_frame()
3236 tso = e1000_tso(adapter, tx_ring, skb, protocol); in e1000_xmit_frame()
3246 } else if (likely(e1000_tx_csum(adapter, tx_ring, skb, protocol))) in e1000_xmit_frame()
3255 count = e1000_tx_map(adapter, tx_ring, skb, first, max_per_txd, in e1000_xmit_frame()
3262 e1000_tx_queue(adapter, tx_ring, tx_flags, count); in e1000_xmit_frame()
3285 static void e1000_regdump(struct e1000_adapter *adapter) in e1000_regdump() argument
3287 struct e1000_hw *hw = &adapter->hw; in e1000_regdump()
3354 static void e1000_dump(struct e1000_adapter *adapter) in e1000_dump() argument
3357 struct e1000_tx_ring *tx_ring = adapter->tx_ring; in e1000_dump()
3358 struct e1000_rx_ring *rx_ring = adapter->rx_ring; in e1000_dump()
3361 if (!netif_msg_hw(adapter)) in e1000_dump()
3365 e1000_regdump(adapter); in e1000_dump()
3400 if (!netif_msg_tx_done(adapter)) in e1000_dump()
3442 if (!netif_msg_rx_status(adapter)) in e1000_dump()
3470 readl(adapter->hw.hw_addr + i+4), in e1000_dump()
3471 readl(adapter->hw.hw_addr + i), in e1000_dump()
3472 readl(adapter->hw.hw_addr + i+12), in e1000_dump()
3473 readl(adapter->hw.hw_addr + i+8)); in e1000_dump()
3480 readl(adapter->hw.hw_addr + i+4), in e1000_dump()
3481 readl(adapter->hw.hw_addr + i), in e1000_dump()
3482 readl(adapter->hw.hw_addr + i+12), in e1000_dump()
3483 readl(adapter->hw.hw_addr + i+8)); in e1000_dump()
3495 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_tx_timeout() local
3498 adapter->tx_timeout_count++; in e1000_tx_timeout()
3499 schedule_work(&adapter->reset_task); in e1000_tx_timeout()
3504 struct e1000_adapter *adapter = in e1000_reset_task() local
3508 e1000_reinit_locked(adapter); in e1000_reset_task()
3533 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_change_mtu() local
3534 struct e1000_hw *hw = &adapter->hw; in e1000_change_mtu()
3556 while (test_and_set_bit(__E1000_RESETTING, &adapter->flags)) in e1000_change_mtu()
3562 adapter->alloc_rx_buf = e1000_alloc_dummy_rx_buffers; in e1000_change_mtu()
3563 e1000_down(adapter); in e1000_change_mtu()
3575 adapter->rx_buffer_len = E1000_RXBUFFER_2048; in e1000_change_mtu()
3578 adapter->rx_buffer_len = E1000_RXBUFFER_16384; in e1000_change_mtu()
3580 adapter->rx_buffer_len = PAGE_SIZE; in e1000_change_mtu()
3587 adapter->rx_buffer_len = MAXIMUM_ETHERNET_VLAN_SIZE; in e1000_change_mtu()
3594 e1000_up(adapter); in e1000_change_mtu()
3596 e1000_reset(adapter); in e1000_change_mtu()
3598 clear_bit(__E1000_RESETTING, &adapter->flags); in e1000_change_mtu()
3607 void e1000_update_stats(struct e1000_adapter *adapter) in e1000_update_stats() argument
3609 struct net_device *netdev = adapter->netdev; in e1000_update_stats()
3610 struct e1000_hw *hw = &adapter->hw; in e1000_update_stats()
3611 struct pci_dev *pdev = adapter->pdev; in e1000_update_stats()
3620 if (adapter->link_speed == 0) in e1000_update_stats()
3625 spin_lock_irqsave(&adapter->stats_lock, flags); in e1000_update_stats()
3632 adapter->stats.crcerrs += er32(CRCERRS); in e1000_update_stats()
3633 adapter->stats.gprc += er32(GPRC); in e1000_update_stats()
3634 adapter->stats.gorcl += er32(GORCL); in e1000_update_stats()
3635 adapter->stats.gorch += er32(GORCH); in e1000_update_stats()
3636 adapter->stats.bprc += er32(BPRC); in e1000_update_stats()
3637 adapter->stats.mprc += er32(MPRC); in e1000_update_stats()
3638 adapter->stats.roc += er32(ROC); in e1000_update_stats()
3640 adapter->stats.prc64 += er32(PRC64); in e1000_update_stats()
3641 adapter->stats.prc127 += er32(PRC127); in e1000_update_stats()
3642 adapter->stats.prc255 += er32(PRC255); in e1000_update_stats()
3643 adapter->stats.prc511 += er32(PRC511); in e1000_update_stats()
3644 adapter->stats.prc1023 += er32(PRC1023); in e1000_update_stats()
3645 adapter->stats.prc1522 += er32(PRC1522); in e1000_update_stats()
3647 adapter->stats.symerrs += er32(SYMERRS); in e1000_update_stats()
3648 adapter->stats.mpc += er32(MPC); in e1000_update_stats()
3649 adapter->stats.scc += er32(SCC); in e1000_update_stats()
3650 adapter->stats.ecol += er32(ECOL); in e1000_update_stats()
3651 adapter->stats.mcc += er32(MCC); in e1000_update_stats()
3652 adapter->stats.latecol += er32(LATECOL); in e1000_update_stats()
3653 adapter->stats.dc += er32(DC); in e1000_update_stats()
3654 adapter->stats.sec += er32(SEC); in e1000_update_stats()
3655 adapter->stats.rlec += er32(RLEC); in e1000_update_stats()
3656 adapter->stats.xonrxc += er32(XONRXC); in e1000_update_stats()
3657 adapter->stats.xontxc += er32(XONTXC); in e1000_update_stats()
3658 adapter->stats.xoffrxc += er32(XOFFRXC); in e1000_update_stats()
3659 adapter->stats.xofftxc += er32(XOFFTXC); in e1000_update_stats()
3660 adapter->stats.fcruc += er32(FCRUC); in e1000_update_stats()
3661 adapter->stats.gptc += er32(GPTC); in e1000_update_stats()
3662 adapter->stats.gotcl += er32(GOTCL); in e1000_update_stats()
3663 adapter->stats.gotch += er32(GOTCH); in e1000_update_stats()
3664 adapter->stats.rnbc += er32(RNBC); in e1000_update_stats()
3665 adapter->stats.ruc += er32(RUC); in e1000_update_stats()
3666 adapter->stats.rfc += er32(RFC); in e1000_update_stats()
3667 adapter->stats.rjc += er32(RJC); in e1000_update_stats()
3668 adapter->stats.torl += er32(TORL); in e1000_update_stats()
3669 adapter->stats.torh += er32(TORH); in e1000_update_stats()
3670 adapter->stats.totl += er32(TOTL); in e1000_update_stats()
3671 adapter->stats.toth += er32(TOTH); in e1000_update_stats()
3672 adapter->stats.tpr += er32(TPR); in e1000_update_stats()
3674 adapter->stats.ptc64 += er32(PTC64); in e1000_update_stats()
3675 adapter->stats.ptc127 += er32(PTC127); in e1000_update_stats()
3676 adapter->stats.ptc255 += er32(PTC255); in e1000_update_stats()
3677 adapter->stats.ptc511 += er32(PTC511); in e1000_update_stats()
3678 adapter->stats.ptc1023 += er32(PTC1023); in e1000_update_stats()
3679 adapter->stats.ptc1522 += er32(PTC1522); in e1000_update_stats()
3681 adapter->stats.mptc += er32(MPTC); in e1000_update_stats()
3682 adapter->stats.bptc += er32(BPTC); in e1000_update_stats()
3687 adapter->stats.tpt += hw->tx_packet_delta; in e1000_update_stats()
3689 adapter->stats.colc += hw->collision_delta; in e1000_update_stats()
3692 adapter->stats.algnerrc += er32(ALGNERRC); in e1000_update_stats()
3693 adapter->stats.rxerrc += er32(RXERRC); in e1000_update_stats()
3694 adapter->stats.tncrs += er32(TNCRS); in e1000_update_stats()
3695 adapter->stats.cexterr += er32(CEXTERR); in e1000_update_stats()
3696 adapter->stats.tsctc += er32(TSCTC); in e1000_update_stats()
3697 adapter->stats.tsctfc += er32(TSCTFC); in e1000_update_stats()
3701 netdev->stats.multicast = adapter->stats.mprc; in e1000_update_stats()
3702 netdev->stats.collisions = adapter->stats.colc; in e1000_update_stats()
3709 netdev->stats.rx_errors = adapter->stats.rxerrc + in e1000_update_stats()
3710 adapter->stats.crcerrs + adapter->stats.algnerrc + in e1000_update_stats()
3711 adapter->stats.ruc + adapter->stats.roc + in e1000_update_stats()
3712 adapter->stats.cexterr; in e1000_update_stats()
3713 adapter->stats.rlerrc = adapter->stats.ruc + adapter->stats.roc; in e1000_update_stats()
3714 netdev->stats.rx_length_errors = adapter->stats.rlerrc; in e1000_update_stats()
3715 netdev->stats.rx_crc_errors = adapter->stats.crcerrs; in e1000_update_stats()
3716 netdev->stats.rx_frame_errors = adapter->stats.algnerrc; in e1000_update_stats()
3717 netdev->stats.rx_missed_errors = adapter->stats.mpc; in e1000_update_stats()
3720 adapter->stats.txerrc = adapter->stats.ecol + adapter->stats.latecol; in e1000_update_stats()
3721 netdev->stats.tx_errors = adapter->stats.txerrc; in e1000_update_stats()
3722 netdev->stats.tx_aborted_errors = adapter->stats.ecol; in e1000_update_stats()
3723 netdev->stats.tx_window_errors = adapter->stats.latecol; in e1000_update_stats()
3724 netdev->stats.tx_carrier_errors = adapter->stats.tncrs; in e1000_update_stats()
3726 adapter->link_duplex == FULL_DUPLEX) { in e1000_update_stats()
3728 adapter->stats.tncrs = 0; in e1000_update_stats()
3735 if ((adapter->link_speed == SPEED_1000) && in e1000_update_stats()
3738 adapter->phy_stats.idle_errors += phy_tmp; in e1000_update_stats()
3744 adapter->phy_stats.receive_errors += phy_tmp; in e1000_update_stats()
3749 adapter->stats.mgptc += er32(MGTPTC); in e1000_update_stats()
3750 adapter->stats.mgprc += er32(MGTPRC); in e1000_update_stats()
3751 adapter->stats.mgpdc += er32(MGTPDC); in e1000_update_stats()
3754 spin_unlock_irqrestore(&adapter->stats_lock, flags); in e1000_update_stats()
3765 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_intr() local
3766 struct e1000_hw *hw = &adapter->hw; in e1000_intr()
3776 if (unlikely(test_bit(__E1000_DOWN, &adapter->flags))) in e1000_intr()
3782 if (!test_bit(__E1000_DOWN, &adapter->flags)) in e1000_intr()
3783 schedule_delayed_work(&adapter->watchdog_task, 1); in e1000_intr()
3790 if (likely(napi_schedule_prep(&adapter->napi))) { in e1000_intr()
3791 adapter->total_tx_bytes = 0; in e1000_intr()
3792 adapter->total_tx_packets = 0; in e1000_intr()
3793 adapter->total_rx_bytes = 0; in e1000_intr()
3794 adapter->total_rx_packets = 0; in e1000_intr()
3795 __napi_schedule(&adapter->napi); in e1000_intr()
3800 if (!test_bit(__E1000_DOWN, &adapter->flags)) in e1000_intr()
3801 e1000_irq_enable(adapter); in e1000_intr()
3813 struct e1000_adapter *adapter = container_of(napi, struct e1000_adapter, in e1000_clean() local
3817 tx_clean_complete = e1000_clean_tx_irq(adapter, &adapter->tx_ring[0]); in e1000_clean()
3819 adapter->clean_rx(adapter, &adapter->rx_ring[0], &work_done, budget); in e1000_clean()
3826 if (likely(adapter->itr_setting & 3)) in e1000_clean()
3827 e1000_set_itr(adapter); in e1000_clean()
3829 if (!test_bit(__E1000_DOWN, &adapter->flags)) in e1000_clean()
3830 e1000_irq_enable(adapter); in e1000_clean()
3840 static bool e1000_clean_tx_irq(struct e1000_adapter *adapter, in e1000_clean_tx_irq() argument
3843 struct e1000_hw *hw = &adapter->hw; in e1000_clean_tx_irq()
3844 struct net_device *netdev = adapter->netdev; in e1000_clean_tx_irq()
3874 e1000_unmap_and_free_tx_resource(adapter, buffer_info); in e1000_clean_tx_irq()
3897 !(test_bit(__E1000_DOWN, &adapter->flags))) { in e1000_clean_tx_irq()
3899 ++adapter->restart_queue; in e1000_clean_tx_irq()
3903 if (adapter->detect_tx_hung) { in e1000_clean_tx_irq()
3907 adapter->detect_tx_hung = false; in e1000_clean_tx_irq()
3910 (adapter->tx_timeout_factor * HZ)) && in e1000_clean_tx_irq()
3925 (unsigned long)(tx_ring - adapter->tx_ring), in e1000_clean_tx_irq()
3934 e1000_dump(adapter); in e1000_clean_tx_irq()
3938 adapter->total_tx_bytes += total_tx_bytes; in e1000_clean_tx_irq()
3939 adapter->total_tx_packets += total_tx_packets; in e1000_clean_tx_irq()
3952 static void e1000_rx_checksum(struct e1000_adapter *adapter, u32 status_err, in e1000_rx_checksum() argument
3955 struct e1000_hw *hw = &adapter->hw; in e1000_rx_checksum()
3968 adapter->hw_csum_err++; in e1000_rx_checksum()
3980 adapter->hw_csum_good++; in e1000_rx_checksum()
4002 static void e1000_receive_skb(struct e1000_adapter *adapter, u8 status, in e1000_receive_skb() argument
4005 skb->protocol = eth_type_trans(skb, adapter->netdev); in e1000_receive_skb()
4012 napi_gro_receive(&adapter->napi, skb); in e1000_receive_skb()
4092 static bool e1000_tbi_should_accept(struct e1000_adapter *adapter, in e1000_tbi_should_accept() argument
4096 struct e1000_hw *hw = &adapter->hw; in e1000_tbi_should_accept()
4102 spin_lock_irqsave(&adapter->stats_lock, irq_flags); in e1000_tbi_should_accept()
4103 e1000_tbi_adjust_stats(hw, &adapter->stats, length, data); in e1000_tbi_should_accept()
4104 spin_unlock_irqrestore(&adapter->stats_lock, irq_flags); in e1000_tbi_should_accept()
4112 static struct sk_buff *e1000_alloc_rx_skb(struct e1000_adapter *adapter, in e1000_alloc_rx_skb() argument
4115 struct sk_buff *skb = napi_alloc_skb(&adapter->napi, bufsz); in e1000_alloc_rx_skb()
4118 adapter->alloc_rx_buff_failed++; in e1000_alloc_rx_skb()
4132 static bool e1000_clean_jumbo_rx_irq(struct e1000_adapter *adapter, in e1000_clean_jumbo_rx_irq() argument
4136 struct net_device *netdev = adapter->netdev; in e1000_clean_jumbo_rx_irq()
4137 struct pci_dev *pdev = adapter->pdev; in e1000_clean_jumbo_rx_irq()
4170 adapter->rx_buffer_len, DMA_FROM_DEVICE); in e1000_clean_jumbo_rx_irq()
4180 if (e1000_tbi_should_accept(adapter, status, in e1000_clean_jumbo_rx_irq()
4203 rxtop = napi_get_frags(&adapter->napi); in e1000_clean_jumbo_rx_irq()
4238 skb = e1000_alloc_rx_skb(adapter, in e1000_clean_jumbo_rx_irq()
4251 e1000_rx_checksum(adapter, in e1000_clean_jumbo_rx_irq()
4258 e1000_receive_skb(adapter, status, in e1000_clean_jumbo_rx_irq()
4262 skb = napi_get_frags(&adapter->napi); in e1000_clean_jumbo_rx_irq()
4264 adapter->alloc_rx_buff_failed++; in e1000_clean_jumbo_rx_irq()
4276 e1000_rx_checksum(adapter, in e1000_clean_jumbo_rx_irq()
4293 napi_gro_frags(&adapter->napi); in e1000_clean_jumbo_rx_irq()
4300 adapter->alloc_rx_buf(adapter, rx_ring, cleaned_count); in e1000_clean_jumbo_rx_irq()
4312 adapter->alloc_rx_buf(adapter, rx_ring, cleaned_count); in e1000_clean_jumbo_rx_irq()
4314 adapter->total_rx_packets += total_rx_packets; in e1000_clean_jumbo_rx_irq()
4315 adapter->total_rx_bytes += total_rx_bytes; in e1000_clean_jumbo_rx_irq()
4324 static struct sk_buff *e1000_copybreak(struct e1000_adapter *adapter, in e1000_copybreak() argument
4333 skb = e1000_alloc_rx_skb(adapter, length); in e1000_copybreak()
4337 dma_sync_single_for_cpu(&adapter->pdev->dev, buffer_info->dma, in e1000_copybreak()
4352 static bool e1000_clean_rx_irq(struct e1000_adapter *adapter, in e1000_clean_rx_irq() argument
4356 struct net_device *netdev = adapter->netdev; in e1000_clean_rx_irq()
4357 struct pci_dev *pdev = adapter->pdev; in e1000_clean_rx_irq()
4385 skb = e1000_copybreak(adapter, buffer_info, length, data); in e1000_clean_rx_irq()
4387 unsigned int frag_len = e1000_frag_len(adapter); in e1000_clean_rx_irq()
4391 adapter->alloc_rx_buff_failed++; in e1000_clean_rx_irq()
4397 adapter->rx_buffer_len, in e1000_clean_rx_irq()
4419 adapter->discarding = true; in e1000_clean_rx_irq()
4421 if (adapter->discarding) { in e1000_clean_rx_irq()
4426 adapter->discarding = false; in e1000_clean_rx_irq()
4431 if (e1000_tbi_should_accept(adapter, status, in e1000_clean_rx_irq()
4459 e1000_rx_checksum(adapter, in e1000_clean_rx_irq()
4464 e1000_receive_skb(adapter, status, rx_desc->special, skb); in e1000_clean_rx_irq()
4471 adapter->alloc_rx_buf(adapter, rx_ring, cleaned_count); in e1000_clean_rx_irq()
4483 adapter->alloc_rx_buf(adapter, rx_ring, cleaned_count); in e1000_clean_rx_irq()
4485 adapter->total_rx_packets += total_rx_packets; in e1000_clean_rx_irq()
4486 adapter->total_rx_bytes += total_rx_bytes; in e1000_clean_rx_irq()
4499 e1000_alloc_jumbo_rx_buffers(struct e1000_adapter *adapter, in e1000_alloc_jumbo_rx_buffers() argument
4502 struct pci_dev *pdev = adapter->pdev; in e1000_alloc_jumbo_rx_buffers()
4515 adapter->alloc_rx_buff_failed++; in e1000_alloc_jumbo_rx_buffers()
4523 adapter->rx_buffer_len, in e1000_alloc_jumbo_rx_buffers()
4529 adapter->alloc_rx_buff_failed++; in e1000_alloc_jumbo_rx_buffers()
4553 writel(i, adapter->hw.hw_addr + rx_ring->rdt); in e1000_alloc_jumbo_rx_buffers()
4561 static void e1000_alloc_rx_buffers(struct e1000_adapter *adapter, in e1000_alloc_rx_buffers() argument
4565 struct e1000_hw *hw = &adapter->hw; in e1000_alloc_rx_buffers()
4566 struct pci_dev *pdev = adapter->pdev; in e1000_alloc_rx_buffers()
4570 unsigned int bufsz = adapter->rx_buffer_len; in e1000_alloc_rx_buffers()
4581 data = e1000_alloc_frag(adapter); in e1000_alloc_rx_buffers()
4584 adapter->alloc_rx_buff_failed++; in e1000_alloc_rx_buffers()
4589 if (!e1000_check_64k_bound(adapter, data, bufsz)) { in e1000_alloc_rx_buffers()
4594 data = e1000_alloc_frag(adapter); in e1000_alloc_rx_buffers()
4598 adapter->alloc_rx_buff_failed++; in e1000_alloc_rx_buffers()
4602 if (!e1000_check_64k_bound(adapter, data, bufsz)) { in e1000_alloc_rx_buffers()
4606 adapter->alloc_rx_buff_failed++; in e1000_alloc_rx_buffers()
4615 adapter->rx_buffer_len, in e1000_alloc_rx_buffers()
4620 adapter->alloc_rx_buff_failed++; in e1000_alloc_rx_buffers()
4629 if (!e1000_check_64k_bound(adapter, in e1000_alloc_rx_buffers()
4631 adapter->rx_buffer_len)) { in e1000_alloc_rx_buffers()
4633 "%p\n", adapter->rx_buffer_len, in e1000_alloc_rx_buffers()
4637 adapter->rx_buffer_len, in e1000_alloc_rx_buffers()
4644 adapter->alloc_rx_buff_failed++; in e1000_alloc_rx_buffers()
4676 static void e1000_smartspeed(struct e1000_adapter *adapter) in e1000_smartspeed() argument
4678 struct e1000_hw *hw = &adapter->hw; in e1000_smartspeed()
4686 if (adapter->smartspeed == 0) { in e1000_smartspeed()
4699 adapter->smartspeed++; in e1000_smartspeed()
4710 } else if (adapter->smartspeed == E1000_SMARTSPEED_DOWNSHIFT) { in e1000_smartspeed()
4723 if (adapter->smartspeed++ == E1000_SMARTSPEED_MAX) in e1000_smartspeed()
4724 adapter->smartspeed = 0; in e1000_smartspeed()
4754 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_mii_ioctl() local
4755 struct e1000_hw *hw = &adapter->hw; in e1000_mii_ioctl()
4769 spin_lock_irqsave(&adapter->stats_lock, flags); in e1000_mii_ioctl()
4772 spin_unlock_irqrestore(&adapter->stats_lock, flags); in e1000_mii_ioctl()
4775 spin_unlock_irqrestore(&adapter->stats_lock, flags); in e1000_mii_ioctl()
4781 spin_lock_irqsave(&adapter->stats_lock, flags); in e1000_mii_ioctl()
4784 spin_unlock_irqrestore(&adapter->stats_lock, flags); in e1000_mii_ioctl()
4787 spin_unlock_irqrestore(&adapter->stats_lock, flags); in e1000_mii_ioctl()
4805 adapter, speed, in e1000_mii_ioctl()
4812 if (netif_running(adapter->netdev)) in e1000_mii_ioctl()
4813 e1000_reinit_locked(adapter); in e1000_mii_ioctl()
4815 e1000_reset(adapter); in e1000_mii_ioctl()
4828 if (netif_running(adapter->netdev)) in e1000_mii_ioctl()
4829 e1000_reinit_locked(adapter); in e1000_mii_ioctl()
4831 e1000_reset(adapter); in e1000_mii_ioctl()
4844 struct e1000_adapter *adapter = hw->back; in e1000_pci_set_mwi() local
4845 int ret_val = pci_set_mwi(adapter->pdev); in e1000_pci_set_mwi()
4853 struct e1000_adapter *adapter = hw->back; in e1000_pci_clear_mwi() local
4855 pci_clear_mwi(adapter->pdev); in e1000_pci_clear_mwi()
4860 struct e1000_adapter *adapter = hw->back; in e1000_pcix_get_mmrbc() local
4861 return pcix_get_mmrbc(adapter->pdev); in e1000_pcix_get_mmrbc()
4866 struct e1000_adapter *adapter = hw->back; in e1000_pcix_set_mmrbc() local
4867 pcix_set_mmrbc(adapter->pdev, mmrbc); in e1000_pcix_set_mmrbc()
4875 static bool e1000_vlan_used(struct e1000_adapter *adapter) in e1000_vlan_used() argument
4879 for_each_set_bit(vid, adapter->active_vlans, VLAN_N_VID) in e1000_vlan_used()
4884 static void __e1000_vlan_mode(struct e1000_adapter *adapter, in __e1000_vlan_mode() argument
4887 struct e1000_hw *hw = &adapter->hw; in __e1000_vlan_mode()
4900 static void e1000_vlan_filter_on_off(struct e1000_adapter *adapter, in e1000_vlan_filter_on_off() argument
4903 struct e1000_hw *hw = &adapter->hw; in e1000_vlan_filter_on_off()
4906 if (!test_bit(__E1000_DOWN, &adapter->flags)) in e1000_vlan_filter_on_off()
4907 e1000_irq_disable(adapter); in e1000_vlan_filter_on_off()
4909 __e1000_vlan_mode(adapter, adapter->netdev->features); in e1000_vlan_filter_on_off()
4914 if (!(adapter->netdev->flags & IFF_PROMISC)) in e1000_vlan_filter_on_off()
4917 e1000_update_mng_vlan(adapter); in e1000_vlan_filter_on_off()
4925 if (!test_bit(__E1000_DOWN, &adapter->flags)) in e1000_vlan_filter_on_off()
4926 e1000_irq_enable(adapter); in e1000_vlan_filter_on_off()
4932 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_vlan_mode() local
4934 if (!test_bit(__E1000_DOWN, &adapter->flags)) in e1000_vlan_mode()
4935 e1000_irq_disable(adapter); in e1000_vlan_mode()
4937 __e1000_vlan_mode(adapter, features); in e1000_vlan_mode()
4939 if (!test_bit(__E1000_DOWN, &adapter->flags)) in e1000_vlan_mode()
4940 e1000_irq_enable(adapter); in e1000_vlan_mode()
4946 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_vlan_rx_add_vid() local
4947 struct e1000_hw *hw = &adapter->hw; in e1000_vlan_rx_add_vid()
4952 (vid == adapter->mng_vlan_id)) in e1000_vlan_rx_add_vid()
4955 if (!e1000_vlan_used(adapter)) in e1000_vlan_rx_add_vid()
4956 e1000_vlan_filter_on_off(adapter, true); in e1000_vlan_rx_add_vid()
4964 set_bit(vid, adapter->active_vlans); in e1000_vlan_rx_add_vid()
4972 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_vlan_rx_kill_vid() local
4973 struct e1000_hw *hw = &adapter->hw; in e1000_vlan_rx_kill_vid()
4976 if (!test_bit(__E1000_DOWN, &adapter->flags)) in e1000_vlan_rx_kill_vid()
4977 e1000_irq_disable(adapter); in e1000_vlan_rx_kill_vid()
4978 if (!test_bit(__E1000_DOWN, &adapter->flags)) in e1000_vlan_rx_kill_vid()
4979 e1000_irq_enable(adapter); in e1000_vlan_rx_kill_vid()
4987 clear_bit(vid, adapter->active_vlans); in e1000_vlan_rx_kill_vid()
4989 if (!e1000_vlan_used(adapter)) in e1000_vlan_rx_kill_vid()
4990 e1000_vlan_filter_on_off(adapter, false); in e1000_vlan_rx_kill_vid()
4995 static void e1000_restore_vlan(struct e1000_adapter *adapter) in e1000_restore_vlan() argument
4999 if (!e1000_vlan_used(adapter)) in e1000_restore_vlan()
5002 e1000_vlan_filter_on_off(adapter, true); in e1000_restore_vlan()
5003 for_each_set_bit(vid, adapter->active_vlans, VLAN_N_VID) in e1000_restore_vlan()
5004 e1000_vlan_rx_add_vid(adapter->netdev, htons(ETH_P_8021Q), vid); in e1000_restore_vlan()
5007 int e1000_set_spd_dplx(struct e1000_adapter *adapter, u32 spd, u8 dplx) in e1000_set_spd_dplx() argument
5009 struct e1000_hw *hw = &adapter->hw; in e1000_set_spd_dplx()
5060 struct e1000_adapter *adapter = netdev_priv(netdev); in __e1000_shutdown() local
5061 struct e1000_hw *hw = &adapter->hw; in __e1000_shutdown()
5063 u32 wufc = adapter->wol; in __e1000_shutdown()
5073 while (test_bit(__E1000_RESETTING, &adapter->flags) && count--) in __e1000_shutdown()
5076 WARN_ON(test_bit(__E1000_RESETTING, &adapter->flags)); in __e1000_shutdown()
5077 e1000_down(adapter); in __e1000_shutdown()
5091 e1000_setup_rctl(adapter); in __e1000_shutdown()
5129 e1000_release_manageability(adapter); in __e1000_shutdown()
5134 if (adapter->en_mng_pt) in __e1000_shutdown()
5138 e1000_free_irq(adapter); in __e1000_shutdown()
5168 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_resume() local
5169 struct e1000_hw *hw = &adapter->hw; in e1000_resume()
5176 if (adapter->need_ioport) in e1000_resume()
5190 err = e1000_request_irq(adapter); in e1000_resume()
5195 e1000_power_up_phy(adapter); in e1000_resume()
5196 e1000_reset(adapter); in e1000_resume()
5199 e1000_init_manageability(adapter); in e1000_resume()
5202 e1000_up(adapter); in e1000_resume()
5229 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_netpoll() local
5231 disable_irq(adapter->pdev->irq); in e1000_netpoll()
5232 e1000_intr(adapter->pdev->irq, netdev); in e1000_netpoll()
5233 enable_irq(adapter->pdev->irq); in e1000_netpoll()
5249 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_io_error_detected() local
5257 e1000_down(adapter); in e1000_io_error_detected()
5274 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_io_slot_reset() local
5275 struct e1000_hw *hw = &adapter->hw; in e1000_io_slot_reset()
5278 if (adapter->need_ioport) in e1000_io_slot_reset()
5291 e1000_reset(adapter); in e1000_io_slot_reset()
5308 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_io_resume() local
5310 e1000_init_manageability(adapter); in e1000_io_resume()
5313 if (e1000_up(adapter)) { in e1000_io_resume()