Lines Matching refs:adapter
133 if (hw->adapter->flags2 & FLAG2_PCIM2PCI_ARBITER_WA) in __ew32()
173 static void e1000e_dump_ps_pages(struct e1000_adapter *adapter, in e1000e_dump_ps_pages() argument
179 for (i = 0; i < adapter->rx_ps_pages; i++) { in e1000e_dump_ps_pages()
195 static void e1000e_dump(struct e1000_adapter *adapter) in e1000e_dump() argument
197 struct net_device *netdev = adapter->netdev; in e1000e_dump()
198 struct e1000_hw *hw = &adapter->hw; in e1000e_dump()
200 struct e1000_ring *tx_ring = adapter->tx_ring; in e1000e_dump()
207 struct e1000_ring *rx_ring = adapter->rx_ring; in e1000e_dump()
219 if (!netif_msg_hw(adapter)) in e1000e_dump()
224 dev_info(&adapter->pdev->dev, "Net device Info\n"); in e1000e_dump()
231 dev_info(&adapter->pdev->dev, "Register Dump\n"); in e1000e_dump()
242 dev_info(&adapter->pdev->dev, "Tx Ring Summary\n"); in e1000e_dump()
253 if (!netif_msg_tx_done(adapter)) in e1000e_dump()
256 dev_info(&adapter->pdev->dev, "Tx Ring Dump\n"); in e1000e_dump()
312 if (netif_msg_pktdata(adapter) && buffer_info->skb) in e1000e_dump()
320 dev_info(&adapter->pdev->dev, "Rx Ring Summary\n"); in e1000e_dump()
326 if (!netif_msg_rx_status(adapter)) in e1000e_dump()
329 dev_info(&adapter->pdev->dev, "Rx Ring Dump\n"); in e1000e_dump()
330 switch (adapter->rx_ps_pages) { in e1000e_dump()
393 if (netif_msg_pktdata(adapter)) in e1000e_dump()
394 e1000e_dump_ps_pages(adapter, in e1000e_dump()
455 if (netif_msg_pktdata(adapter) && in e1000e_dump()
461 adapter->rx_buffer_len, in e1000e_dump()
494 static void e1000e_systim_to_hwtstamp(struct e1000_adapter *adapter, in e1000e_systim_to_hwtstamp() argument
501 spin_lock_irqsave(&adapter->systim_lock, flags); in e1000e_systim_to_hwtstamp()
502 ns = timecounter_cyc2time(&adapter->tc, systim); in e1000e_systim_to_hwtstamp()
503 spin_unlock_irqrestore(&adapter->systim_lock, flags); in e1000e_systim_to_hwtstamp()
519 static void e1000e_rx_hwtstamp(struct e1000_adapter *adapter, u32 status, in e1000e_rx_hwtstamp() argument
522 struct e1000_hw *hw = &adapter->hw; in e1000e_rx_hwtstamp()
525 if (!(adapter->flags & FLAG_HAS_HW_TIMESTAMP) || in e1000e_rx_hwtstamp()
539 e1000e_systim_to_hwtstamp(adapter, skb_hwtstamps(skb), rxstmp); in e1000e_rx_hwtstamp()
541 adapter->flags2 &= ~FLAG2_CHECK_RX_HWTSTAMP; in e1000e_rx_hwtstamp()
552 static void e1000_receive_skb(struct e1000_adapter *adapter, in e1000_receive_skb() argument
558 e1000e_rx_hwtstamp(adapter, staterr, skb); in e1000_receive_skb()
565 napi_gro_receive(&adapter->napi, skb); in e1000_receive_skb()
574 static void e1000_rx_checksum(struct e1000_adapter *adapter, u32 status_err, in e1000_rx_checksum() argument
583 if (!(adapter->netdev->features & NETIF_F_RXCSUM)) in e1000_rx_checksum()
593 adapter->hw_csum_err++; in e1000_rx_checksum()
603 adapter->hw_csum_good++; in e1000_rx_checksum()
608 struct e1000_adapter *adapter = rx_ring->adapter; in e1000e_update_rdt_wa() local
609 struct e1000_hw *hw = &adapter->hw; in e1000e_update_rdt_wa()
619 schedule_work(&adapter->reset_task); in e1000e_update_rdt_wa()
625 struct e1000_adapter *adapter = tx_ring->adapter; in e1000e_update_tdt_wa() local
626 struct e1000_hw *hw = &adapter->hw; in e1000e_update_tdt_wa()
636 schedule_work(&adapter->reset_task); in e1000e_update_tdt_wa()
649 struct e1000_adapter *adapter = rx_ring->adapter; in e1000_alloc_rx_buffers() local
650 struct net_device *netdev = adapter->netdev; in e1000_alloc_rx_buffers()
651 struct pci_dev *pdev = adapter->pdev; in e1000_alloc_rx_buffers()
656 unsigned int bufsz = adapter->rx_buffer_len; in e1000_alloc_rx_buffers()
671 adapter->alloc_rx_buff_failed++; in e1000_alloc_rx_buffers()
678 adapter->rx_buffer_len, in e1000_alloc_rx_buffers()
682 adapter->rx_dma_failed++; in e1000_alloc_rx_buffers()
696 if (adapter->flags2 & FLAG2_PCIM2PCI_ARBITER_WA) in e1000_alloc_rx_buffers()
719 struct e1000_adapter *adapter = rx_ring->adapter; in e1000_alloc_rx_buffers_ps() local
720 struct net_device *netdev = adapter->netdev; in e1000_alloc_rx_buffers_ps()
721 struct pci_dev *pdev = adapter->pdev; in e1000_alloc_rx_buffers_ps()
736 if (j >= adapter->rx_ps_pages) { in e1000_alloc_rx_buffers_ps()
745 adapter->alloc_rx_buff_failed++; in e1000_alloc_rx_buffers_ps()
754 dev_err(&adapter->pdev->dev, in e1000_alloc_rx_buffers_ps()
756 adapter->rx_dma_failed++; in e1000_alloc_rx_buffers_ps()
768 skb = __netdev_alloc_skb_ip_align(netdev, adapter->rx_ps_bsize0, in e1000_alloc_rx_buffers_ps()
772 adapter->alloc_rx_buff_failed++; in e1000_alloc_rx_buffers_ps()
778 adapter->rx_ps_bsize0, in e1000_alloc_rx_buffers_ps()
782 adapter->rx_dma_failed++; in e1000_alloc_rx_buffers_ps()
798 if (adapter->flags2 & FLAG2_PCIM2PCI_ARBITER_WA) in e1000_alloc_rx_buffers_ps()
824 struct e1000_adapter *adapter = rx_ring->adapter; in e1000_alloc_jumbo_rx_buffers() local
825 struct net_device *netdev = adapter->netdev; in e1000_alloc_jumbo_rx_buffers()
826 struct pci_dev *pdev = adapter->pdev; in e1000_alloc_jumbo_rx_buffers()
846 adapter->alloc_rx_buff_failed++; in e1000_alloc_jumbo_rx_buffers()
856 adapter->alloc_rx_buff_failed++; in e1000_alloc_jumbo_rx_buffers()
867 adapter->alloc_rx_buff_failed++; in e1000_alloc_jumbo_rx_buffers()
891 if (adapter->flags2 & FLAG2_PCIM2PCI_ARBITER_WA) in e1000_alloc_jumbo_rx_buffers()
917 struct e1000_adapter *adapter = rx_ring->adapter; in e1000_clean_rx_irq() local
918 struct net_device *netdev = adapter->netdev; in e1000_clean_rx_irq()
919 struct pci_dev *pdev = adapter->pdev; in e1000_clean_rx_irq()
920 struct e1000_hw *hw = &adapter->hw; in e1000_clean_rx_irq()
958 adapter->rx_buffer_len, DMA_FROM_DEVICE); in e1000_clean_rx_irq()
970 adapter->flags2 |= FLAG2_IS_DISCARDING; in e1000_clean_rx_irq()
972 if (adapter->flags2 & FLAG2_IS_DISCARDING) { in e1000_clean_rx_irq()
978 adapter->flags2 &= ~FLAG2_IS_DISCARDING; in e1000_clean_rx_irq()
990 if (!(adapter->flags2 & FLAG2_CRC_STRIPPING)) { in e1000_clean_rx_irq()
1010 napi_alloc_skb(&adapter->napi, length); in e1000_clean_rx_irq()
1028 e1000_rx_checksum(adapter, staterr, skb); in e1000_clean_rx_irq()
1032 e1000_receive_skb(adapter, netdev, skb, staterr, in e1000_clean_rx_irq()
1040 adapter->alloc_rx_buf(rx_ring, cleaned_count, in e1000_clean_rx_irq()
1055 adapter->alloc_rx_buf(rx_ring, cleaned_count, GFP_ATOMIC); in e1000_clean_rx_irq()
1057 adapter->total_rx_bytes += total_rx_bytes; in e1000_clean_rx_irq()
1058 adapter->total_rx_packets += total_rx_packets; in e1000_clean_rx_irq()
1066 struct e1000_adapter *adapter = tx_ring->adapter; in e1000_put_txbuf() local
1070 dma_unmap_page(&adapter->pdev->dev, buffer_info->dma, in e1000_put_txbuf()
1073 dma_unmap_single(&adapter->pdev->dev, buffer_info->dma, in e1000_put_txbuf()
1089 struct e1000_adapter *adapter = container_of(work, in e1000_print_hw_hang() local
1092 struct net_device *netdev = adapter->netdev; in e1000_print_hw_hang()
1093 struct e1000_ring *tx_ring = adapter->tx_ring; in e1000_print_hw_hang()
1097 struct e1000_hw *hw = &adapter->hw; in e1000_print_hw_hang()
1101 if (test_bit(__E1000_DOWN, &adapter->state)) in e1000_print_hw_hang()
1104 if (!adapter->tx_hang_recheck && (adapter->flags2 & FLAG2_DMA_BURST)) { in e1000_print_hw_hang()
1108 ew32(TIDV, adapter->tx_int_delay | E1000_TIDV_FPD); in e1000_print_hw_hang()
1114 ew32(TIDV, adapter->tx_int_delay | E1000_TIDV_FPD); in e1000_print_hw_hang()
1117 adapter->tx_hang_recheck = true; in e1000_print_hw_hang()
1120 adapter->tx_hang_recheck = false; in e1000_print_hw_hang()
1134 pci_read_config_word(adapter->pdev, PCI_STATUS, &pci_status); in e1000_print_hw_hang()
1157 e1000e_dump(adapter); in e1000_print_hw_hang()
1174 struct e1000_adapter *adapter = container_of(work, struct e1000_adapter, in e1000e_tx_hwtstamp_work() local
1176 struct e1000_hw *hw = &adapter->hw; in e1000e_tx_hwtstamp_work()
1179 struct sk_buff *skb = adapter->tx_hwtstamp_skb; in e1000e_tx_hwtstamp_work()
1186 e1000e_systim_to_hwtstamp(adapter, &shhwtstamps, txstmp); in e1000e_tx_hwtstamp_work()
1191 adapter->tx_hwtstamp_skb = NULL; in e1000e_tx_hwtstamp_work()
1196 } else if (time_after(jiffies, adapter->tx_hwtstamp_start in e1000e_tx_hwtstamp_work()
1197 + adapter->tx_timeout_factor * HZ)) { in e1000e_tx_hwtstamp_work()
1198 dev_kfree_skb_any(adapter->tx_hwtstamp_skb); in e1000e_tx_hwtstamp_work()
1199 adapter->tx_hwtstamp_skb = NULL; in e1000e_tx_hwtstamp_work()
1200 adapter->tx_hwtstamp_timeouts++; in e1000e_tx_hwtstamp_work()
1204 schedule_work(&adapter->tx_hwtstamp_work); in e1000e_tx_hwtstamp_work()
1217 struct e1000_adapter *adapter = tx_ring->adapter; in e1000_clean_tx_irq() local
1218 struct net_device *netdev = adapter->netdev; in e1000_clean_tx_irq()
1219 struct e1000_hw *hw = &adapter->hw; in e1000_clean_tx_irq()
1277 !(test_bit(__E1000_DOWN, &adapter->state))) { in e1000_clean_tx_irq()
1279 ++adapter->restart_queue; in e1000_clean_tx_irq()
1283 if (adapter->detect_tx_hung) { in e1000_clean_tx_irq()
1287 adapter->detect_tx_hung = false; in e1000_clean_tx_irq()
1290 + (adapter->tx_timeout_factor * HZ)) && in e1000_clean_tx_irq()
1292 schedule_work(&adapter->print_hang_task); in e1000_clean_tx_irq()
1294 adapter->tx_hang_recheck = false; in e1000_clean_tx_irq()
1296 adapter->total_tx_bytes += total_tx_bytes; in e1000_clean_tx_irq()
1297 adapter->total_tx_packets += total_tx_packets; in e1000_clean_tx_irq()
1313 struct e1000_adapter *adapter = rx_ring->adapter; in e1000_clean_rx_irq_ps() local
1314 struct e1000_hw *hw = &adapter->hw; in e1000_clean_rx_irq_ps()
1316 struct net_device *netdev = adapter->netdev; in e1000_clean_rx_irq_ps()
1317 struct pci_dev *pdev = adapter->pdev; in e1000_clean_rx_irq_ps()
1353 adapter->rx_ps_bsize0, DMA_FROM_DEVICE); in e1000_clean_rx_irq_ps()
1358 adapter->flags2 |= FLAG2_IS_DISCARDING; in e1000_clean_rx_irq_ps()
1360 if (adapter->flags2 & FLAG2_IS_DISCARDING) { in e1000_clean_rx_irq_ps()
1364 adapter->flags2 &= ~FLAG2_IS_DISCARDING; in e1000_clean_rx_irq_ps()
1396 ((length + l1) <= adapter->rx_ps_bsize0)) { in e1000_clean_rx_irq_ps()
1411 if (!(adapter->flags2 & FLAG2_CRC_STRIPPING)) { in e1000_clean_rx_irq_ps()
1440 if (!(adapter->flags2 & FLAG2_CRC_STRIPPING)) { in e1000_clean_rx_irq_ps()
1449 e1000_rx_checksum(adapter, staterr, skb); in e1000_clean_rx_irq_ps()
1455 adapter->rx_hdr_split++; in e1000_clean_rx_irq_ps()
1457 e1000_receive_skb(adapter, netdev, skb, staterr, in e1000_clean_rx_irq_ps()
1466 adapter->alloc_rx_buf(rx_ring, cleaned_count, in e1000_clean_rx_irq_ps()
1481 adapter->alloc_rx_buf(rx_ring, cleaned_count, GFP_ATOMIC); in e1000_clean_rx_irq_ps()
1483 adapter->total_rx_bytes += total_rx_bytes; in e1000_clean_rx_irq_ps()
1484 adapter->total_rx_packets += total_rx_packets; in e1000_clean_rx_irq_ps()
1509 struct e1000_adapter *adapter = rx_ring->adapter; in e1000_clean_jumbo_rx_irq() local
1510 struct net_device *netdev = adapter->netdev; in e1000_clean_jumbo_rx_irq()
1511 struct pci_dev *pdev = adapter->pdev; in e1000_clean_jumbo_rx_irq()
1622 e1000_rx_checksum(adapter, staterr, skb); in e1000_clean_jumbo_rx_irq()
1637 e1000_receive_skb(adapter, netdev, skb, staterr, in e1000_clean_jumbo_rx_irq()
1645 adapter->alloc_rx_buf(rx_ring, cleaned_count, in e1000_clean_jumbo_rx_irq()
1660 adapter->alloc_rx_buf(rx_ring, cleaned_count, GFP_ATOMIC); in e1000_clean_jumbo_rx_irq()
1662 adapter->total_rx_bytes += total_rx_bytes; in e1000_clean_jumbo_rx_irq()
1663 adapter->total_rx_packets += total_rx_packets; in e1000_clean_jumbo_rx_irq()
1673 struct e1000_adapter *adapter = rx_ring->adapter; in e1000_clean_rx_ring() local
1676 struct pci_dev *pdev = adapter->pdev; in e1000_clean_rx_ring()
1683 if (adapter->clean_rx == e1000_clean_rx_irq) in e1000_clean_rx_ring()
1685 adapter->rx_buffer_len, in e1000_clean_rx_ring()
1687 else if (adapter->clean_rx == e1000_clean_jumbo_rx_irq) in e1000_clean_rx_ring()
1690 else if (adapter->clean_rx == e1000_clean_rx_irq_ps) in e1000_clean_rx_ring()
1692 adapter->rx_ps_bsize0, in e1000_clean_rx_ring()
1730 adapter->flags2 &= ~FLAG2_IS_DISCARDING; in e1000_clean_rx_ring()
1735 struct e1000_adapter *adapter = container_of(work, in e1000e_downshift_workaround() local
1739 if (test_bit(__E1000_DOWN, &adapter->state)) in e1000e_downshift_workaround()
1742 e1000e_gig_downshift_workaround_ich8lan(&adapter->hw); in e1000e_downshift_workaround()
1753 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_intr_msi() local
1754 struct e1000_hw *hw = &adapter->hw; in e1000_intr_msi()
1763 if ((adapter->flags & FLAG_LSC_GIG_SPEED_DROP) && in e1000_intr_msi()
1765 schedule_work(&adapter->downshift_task); in e1000_intr_msi()
1772 adapter->flags & FLAG_RX_NEEDS_RESTART) { in e1000_intr_msi()
1777 adapter->flags |= FLAG_RESTART_NOW; in e1000_intr_msi()
1780 if (!test_bit(__E1000_DOWN, &adapter->state)) in e1000_intr_msi()
1781 mod_timer(&adapter->watchdog_timer, jiffies + 1); in e1000_intr_msi()
1788 adapter->corr_errors += in e1000_intr_msi()
1790 adapter->uncorr_errors += in e1000_intr_msi()
1794 schedule_work(&adapter->reset_task); in e1000_intr_msi()
1800 if (napi_schedule_prep(&adapter->napi)) { in e1000_intr_msi()
1801 adapter->total_tx_bytes = 0; in e1000_intr_msi()
1802 adapter->total_tx_packets = 0; in e1000_intr_msi()
1803 adapter->total_rx_bytes = 0; in e1000_intr_msi()
1804 adapter->total_rx_packets = 0; in e1000_intr_msi()
1805 __napi_schedule(&adapter->napi); in e1000_intr_msi()
1819 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_intr() local
1820 struct e1000_hw *hw = &adapter->hw; in e1000_intr()
1823 if (!icr || test_bit(__E1000_DOWN, &adapter->state)) in e1000_intr()
1842 if ((adapter->flags & FLAG_LSC_GIG_SPEED_DROP) && in e1000_intr()
1844 schedule_work(&adapter->downshift_task); in e1000_intr()
1852 (adapter->flags & FLAG_RX_NEEDS_RESTART)) { in e1000_intr()
1856 adapter->flags |= FLAG_RESTART_NOW; in e1000_intr()
1859 if (!test_bit(__E1000_DOWN, &adapter->state)) in e1000_intr()
1860 mod_timer(&adapter->watchdog_timer, jiffies + 1); in e1000_intr()
1867 adapter->corr_errors += in e1000_intr()
1869 adapter->uncorr_errors += in e1000_intr()
1873 schedule_work(&adapter->reset_task); in e1000_intr()
1879 if (napi_schedule_prep(&adapter->napi)) { in e1000_intr()
1880 adapter->total_tx_bytes = 0; in e1000_intr()
1881 adapter->total_tx_packets = 0; in e1000_intr()
1882 adapter->total_rx_bytes = 0; in e1000_intr()
1883 adapter->total_rx_packets = 0; in e1000_intr()
1884 __napi_schedule(&adapter->napi); in e1000_intr()
1893 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_msix_other() local
1894 struct e1000_hw *hw = &adapter->hw; in e1000_msix_other()
1897 if (icr & adapter->eiac_mask) in e1000_msix_other()
1898 ew32(ICS, (icr & adapter->eiac_mask)); in e1000_msix_other()
1903 if (!test_bit(__E1000_DOWN, &adapter->state)) in e1000_msix_other()
1904 mod_timer(&adapter->watchdog_timer, jiffies + 1); in e1000_msix_other()
1907 if (!test_bit(__E1000_DOWN, &adapter->state)) in e1000_msix_other()
1916 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_intr_msix_tx() local
1917 struct e1000_hw *hw = &adapter->hw; in e1000_intr_msix_tx()
1918 struct e1000_ring *tx_ring = adapter->tx_ring; in e1000_intr_msix_tx()
1920 adapter->total_tx_bytes = 0; in e1000_intr_msix_tx()
1921 adapter->total_tx_packets = 0; in e1000_intr_msix_tx()
1927 if (!test_bit(__E1000_DOWN, &adapter->state)) in e1000_intr_msix_tx()
1928 ew32(IMS, adapter->tx_ring->ims_val); in e1000_intr_msix_tx()
1936 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_intr_msix_rx() local
1937 struct e1000_ring *rx_ring = adapter->rx_ring; in e1000_intr_msix_rx()
1950 if (napi_schedule_prep(&adapter->napi)) { in e1000_intr_msix_rx()
1951 adapter->total_rx_bytes = 0; in e1000_intr_msix_rx()
1952 adapter->total_rx_packets = 0; in e1000_intr_msix_rx()
1953 __napi_schedule(&adapter->napi); in e1000_intr_msix_rx()
1965 static void e1000_configure_msix(struct e1000_adapter *adapter) in e1000_configure_msix() argument
1967 struct e1000_hw *hw = &adapter->hw; in e1000_configure_msix()
1968 struct e1000_ring *rx_ring = adapter->rx_ring; in e1000_configure_msix()
1969 struct e1000_ring *tx_ring = adapter->tx_ring; in e1000_configure_msix()
1973 adapter->eiac_mask = 0; in e1000_configure_msix()
1985 adapter->eiac_mask |= rx_ring->ims_val; in e1000_configure_msix()
2001 adapter->eiac_mask |= tx_ring->ims_val; in e1000_configure_msix()
2025 void e1000e_reset_interrupt_capability(struct e1000_adapter *adapter) in e1000e_reset_interrupt_capability() argument
2027 if (adapter->msix_entries) { in e1000e_reset_interrupt_capability()
2028 pci_disable_msix(adapter->pdev); in e1000e_reset_interrupt_capability()
2029 kfree(adapter->msix_entries); in e1000e_reset_interrupt_capability()
2030 adapter->msix_entries = NULL; in e1000e_reset_interrupt_capability()
2031 } else if (adapter->flags & FLAG_MSI_ENABLED) { in e1000e_reset_interrupt_capability()
2032 pci_disable_msi(adapter->pdev); in e1000e_reset_interrupt_capability()
2033 adapter->flags &= ~FLAG_MSI_ENABLED; in e1000e_reset_interrupt_capability()
2044 void e1000e_set_interrupt_capability(struct e1000_adapter *adapter) in e1000e_set_interrupt_capability() argument
2049 switch (adapter->int_mode) { in e1000e_set_interrupt_capability()
2051 if (adapter->flags & FLAG_HAS_MSIX) { in e1000e_set_interrupt_capability()
2052 adapter->num_vectors = 3; /* RxQ0, TxQ0 and other */ in e1000e_set_interrupt_capability()
2053 adapter->msix_entries = kcalloc(adapter->num_vectors, in e1000e_set_interrupt_capability()
2057 if (adapter->msix_entries) { in e1000e_set_interrupt_capability()
2058 struct e1000_adapter *a = adapter; in e1000e_set_interrupt_capability()
2060 for (i = 0; i < adapter->num_vectors; i++) in e1000e_set_interrupt_capability()
2061 adapter->msix_entries[i].entry = i; in e1000e_set_interrupt_capability()
2072 e1000e_reset_interrupt_capability(adapter); in e1000e_set_interrupt_capability()
2074 adapter->int_mode = E1000E_INT_MODE_MSI; in e1000e_set_interrupt_capability()
2077 if (!pci_enable_msi(adapter->pdev)) { in e1000e_set_interrupt_capability()
2078 adapter->flags |= FLAG_MSI_ENABLED; in e1000e_set_interrupt_capability()
2080 adapter->int_mode = E1000E_INT_MODE_LEGACY; in e1000e_set_interrupt_capability()
2090 adapter->num_vectors = 1; in e1000e_set_interrupt_capability()
2100 static int e1000_request_msix(struct e1000_adapter *adapter) in e1000_request_msix() argument
2102 struct net_device *netdev = adapter->netdev; in e1000_request_msix()
2106 snprintf(adapter->rx_ring->name, in e1000_request_msix()
2107 sizeof(adapter->rx_ring->name) - 1, in e1000_request_msix()
2110 memcpy(adapter->rx_ring->name, netdev->name, IFNAMSIZ); in e1000_request_msix()
2111 err = request_irq(adapter->msix_entries[vector].vector, in e1000_request_msix()
2112 e1000_intr_msix_rx, 0, adapter->rx_ring->name, in e1000_request_msix()
2116 adapter->rx_ring->itr_register = adapter->hw.hw_addr + in e1000_request_msix()
2118 adapter->rx_ring->itr_val = adapter->itr; in e1000_request_msix()
2122 snprintf(adapter->tx_ring->name, in e1000_request_msix()
2123 sizeof(adapter->tx_ring->name) - 1, in e1000_request_msix()
2126 memcpy(adapter->tx_ring->name, netdev->name, IFNAMSIZ); in e1000_request_msix()
2127 err = request_irq(adapter->msix_entries[vector].vector, in e1000_request_msix()
2128 e1000_intr_msix_tx, 0, adapter->tx_ring->name, in e1000_request_msix()
2132 adapter->tx_ring->itr_register = adapter->hw.hw_addr + in e1000_request_msix()
2134 adapter->tx_ring->itr_val = adapter->itr; in e1000_request_msix()
2137 err = request_irq(adapter->msix_entries[vector].vector, in e1000_request_msix()
2142 e1000_configure_msix(adapter); in e1000_request_msix()
2154 static int e1000_request_irq(struct e1000_adapter *adapter) in e1000_request_irq() argument
2156 struct net_device *netdev = adapter->netdev; in e1000_request_irq()
2159 if (adapter->msix_entries) { in e1000_request_irq()
2160 err = e1000_request_msix(adapter); in e1000_request_irq()
2164 e1000e_reset_interrupt_capability(adapter); in e1000_request_irq()
2165 adapter->int_mode = E1000E_INT_MODE_MSI; in e1000_request_irq()
2166 e1000e_set_interrupt_capability(adapter); in e1000_request_irq()
2168 if (adapter->flags & FLAG_MSI_ENABLED) { in e1000_request_irq()
2169 err = request_irq(adapter->pdev->irq, e1000_intr_msi, 0, in e1000_request_irq()
2175 e1000e_reset_interrupt_capability(adapter); in e1000_request_irq()
2176 adapter->int_mode = E1000E_INT_MODE_LEGACY; in e1000_request_irq()
2179 err = request_irq(adapter->pdev->irq, e1000_intr, IRQF_SHARED, in e1000_request_irq()
2187 static void e1000_free_irq(struct e1000_adapter *adapter) in e1000_free_irq() argument
2189 struct net_device *netdev = adapter->netdev; in e1000_free_irq()
2191 if (adapter->msix_entries) { in e1000_free_irq()
2194 free_irq(adapter->msix_entries[vector].vector, netdev); in e1000_free_irq()
2197 free_irq(adapter->msix_entries[vector].vector, netdev); in e1000_free_irq()
2201 free_irq(adapter->msix_entries[vector].vector, netdev); in e1000_free_irq()
2205 free_irq(adapter->pdev->irq, netdev); in e1000_free_irq()
2212 static void e1000_irq_disable(struct e1000_adapter *adapter) in e1000_irq_disable() argument
2214 struct e1000_hw *hw = &adapter->hw; in e1000_irq_disable()
2217 if (adapter->msix_entries) in e1000_irq_disable()
2221 if (adapter->msix_entries) { in e1000_irq_disable()
2224 for (i = 0; i < adapter->num_vectors; i++) in e1000_irq_disable()
2225 synchronize_irq(adapter->msix_entries[i].vector); in e1000_irq_disable()
2227 synchronize_irq(adapter->pdev->irq); in e1000_irq_disable()
2235 static void e1000_irq_enable(struct e1000_adapter *adapter) in e1000_irq_enable() argument
2237 struct e1000_hw *hw = &adapter->hw; in e1000_irq_enable()
2239 if (adapter->msix_entries) { in e1000_irq_enable()
2240 ew32(EIAC_82574, adapter->eiac_mask & E1000_EIAC_MASK_82574); in e1000_irq_enable()
2241 ew32(IMS, adapter->eiac_mask | E1000_IMS_OTHER | in e1000_irq_enable()
2260 void e1000e_get_hw_control(struct e1000_adapter *adapter) in e1000e_get_hw_control() argument
2262 struct e1000_hw *hw = &adapter->hw; in e1000e_get_hw_control()
2267 if (adapter->flags & FLAG_HAS_SWSM_ON_LOAD) { in e1000e_get_hw_control()
2270 } else if (adapter->flags & FLAG_HAS_CTRLEXT_ON_LOAD) { in e1000e_get_hw_control()
2286 void e1000e_release_hw_control(struct e1000_adapter *adapter) in e1000e_release_hw_control() argument
2288 struct e1000_hw *hw = &adapter->hw; in e1000e_release_hw_control()
2293 if (adapter->flags & FLAG_HAS_SWSM_ON_LOAD) { in e1000e_release_hw_control()
2296 } else if (adapter->flags & FLAG_HAS_CTRLEXT_ON_LOAD) { in e1000e_release_hw_control()
2307 static int e1000_alloc_ring_dma(struct e1000_adapter *adapter, in e1000_alloc_ring_dma() argument
2310 struct pci_dev *pdev = adapter->pdev; in e1000_alloc_ring_dma()
2328 struct e1000_adapter *adapter = tx_ring->adapter; in e1000e_setup_tx_resources() local
2340 err = e1000_alloc_ring_dma(adapter, tx_ring); in e1000e_setup_tx_resources()
2362 struct e1000_adapter *adapter = rx_ring->adapter; in e1000e_setup_rx_resources() local
2386 err = e1000_alloc_ring_dma(adapter, rx_ring); in e1000e_setup_rx_resources()
2413 struct e1000_adapter *adapter = tx_ring->adapter; in e1000_clean_tx_ring() local
2423 netdev_reset_queue(adapter->netdev); in e1000_clean_tx_ring()
2441 struct e1000_adapter *adapter = tx_ring->adapter; in e1000e_free_tx_resources() local
2442 struct pci_dev *pdev = adapter->pdev; in e1000e_free_tx_resources()
2462 struct e1000_adapter *adapter = rx_ring->adapter; in e1000e_free_rx_resources() local
2463 struct pci_dev *pdev = adapter->pdev; in e1000e_free_rx_resources()
2537 static void e1000_set_itr(struct e1000_adapter *adapter) in e1000_set_itr() argument
2540 u32 new_itr = adapter->itr; in e1000_set_itr()
2543 if (adapter->link_speed != SPEED_1000) { in e1000_set_itr()
2548 if (adapter->flags2 & FLAG2_DISABLE_AIM) { in e1000_set_itr()
2553 adapter->tx_itr = e1000_update_itr(adapter->tx_itr, in e1000_set_itr()
2554 adapter->total_tx_packets, in e1000_set_itr()
2555 adapter->total_tx_bytes); in e1000_set_itr()
2557 if (adapter->itr_setting == 3 && adapter->tx_itr == lowest_latency) in e1000_set_itr()
2558 adapter->tx_itr = low_latency; in e1000_set_itr()
2560 adapter->rx_itr = e1000_update_itr(adapter->rx_itr, in e1000_set_itr()
2561 adapter->total_rx_packets, in e1000_set_itr()
2562 adapter->total_rx_bytes); in e1000_set_itr()
2564 if (adapter->itr_setting == 3 && adapter->rx_itr == lowest_latency) in e1000_set_itr()
2565 adapter->rx_itr = low_latency; in e1000_set_itr()
2567 current_itr = max(adapter->rx_itr, adapter->tx_itr); in e1000_set_itr()
2585 if (new_itr != adapter->itr) { in e1000_set_itr()
2590 new_itr = new_itr > adapter->itr ? in e1000_set_itr()
2591 min(adapter->itr + (new_itr >> 2), new_itr) : new_itr; in e1000_set_itr()
2592 adapter->itr = new_itr; in e1000_set_itr()
2593 adapter->rx_ring->itr_val = new_itr; in e1000_set_itr()
2594 if (adapter->msix_entries) in e1000_set_itr()
2595 adapter->rx_ring->set_itr = 1; in e1000_set_itr()
2597 e1000e_write_itr(adapter, new_itr); in e1000_set_itr()
2610 void e1000e_write_itr(struct e1000_adapter *adapter, u32 itr) in e1000e_write_itr() argument
2612 struct e1000_hw *hw = &adapter->hw; in e1000e_write_itr()
2615 if (adapter->msix_entries) { in e1000e_write_itr()
2618 for (vector = 0; vector < adapter->num_vectors; vector++) in e1000e_write_itr()
2629 static int e1000_alloc_queues(struct e1000_adapter *adapter) in e1000_alloc_queues() argument
2633 adapter->tx_ring = kzalloc(size, GFP_KERNEL); in e1000_alloc_queues()
2634 if (!adapter->tx_ring) in e1000_alloc_queues()
2636 adapter->tx_ring->count = adapter->tx_ring_count; in e1000_alloc_queues()
2637 adapter->tx_ring->adapter = adapter; in e1000_alloc_queues()
2639 adapter->rx_ring = kzalloc(size, GFP_KERNEL); in e1000_alloc_queues()
2640 if (!adapter->rx_ring) in e1000_alloc_queues()
2642 adapter->rx_ring->count = adapter->rx_ring_count; in e1000_alloc_queues()
2643 adapter->rx_ring->adapter = adapter; in e1000_alloc_queues()
2648 kfree(adapter->rx_ring); in e1000_alloc_queues()
2649 kfree(adapter->tx_ring); in e1000_alloc_queues()
2660 struct e1000_adapter *adapter = container_of(napi, struct e1000_adapter, in e1000e_poll() local
2662 struct e1000_hw *hw = &adapter->hw; in e1000e_poll()
2663 struct net_device *poll_dev = adapter->netdev; in e1000e_poll()
2666 adapter = netdev_priv(poll_dev); in e1000e_poll()
2668 if (!adapter->msix_entries || in e1000e_poll()
2669 (adapter->rx_ring->ims_val & adapter->tx_ring->ims_val)) in e1000e_poll()
2670 tx_cleaned = e1000_clean_tx_irq(adapter->tx_ring); in e1000e_poll()
2672 adapter->clean_rx(adapter->rx_ring, &work_done, budget); in e1000e_poll()
2681 if (adapter->itr_setting & 3) in e1000e_poll()
2682 e1000_set_itr(adapter); in e1000e_poll()
2683 if (!test_bit(__E1000_DOWN, &adapter->state)) { in e1000e_poll()
2684 if (adapter->msix_entries) in e1000e_poll()
2685 ew32(IMS, adapter->rx_ring->ims_val); in e1000e_poll()
2687 e1000_irq_enable(adapter); in e1000e_poll()
2697 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_vlan_rx_add_vid() local
2698 struct e1000_hw *hw = &adapter->hw; in e1000_vlan_rx_add_vid()
2702 if ((adapter->hw.mng_cookie.status & in e1000_vlan_rx_add_vid()
2704 (vid == adapter->mng_vlan_id)) in e1000_vlan_rx_add_vid()
2708 if (adapter->flags & FLAG_HAS_HW_VLAN_FILTER) { in e1000_vlan_rx_add_vid()
2715 set_bit(vid, adapter->active_vlans); in e1000_vlan_rx_add_vid()
2723 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_vlan_rx_kill_vid() local
2724 struct e1000_hw *hw = &adapter->hw; in e1000_vlan_rx_kill_vid()
2727 if ((adapter->hw.mng_cookie.status & in e1000_vlan_rx_kill_vid()
2729 (vid == adapter->mng_vlan_id)) { in e1000_vlan_rx_kill_vid()
2731 e1000e_release_hw_control(adapter); in e1000_vlan_rx_kill_vid()
2736 if (adapter->flags & FLAG_HAS_HW_VLAN_FILTER) { in e1000_vlan_rx_kill_vid()
2743 clear_bit(vid, adapter->active_vlans); in e1000_vlan_rx_kill_vid()
2752 static void e1000e_vlan_filter_disable(struct e1000_adapter *adapter) in e1000e_vlan_filter_disable() argument
2754 struct net_device *netdev = adapter->netdev; in e1000e_vlan_filter_disable()
2755 struct e1000_hw *hw = &adapter->hw; in e1000e_vlan_filter_disable()
2758 if (adapter->flags & FLAG_HAS_HW_VLAN_FILTER) { in e1000e_vlan_filter_disable()
2764 if (adapter->mng_vlan_id != (u16)E1000_MNG_VLAN_NONE) { in e1000e_vlan_filter_disable()
2766 adapter->mng_vlan_id); in e1000e_vlan_filter_disable()
2767 adapter->mng_vlan_id = E1000_MNG_VLAN_NONE; in e1000e_vlan_filter_disable()
2776 static void e1000e_vlan_filter_enable(struct e1000_adapter *adapter) in e1000e_vlan_filter_enable() argument
2778 struct e1000_hw *hw = &adapter->hw; in e1000e_vlan_filter_enable()
2781 if (adapter->flags & FLAG_HAS_HW_VLAN_FILTER) { in e1000e_vlan_filter_enable()
2794 static void e1000e_vlan_strip_disable(struct e1000_adapter *adapter) in e1000e_vlan_strip_disable() argument
2796 struct e1000_hw *hw = &adapter->hw; in e1000e_vlan_strip_disable()
2809 static void e1000e_vlan_strip_enable(struct e1000_adapter *adapter) in e1000e_vlan_strip_enable() argument
2811 struct e1000_hw *hw = &adapter->hw; in e1000e_vlan_strip_enable()
2820 static void e1000_update_mng_vlan(struct e1000_adapter *adapter) in e1000_update_mng_vlan() argument
2822 struct net_device *netdev = adapter->netdev; in e1000_update_mng_vlan()
2823 u16 vid = adapter->hw.mng_cookie.vlan_id; in e1000_update_mng_vlan()
2824 u16 old_vid = adapter->mng_vlan_id; in e1000_update_mng_vlan()
2826 if (adapter->hw.mng_cookie.status & E1000_MNG_DHCP_COOKIE_STATUS_VLAN) { in e1000_update_mng_vlan()
2828 adapter->mng_vlan_id = vid; in e1000_update_mng_vlan()
2835 static void e1000_restore_vlan(struct e1000_adapter *adapter) in e1000_restore_vlan() argument
2839 e1000_vlan_rx_add_vid(adapter->netdev, htons(ETH_P_8021Q), 0); in e1000_restore_vlan()
2841 for_each_set_bit(vid, adapter->active_vlans, VLAN_N_VID) in e1000_restore_vlan()
2842 e1000_vlan_rx_add_vid(adapter->netdev, htons(ETH_P_8021Q), vid); in e1000_restore_vlan()
2845 static void e1000_init_manageability_pt(struct e1000_adapter *adapter) in e1000_init_manageability_pt() argument
2847 struct e1000_hw *hw = &adapter->hw; in e1000_init_manageability_pt()
2850 if (!(adapter->flags & FLAG_MNG_PT_ENABLED)) in e1000_init_manageability_pt()
2913 static void e1000_configure_tx(struct e1000_adapter *adapter) in e1000_configure_tx() argument
2915 struct e1000_hw *hw = &adapter->hw; in e1000_configure_tx()
2916 struct e1000_ring *tx_ring = adapter->tx_ring; in e1000_configure_tx()
2928 tx_ring->head = adapter->hw.hw_addr + E1000_TDH(0); in e1000_configure_tx()
2929 tx_ring->tail = adapter->hw.hw_addr + E1000_TDT(0); in e1000_configure_tx()
2931 if (adapter->flags2 & FLAG2_PCIM2PCI_ARBITER_WA) in e1000_configure_tx()
2935 ew32(TIDV, adapter->tx_int_delay); in e1000_configure_tx()
2937 ew32(TADV, adapter->tx_abs_int_delay); in e1000_configure_tx()
2939 if (adapter->flags2 & FLAG2_DMA_BURST) { in e1000_configure_tx()
2965 if (adapter->flags & FLAG_TARC_SPEED_MODE_BIT) { in e1000_configure_tx()
2976 if (adapter->flags & FLAG_TARC_SET_BIT_ZERO) { in e1000_configure_tx()
2986 adapter->txd_cmd = E1000_TXD_CMD_EOP | E1000_TXD_CMD_IFCS; in e1000_configure_tx()
2989 if (adapter->tx_int_delay) in e1000_configure_tx()
2990 adapter->txd_cmd |= E1000_TXD_CMD_IDE; in e1000_configure_tx()
2993 adapter->txd_cmd |= E1000_TXD_CMD_RS; in e1000_configure_tx()
3025 static void e1000_setup_rctl(struct e1000_adapter *adapter) in e1000_setup_rctl() argument
3027 struct e1000_hw *hw = &adapter->hw; in e1000_setup_rctl()
3038 if (adapter->netdev->mtu > ETH_DATA_LEN) in e1000_setup_rctl()
3052 (adapter->hw.mac.mc_filter_type << E1000_RCTL_MO_SHIFT); in e1000_setup_rctl()
3058 if (adapter->netdev->mtu <= ETH_DATA_LEN) in e1000_setup_rctl()
3067 if (adapter->flags2 & FLAG2_CRC_STRIPPING) in e1000_setup_rctl()
3090 switch (adapter->rx_buffer_len) { in e1000_setup_rctl()
3126 pages = PAGE_USE_COUNT(adapter->netdev->mtu); in e1000_setup_rctl()
3128 adapter->rx_ps_pages = pages; in e1000_setup_rctl()
3130 adapter->rx_ps_pages = 0; in e1000_setup_rctl()
3132 if (adapter->rx_ps_pages) { in e1000_setup_rctl()
3138 psrctl |= adapter->rx_ps_bsize0 >> E1000_PSRCTL_BSIZE0_SHIFT; in e1000_setup_rctl()
3140 switch (adapter->rx_ps_pages) { in e1000_setup_rctl()
3156 if (adapter->netdev->features & NETIF_F_RXALL) { in e1000_setup_rctl()
3174 adapter->flags &= ~FLAG_RESTART_NOW; in e1000_setup_rctl()
3183 static void e1000_configure_rx(struct e1000_adapter *adapter) in e1000_configure_rx() argument
3185 struct e1000_hw *hw = &adapter->hw; in e1000_configure_rx()
3186 struct e1000_ring *rx_ring = adapter->rx_ring; in e1000_configure_rx()
3190 if (adapter->rx_ps_pages) { in e1000_configure_rx()
3194 adapter->clean_rx = e1000_clean_rx_irq_ps; in e1000_configure_rx()
3195 adapter->alloc_rx_buf = e1000_alloc_rx_buffers_ps; in e1000_configure_rx()
3196 } else if (adapter->netdev->mtu > ETH_FRAME_LEN + ETH_FCS_LEN) { in e1000_configure_rx()
3198 adapter->clean_rx = e1000_clean_jumbo_rx_irq; in e1000_configure_rx()
3199 adapter->alloc_rx_buf = e1000_alloc_jumbo_rx_buffers; in e1000_configure_rx()
3202 adapter->clean_rx = e1000_clean_rx_irq; in e1000_configure_rx()
3203 adapter->alloc_rx_buf = e1000_alloc_rx_buffers; in e1000_configure_rx()
3208 if (!(adapter->flags2 & FLAG2_NO_DISABLE_RX)) in e1000_configure_rx()
3213 if (adapter->flags2 & FLAG2_DMA_BURST) { in e1000_configure_rx()
3227 ew32(RDTR, adapter->rx_int_delay); in e1000_configure_rx()
3230 ew32(RADV, adapter->rx_abs_int_delay); in e1000_configure_rx()
3231 if ((adapter->itr_setting != 0) && (adapter->itr != 0)) in e1000_configure_rx()
3232 e1000e_write_itr(adapter, adapter->itr); in e1000_configure_rx()
3250 rx_ring->head = adapter->hw.hw_addr + E1000_RDH(0); in e1000_configure_rx()
3251 rx_ring->tail = adapter->hw.hw_addr + E1000_RDT(0); in e1000_configure_rx()
3253 if (adapter->flags2 & FLAG2_PCIM2PCI_ARBITER_WA) in e1000_configure_rx()
3258 if (adapter->netdev->features & NETIF_F_RXCSUM) in e1000_configure_rx()
3267 if (adapter->netdev->mtu > ETH_DATA_LEN) { in e1000_configure_rx()
3270 adapter->max_frame_size) * 8 / 1000; in e1000_configure_rx()
3272 if (adapter->flags & FLAG_IS_ICH) { in e1000_configure_rx()
3278 dev_info(&adapter->pdev->dev, in e1000_configure_rx()
3280 cpu_latency_qos_update_request(&adapter->pm_qos_req, lat); in e1000_configure_rx()
3282 cpu_latency_qos_update_request(&adapter->pm_qos_req, in e1000_configure_rx()
3301 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_write_mc_addr_list() local
3302 struct e1000_hw *hw = &adapter->hw; in e1000e_write_mc_addr_list()
3339 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_write_uc_addr_list() local
3340 struct e1000_hw *hw = &adapter->hw; in e1000e_write_uc_addr_list()
3350 if (adapter->flags & FLAG_RESET_OVERWRITES_LAA) in e1000e_write_uc_addr_list()
3396 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_set_rx_mode() local
3397 struct e1000_hw *hw = &adapter->hw; in e1000e_set_rx_mode()
3412 e1000e_vlan_filter_disable(adapter); in e1000e_set_rx_mode()
3427 e1000e_vlan_filter_enable(adapter); in e1000e_set_rx_mode()
3440 e1000e_vlan_strip_enable(adapter); in e1000e_set_rx_mode()
3442 e1000e_vlan_strip_disable(adapter); in e1000e_set_rx_mode()
3445 static void e1000e_setup_rss_hash(struct e1000_adapter *adapter) in e1000e_setup_rss_hash() argument
3447 struct e1000_hw *hw = &adapter->hw; in e1000e_setup_rss_hash()
3485 s32 e1000e_get_base_timinca(struct e1000_adapter *adapter, u32 *timinca) in e1000e_get_base_timinca() argument
3487 struct e1000_hw *hw = &adapter->hw; in e1000e_get_base_timinca()
3510 adapter->cc.shift = shift + INCPERIOD_SHIFT_96MHZ; in e1000e_get_base_timinca()
3518 adapter->cc.shift = shift + INCPERIOD_SHIFT_96MHZ; in e1000e_get_base_timinca()
3524 adapter->cc.shift = shift; in e1000e_get_base_timinca()
3532 adapter->cc.shift = shift; in e1000e_get_base_timinca()
3543 adapter->cc.shift = shift; in e1000e_get_base_timinca()
3549 adapter->cc.shift = shift; in e1000e_get_base_timinca()
3561 adapter->cc.shift = shift; in e1000e_get_base_timinca()
3569 adapter->cc.shift = shift; in e1000e_get_base_timinca()
3598 static int e1000e_config_hwtstamp(struct e1000_adapter *adapter, in e1000e_config_hwtstamp() argument
3602 struct e1000_hw *hw = &adapter->hw; in e1000e_config_hwtstamp()
3611 if (!(adapter->flags & FLAG_HAS_HW_TIMESTAMP)) { in e1000e_config_hwtstamp()
3701 adapter->hwtstamp_config = *config; in e1000e_config_hwtstamp()
3756 static void e1000_configure(struct e1000_adapter *adapter) in e1000_configure() argument
3758 struct e1000_ring *rx_ring = adapter->rx_ring; in e1000_configure()
3760 e1000e_set_rx_mode(adapter->netdev); in e1000_configure()
3762 e1000_restore_vlan(adapter); in e1000_configure()
3763 e1000_init_manageability_pt(adapter); in e1000_configure()
3765 e1000_configure_tx(adapter); in e1000_configure()
3767 if (adapter->netdev->features & NETIF_F_RXHASH) in e1000_configure()
3768 e1000e_setup_rss_hash(adapter); in e1000_configure()
3769 e1000_setup_rctl(adapter); in e1000_configure()
3770 e1000_configure_rx(adapter); in e1000_configure()
3771 adapter->alloc_rx_buf(rx_ring, e1000_desc_unused(rx_ring), GFP_KERNEL); in e1000_configure()
3782 void e1000e_power_up_phy(struct e1000_adapter *adapter) in e1000e_power_up_phy() argument
3784 if (adapter->hw.phy.ops.power_up) in e1000e_power_up_phy()
3785 adapter->hw.phy.ops.power_up(&adapter->hw); in e1000e_power_up_phy()
3787 adapter->hw.mac.ops.setup_link(&adapter->hw); in e1000e_power_up_phy()
3797 static void e1000_power_down_phy(struct e1000_adapter *adapter) in e1000_power_down_phy() argument
3799 if (adapter->hw.phy.ops.power_down) in e1000_power_down_phy()
3800 adapter->hw.phy.ops.power_down(&adapter->hw); in e1000_power_down_phy()
3812 static void e1000_flush_tx_ring(struct e1000_adapter *adapter) in e1000_flush_tx_ring() argument
3814 struct e1000_hw *hw = &adapter->hw; in e1000_flush_tx_ring()
3815 struct e1000_ring *tx_ring = adapter->tx_ring; in e1000_flush_tx_ring()
3844 static void e1000_flush_rx_ring(struct e1000_adapter *adapter) in e1000_flush_rx_ring() argument
3847 struct e1000_hw *hw = &adapter->hw; in e1000_flush_rx_ring()
3883 static void e1000_flush_desc_rings(struct e1000_adapter *adapter) in e1000_flush_desc_rings() argument
3887 struct e1000_hw *hw = &adapter->hw; in e1000_flush_desc_rings()
3895 pci_read_config_word(adapter->pdev, PCICFG_DESC_RING_STATUS, in e1000_flush_desc_rings()
3899 e1000_flush_tx_ring(adapter); in e1000_flush_desc_rings()
3901 pci_read_config_word(adapter->pdev, PCICFG_DESC_RING_STATUS, in e1000_flush_desc_rings()
3904 e1000_flush_rx_ring(adapter); in e1000_flush_desc_rings()
3916 static void e1000e_systim_reset(struct e1000_adapter *adapter) in e1000e_systim_reset() argument
3918 struct ptp_clock_info *info = &adapter->ptp_clock_info; in e1000e_systim_reset()
3919 struct e1000_hw *hw = &adapter->hw; in e1000e_systim_reset()
3925 if (!(adapter->flags & FLAG_HAS_HW_TIMESTAMP)) in e1000e_systim_reset()
3930 ret_val = info->adjfine(info, adapter->ptp_delta); in e1000e_systim_reset()
3933 ret_val = e1000e_get_base_timinca(adapter, &timinca); in e1000e_systim_reset()
3939 dev_warn(&adapter->pdev->dev, in e1000e_systim_reset()
3946 spin_lock_irqsave(&adapter->systim_lock, flags); in e1000e_systim_reset()
3947 timecounter_init(&adapter->tc, &adapter->cc, in e1000e_systim_reset()
3949 spin_unlock_irqrestore(&adapter->systim_lock, flags); in e1000e_systim_reset()
3952 ret_val = e1000e_config_hwtstamp(adapter, &adapter->hwtstamp_config, in e1000e_systim_reset()
3969 void e1000e_reset(struct e1000_adapter *adapter) in e1000e_reset() argument
3971 struct e1000_mac_info *mac = &adapter->hw.mac; in e1000e_reset()
3972 struct e1000_fc_info *fc = &adapter->hw.fc; in e1000e_reset()
3973 struct e1000_hw *hw = &adapter->hw; in e1000e_reset()
3975 u32 pba = adapter->pba; in e1000e_reset()
3981 if (adapter->max_frame_size > (VLAN_ETH_FRAME_LEN + ETH_FCS_LEN)) { in e1000e_reset()
3997 min_tx_space = (adapter->max_frame_size + in e1000e_reset()
4002 min_rx_space = adapter->max_frame_size; in e1000e_reset()
4032 if (adapter->flags & FLAG_DISABLE_FC_PAUSE_TIME) in e1000e_reset()
4042 if (adapter->netdev->mtu > ETH_DATA_LEN) { in e1000e_reset()
4052 ((pba << 10) - adapter->max_frame_size)); in e1000e_reset()
4061 if (adapter->netdev->mtu > ETH_DATA_LEN) { in e1000e_reset()
4083 if (adapter->netdev->mtu <= ETH_DATA_LEN) { in e1000e_reset()
4101 adapter->tx_fifo_limit = min_t(u32, ((er32(PBA) >> 16) << 10) - 96, in e1000e_reset()
4107 if (adapter->itr_setting & 0x3) { in e1000e_reset()
4108 if ((adapter->max_frame_size * 2) > (pba << 10)) { in e1000e_reset()
4109 if (!(adapter->flags2 & FLAG2_DISABLE_AIM)) { in e1000e_reset()
4110 dev_info(&adapter->pdev->dev, in e1000e_reset()
4112 adapter->flags2 |= FLAG2_DISABLE_AIM; in e1000e_reset()
4113 e1000e_write_itr(adapter, 0); in e1000e_reset()
4115 } else if (adapter->flags2 & FLAG2_DISABLE_AIM) { in e1000e_reset()
4116 dev_info(&adapter->pdev->dev, in e1000e_reset()
4118 adapter->flags2 &= ~FLAG2_DISABLE_AIM; in e1000e_reset()
4119 adapter->itr = 20000; in e1000e_reset()
4120 e1000e_write_itr(adapter, adapter->itr); in e1000e_reset()
4125 e1000_flush_desc_rings(adapter); in e1000e_reset()
4132 if (adapter->flags & FLAG_HAS_AMT) in e1000e_reset()
4133 e1000e_get_hw_control(adapter); in e1000e_reset()
4140 e1000_update_mng_vlan(adapter); in e1000e_reset()
4148 e1000e_systim_reset(adapter); in e1000e_reset()
4151 if (adapter->flags2 & FLAG2_HAS_EEE) { in e1000e_reset()
4163 dev_err(&adapter->pdev->dev, in e1000e_reset()
4170 dev_err(&adapter->pdev->dev, in e1000e_reset()
4177 0 : adapter->eee_advert); in e1000e_reset()
4182 if (!netif_running(adapter->netdev) && in e1000e_reset()
4183 !test_bit(__E1000_TESTING, &adapter->state)) in e1000e_reset()
4184 e1000_power_down_phy(adapter); in e1000e_reset()
4188 if ((adapter->flags & FLAG_HAS_SMART_POWER_DOWN) && in e1000e_reset()
4189 !(adapter->flags & FLAG_SMART_POWER_DOWN)) { in e1000e_reset()
4199 if (hw->mac.type >= e1000_pch_spt && adapter->int_mode == 0) { in e1000e_reset()
4221 static void e1000e_trigger_lsc(struct e1000_adapter *adapter) in e1000e_trigger_lsc() argument
4223 struct e1000_hw *hw = &adapter->hw; in e1000e_trigger_lsc()
4225 if (adapter->msix_entries) in e1000e_trigger_lsc()
4231 void e1000e_up(struct e1000_adapter *adapter) in e1000e_up() argument
4234 e1000_configure(adapter); in e1000e_up()
4236 clear_bit(__E1000_DOWN, &adapter->state); in e1000e_up()
4238 if (adapter->msix_entries) in e1000e_up()
4239 e1000_configure_msix(adapter); in e1000e_up()
4240 e1000_irq_enable(adapter); in e1000e_up()
4244 e1000e_trigger_lsc(adapter); in e1000e_up()
4247 static void e1000e_flush_descriptors(struct e1000_adapter *adapter) in e1000e_flush_descriptors() argument
4249 struct e1000_hw *hw = &adapter->hw; in e1000e_flush_descriptors()
4251 if (!(adapter->flags2 & FLAG2_DMA_BURST)) in e1000e_flush_descriptors()
4255 ew32(TIDV, adapter->tx_int_delay | E1000_TIDV_FPD); in e1000e_flush_descriptors()
4256 ew32(RDTR, adapter->rx_int_delay | E1000_RDTR_FPD); in e1000e_flush_descriptors()
4264 ew32(TIDV, adapter->tx_int_delay | E1000_TIDV_FPD); in e1000e_flush_descriptors()
4265 ew32(RDTR, adapter->rx_int_delay | E1000_RDTR_FPD); in e1000e_flush_descriptors()
4271 static void e1000e_update_stats(struct e1000_adapter *adapter);
4278 void e1000e_down(struct e1000_adapter *adapter, bool reset) in e1000e_down() argument
4280 struct net_device *netdev = adapter->netdev; in e1000e_down()
4281 struct e1000_hw *hw = &adapter->hw; in e1000e_down()
4287 set_bit(__E1000_DOWN, &adapter->state); in e1000e_down()
4293 if (!(adapter->flags2 & FLAG2_NO_DISABLE_RX)) in e1000e_down()
4308 e1000_irq_disable(adapter); in e1000e_down()
4310 napi_synchronize(&adapter->napi); in e1000e_down()
4312 timer_delete_sync(&adapter->watchdog_timer); in e1000e_down()
4313 timer_delete_sync(&adapter->phy_info_timer); in e1000e_down()
4315 spin_lock(&adapter->stats64_lock); in e1000e_down()
4316 e1000e_update_stats(adapter); in e1000e_down()
4317 spin_unlock(&adapter->stats64_lock); in e1000e_down()
4319 e1000e_flush_descriptors(adapter); in e1000e_down()
4321 adapter->link_speed = 0; in e1000e_down()
4322 adapter->link_duplex = 0; in e1000e_down()
4326 (adapter->netdev->mtu > ETH_DATA_LEN) && in e1000e_down()
4330 if (!pci_channel_offline(adapter->pdev)) { in e1000e_down()
4332 e1000e_reset(adapter); in e1000e_down()
4334 e1000_flush_desc_rings(adapter); in e1000e_down()
4336 e1000_clean_tx_ring(adapter->tx_ring); in e1000e_down()
4337 e1000_clean_rx_ring(adapter->rx_ring); in e1000e_down()
4340 void e1000e_reinit_locked(struct e1000_adapter *adapter) in e1000e_reinit_locked() argument
4343 while (test_and_set_bit(__E1000_RESETTING, &adapter->state)) in e1000e_reinit_locked()
4345 e1000e_down(adapter, true); in e1000e_reinit_locked()
4346 e1000e_up(adapter); in e1000e_reinit_locked()
4347 clear_bit(__E1000_RESETTING, &adapter->state); in e1000e_reinit_locked()
4397 u64 e1000e_read_systim(struct e1000_adapter *adapter, in e1000e_read_systim() argument
4400 struct e1000_hw *hw = &adapter->hw; in e1000e_read_systim()
4429 if (adapter->flags2 & FLAG2_CHECK_SYSTIM_OVERFLOW) in e1000e_read_systim()
4441 struct e1000_adapter *adapter = container_of(cc, struct e1000_adapter, in e1000e_cyclecounter_read() local
4444 return e1000e_read_systim(adapter, NULL); in e1000e_cyclecounter_read()
4455 static int e1000_sw_init(struct e1000_adapter *adapter) in e1000_sw_init() argument
4457 struct net_device *netdev = adapter->netdev; in e1000_sw_init()
4459 adapter->rx_buffer_len = VLAN_ETH_FRAME_LEN + ETH_FCS_LEN; in e1000_sw_init()
4460 adapter->rx_ps_bsize0 = 128; in e1000_sw_init()
4461 adapter->max_frame_size = netdev->mtu + VLAN_ETH_HLEN + ETH_FCS_LEN; in e1000_sw_init()
4462 adapter->min_frame_size = ETH_ZLEN + ETH_FCS_LEN; in e1000_sw_init()
4463 adapter->tx_ring_count = E1000_DEFAULT_TXD; in e1000_sw_init()
4464 adapter->rx_ring_count = E1000_DEFAULT_RXD; in e1000_sw_init()
4466 spin_lock_init(&adapter->stats64_lock); in e1000_sw_init()
4468 e1000e_set_interrupt_capability(adapter); in e1000_sw_init()
4470 if (e1000_alloc_queues(adapter)) in e1000_sw_init()
4474 if (adapter->flags & FLAG_HAS_HW_TIMESTAMP) { in e1000_sw_init()
4475 adapter->cc.read = e1000e_cyclecounter_read; in e1000_sw_init()
4476 adapter->cc.mask = CYCLECOUNTER_MASK(64); in e1000_sw_init()
4477 adapter->cc.mult = 1; in e1000_sw_init()
4480 spin_lock_init(&adapter->systim_lock); in e1000_sw_init()
4481 INIT_WORK(&adapter->tx_hwtstamp_work, e1000e_tx_hwtstamp_work); in e1000_sw_init()
4485 e1000_irq_disable(adapter); in e1000_sw_init()
4487 set_bit(__E1000_DOWN, &adapter->state); in e1000_sw_init()
4499 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_intr_msi_test() local
4500 struct e1000_hw *hw = &adapter->hw; in e1000_intr_msi_test()
4505 adapter->flags &= ~FLAG_MSI_TEST_FAILED; in e1000_intr_msi_test()
4521 static int e1000_test_msi_interrupt(struct e1000_adapter *adapter) in e1000_test_msi_interrupt() argument
4523 struct net_device *netdev = adapter->netdev; in e1000_test_msi_interrupt()
4524 struct e1000_hw *hw = &adapter->hw; in e1000_test_msi_interrupt()
4532 e1000_free_irq(adapter); in e1000_test_msi_interrupt()
4533 e1000e_reset_interrupt_capability(adapter); in e1000_test_msi_interrupt()
4538 adapter->flags |= FLAG_MSI_TEST_FAILED; in e1000_test_msi_interrupt()
4540 err = pci_enable_msi(adapter->pdev); in e1000_test_msi_interrupt()
4544 err = request_irq(adapter->pdev->irq, e1000_intr_msi_test, 0, in e1000_test_msi_interrupt()
4547 pci_disable_msi(adapter->pdev); in e1000_test_msi_interrupt()
4556 e1000_irq_enable(adapter); in e1000_test_msi_interrupt()
4563 e1000_irq_disable(adapter); in e1000_test_msi_interrupt()
4567 if (adapter->flags & FLAG_MSI_TEST_FAILED) { in e1000_test_msi_interrupt()
4568 adapter->int_mode = E1000E_INT_MODE_LEGACY; in e1000_test_msi_interrupt()
4574 free_irq(adapter->pdev->irq, netdev); in e1000_test_msi_interrupt()
4575 pci_disable_msi(adapter->pdev); in e1000_test_msi_interrupt()
4578 e1000e_set_interrupt_capability(adapter); in e1000_test_msi_interrupt()
4579 return e1000_request_irq(adapter); in e1000_test_msi_interrupt()
4588 static int e1000_test_msi(struct e1000_adapter *adapter) in e1000_test_msi() argument
4593 if (!(adapter->flags & FLAG_MSI_ENABLED)) in e1000_test_msi()
4597 pci_read_config_word(adapter->pdev, PCI_COMMAND, &pci_cmd); in e1000_test_msi()
4599 pci_write_config_word(adapter->pdev, PCI_COMMAND, in e1000_test_msi()
4602 err = e1000_test_msi_interrupt(adapter); in e1000_test_msi()
4606 pci_read_config_word(adapter->pdev, PCI_COMMAND, &pci_cmd); in e1000_test_msi()
4608 pci_write_config_word(adapter->pdev, PCI_COMMAND, pci_cmd); in e1000_test_msi()
4628 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_open() local
4629 struct e1000_hw *hw = &adapter->hw; in e1000e_open()
4630 struct pci_dev *pdev = adapter->pdev; in e1000e_open()
4635 if (test_bit(__E1000_TESTING, &adapter->state)) in e1000e_open()
4644 err = e1000e_setup_tx_resources(adapter->tx_ring); in e1000e_open()
4649 err = e1000e_setup_rx_resources(adapter->rx_ring); in e1000e_open()
4656 if (adapter->flags & FLAG_HAS_AMT) { in e1000e_open()
4657 e1000e_get_hw_control(adapter); in e1000e_open()
4658 e1000e_reset(adapter); in e1000e_open()
4661 e1000e_power_up_phy(adapter); in e1000e_open()
4663 adapter->mng_vlan_id = E1000_MNG_VLAN_NONE; in e1000e_open()
4664 if ((adapter->hw.mng_cookie.status & E1000_MNG_DHCP_COOKIE_STATUS_VLAN)) in e1000e_open()
4665 e1000_update_mng_vlan(adapter); in e1000e_open()
4668 cpu_latency_qos_add_request(&adapter->pm_qos_req, PM_QOS_DEFAULT_VALUE); in e1000e_open()
4675 e1000_configure(adapter); in e1000e_open()
4677 err = e1000_request_irq(adapter); in e1000e_open()
4685 if (adapter->int_mode != E1000E_INT_MODE_LEGACY) { in e1000e_open()
4686 err = e1000_test_msi(adapter); in e1000e_open()
4694 clear_bit(__E1000_DOWN, &adapter->state); in e1000e_open()
4696 if (adapter->int_mode == E1000E_INT_MODE_MSIX) in e1000e_open()
4697 irq = adapter->msix_entries[0].vector; in e1000e_open()
4699 irq = adapter->pdev->irq; in e1000e_open()
4701 netif_napi_set_irq(&adapter->napi, irq); in e1000e_open()
4702 napi_enable(&adapter->napi); in e1000e_open()
4703 netif_queue_set_napi(netdev, 0, NETDEV_QUEUE_TYPE_RX, &adapter->napi); in e1000e_open()
4704 netif_queue_set_napi(netdev, 0, NETDEV_QUEUE_TYPE_TX, &adapter->napi); in e1000e_open()
4706 e1000_irq_enable(adapter); in e1000e_open()
4708 adapter->tx_hang_recheck = false; in e1000e_open()
4713 e1000e_trigger_lsc(adapter); in e1000e_open()
4718 cpu_latency_qos_remove_request(&adapter->pm_qos_req); in e1000e_open()
4719 e1000e_release_hw_control(adapter); in e1000e_open()
4720 e1000_power_down_phy(adapter); in e1000e_open()
4721 e1000e_free_rx_resources(adapter->rx_ring); in e1000e_open()
4723 e1000e_free_tx_resources(adapter->tx_ring); in e1000e_open()
4725 e1000e_reset(adapter); in e1000e_open()
4744 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_close() local
4745 struct pci_dev *pdev = adapter->pdev; in e1000e_close()
4748 while (test_bit(__E1000_RESETTING, &adapter->state) && count--) in e1000e_close()
4751 WARN_ON(test_bit(__E1000_RESETTING, &adapter->state)); in e1000e_close()
4756 e1000e_down(adapter, true); in e1000e_close()
4757 e1000_free_irq(adapter); in e1000e_close()
4765 napi_disable(&adapter->napi); in e1000e_close()
4767 e1000e_free_tx_resources(adapter->tx_ring); in e1000e_close()
4768 e1000e_free_rx_resources(adapter->rx_ring); in e1000e_close()
4773 if (adapter->hw.mng_cookie.status & E1000_MNG_DHCP_COOKIE_STATUS_VLAN) in e1000e_close()
4775 adapter->mng_vlan_id); in e1000e_close()
4780 if ((adapter->flags & FLAG_HAS_AMT) && in e1000e_close()
4781 !test_bit(__E1000_TESTING, &adapter->state)) in e1000e_close()
4782 e1000e_release_hw_control(adapter); in e1000e_close()
4784 cpu_latency_qos_remove_request(&adapter->pm_qos_req); in e1000e_close()
4800 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_set_mac() local
4801 struct e1000_hw *hw = &adapter->hw; in e1000_set_mac()
4808 memcpy(adapter->hw.mac.addr, addr->sa_data, netdev->addr_len); in e1000_set_mac()
4810 hw->mac.ops.rar_set(&adapter->hw, adapter->hw.mac.addr, 0); in e1000_set_mac()
4812 if (adapter->flags & FLAG_RESET_OVERWRITES_LAA) { in e1000_set_mac()
4814 e1000e_set_laa_state_82571(&adapter->hw, 1); in e1000_set_mac()
4823 hw->mac.ops.rar_set(&adapter->hw, adapter->hw.mac.addr, in e1000_set_mac()
4824 adapter->hw.mac.rar_entry_count - 1); in e1000_set_mac()
4840 struct e1000_adapter *adapter = container_of(work, in e1000e_update_phy_task() local
4843 struct e1000_hw *hw = &adapter->hw; in e1000e_update_phy_task()
4845 if (test_bit(__E1000_DOWN, &adapter->state)) in e1000e_update_phy_task()
4864 struct e1000_adapter *adapter = timer_container_of(adapter, t, in e1000_update_phy_info() local
4867 if (test_bit(__E1000_DOWN, &adapter->state)) in e1000_update_phy_info()
4870 schedule_work(&adapter->update_phy_task); in e1000_update_phy_info()
4879 static void e1000e_update_phy_stats(struct e1000_adapter *adapter) in e1000e_update_phy_stats() argument
4881 struct e1000_hw *hw = &adapter->hw; in e1000e_update_phy_stats()
4908 adapter->stats.scc += phy_data; in e1000e_update_phy_stats()
4914 adapter->stats.ecol += phy_data; in e1000e_update_phy_stats()
4920 adapter->stats.mcc += phy_data; in e1000e_update_phy_stats()
4926 adapter->stats.latecol += phy_data; in e1000e_update_phy_stats()
4938 adapter->stats.dc += phy_data; in e1000e_update_phy_stats()
4944 adapter->stats.tncrs += phy_data; in e1000e_update_phy_stats()
4954 static void e1000e_update_stats(struct e1000_adapter *adapter) in e1000e_update_stats() argument
4956 struct net_device *netdev = adapter->netdev; in e1000e_update_stats()
4957 struct e1000_hw *hw = &adapter->hw; in e1000e_update_stats()
4958 struct pci_dev *pdev = adapter->pdev; in e1000e_update_stats()
4963 if (adapter->link_speed == 0) in e1000e_update_stats()
4968 adapter->stats.crcerrs += er32(CRCERRS); in e1000e_update_stats()
4969 adapter->stats.gprc += er32(GPRC); in e1000e_update_stats()
4970 adapter->stats.gorc += er32(GORCL); in e1000e_update_stats()
4972 adapter->stats.bprc += er32(BPRC); in e1000e_update_stats()
4973 adapter->stats.mprc += er32(MPRC); in e1000e_update_stats()
4974 adapter->stats.roc += er32(ROC); in e1000e_update_stats()
4976 adapter->stats.mpc += er32(MPC); in e1000e_update_stats()
4979 if (adapter->link_duplex == HALF_DUPLEX) { in e1000e_update_stats()
4980 if (adapter->flags2 & FLAG2_HAS_PHY_STATS) { in e1000e_update_stats()
4981 e1000e_update_phy_stats(adapter); in e1000e_update_stats()
4983 adapter->stats.scc += er32(SCC); in e1000e_update_stats()
4984 adapter->stats.ecol += er32(ECOL); in e1000e_update_stats()
4985 adapter->stats.mcc += er32(MCC); in e1000e_update_stats()
4986 adapter->stats.latecol += er32(LATECOL); in e1000e_update_stats()
4987 adapter->stats.dc += er32(DC); in e1000e_update_stats()
4993 adapter->stats.tncrs += er32(TNCRS); in e1000e_update_stats()
4995 adapter->stats.colc += hw->mac.collision_delta; in e1000e_update_stats()
4998 adapter->stats.xonrxc += er32(XONRXC); in e1000e_update_stats()
4999 adapter->stats.xontxc += er32(XONTXC); in e1000e_update_stats()
5000 adapter->stats.xoffrxc += er32(XOFFRXC); in e1000e_update_stats()
5001 adapter->stats.xofftxc += er32(XOFFTXC); in e1000e_update_stats()
5002 adapter->stats.gptc += er32(GPTC); in e1000e_update_stats()
5003 adapter->stats.gotc += er32(GOTCL); in e1000e_update_stats()
5005 adapter->stats.rnbc += er32(RNBC); in e1000e_update_stats()
5006 adapter->stats.ruc += er32(RUC); in e1000e_update_stats()
5008 adapter->stats.mptc += er32(MPTC); in e1000e_update_stats()
5009 adapter->stats.bptc += er32(BPTC); in e1000e_update_stats()
5014 adapter->stats.tpt += hw->mac.tx_packet_delta; in e1000e_update_stats()
5016 adapter->stats.algnerrc += er32(ALGNERRC); in e1000e_update_stats()
5017 adapter->stats.rxerrc += er32(RXERRC); in e1000e_update_stats()
5018 adapter->stats.cexterr += er32(CEXTERR); in e1000e_update_stats()
5019 adapter->stats.tsctc += er32(TSCTC); in e1000e_update_stats()
5020 adapter->stats.tsctfc += er32(TSCTFC); in e1000e_update_stats()
5023 netdev->stats.multicast = adapter->stats.mprc; in e1000e_update_stats()
5024 netdev->stats.collisions = adapter->stats.colc; in e1000e_update_stats()
5031 netdev->stats.rx_errors = adapter->stats.rxerrc + in e1000e_update_stats()
5032 adapter->stats.crcerrs + adapter->stats.algnerrc + in e1000e_update_stats()
5033 adapter->stats.ruc + adapter->stats.roc + adapter->stats.cexterr; in e1000e_update_stats()
5034 netdev->stats.rx_length_errors = adapter->stats.ruc + in e1000e_update_stats()
5035 adapter->stats.roc; in e1000e_update_stats()
5036 netdev->stats.rx_crc_errors = adapter->stats.crcerrs; in e1000e_update_stats()
5037 netdev->stats.rx_frame_errors = adapter->stats.algnerrc; in e1000e_update_stats()
5038 netdev->stats.rx_missed_errors = adapter->stats.mpc; in e1000e_update_stats()
5041 netdev->stats.tx_errors = adapter->stats.ecol + adapter->stats.latecol; in e1000e_update_stats()
5042 netdev->stats.tx_aborted_errors = adapter->stats.ecol; in e1000e_update_stats()
5043 netdev->stats.tx_window_errors = adapter->stats.latecol; in e1000e_update_stats()
5044 netdev->stats.tx_carrier_errors = adapter->stats.tncrs; in e1000e_update_stats()
5049 adapter->stats.mgptc += er32(MGTPTC); in e1000e_update_stats()
5050 adapter->stats.mgprc += er32(MGTPRC); in e1000e_update_stats()
5051 adapter->stats.mgpdc += er32(MGTPDC); in e1000e_update_stats()
5057 adapter->corr_errors += in e1000e_update_stats()
5059 adapter->uncorr_errors += in e1000e_update_stats()
5068 static void e1000_phy_read_status(struct e1000_adapter *adapter) in e1000_phy_read_status() argument
5070 struct e1000_hw *hw = &adapter->hw; in e1000_phy_read_status()
5071 struct e1000_phy_regs *phy = &adapter->phy_regs; in e1000_phy_read_status()
5073 if (!pm_runtime_suspended((&adapter->pdev->dev)->parent) && in e1000_phy_read_status()
5075 (adapter->hw.phy.media_type == e1000_media_type_copper)) { in e1000_phy_read_status()
5106 static void e1000_print_link_info(struct e1000_adapter *adapter) in e1000_print_link_info() argument
5108 struct e1000_hw *hw = &adapter->hw; in e1000_print_link_info()
5112 netdev_info(adapter->netdev, in e1000_print_link_info()
5114 adapter->link_speed, in e1000_print_link_info()
5115 adapter->link_duplex == FULL_DUPLEX ? "Full" : "Half", in e1000_print_link_info()
5121 static bool e1000e_has_link(struct e1000_adapter *adapter) in e1000e_has_link() argument
5123 struct e1000_hw *hw = &adapter->hw; in e1000e_has_link()
5163 static void e1000e_enable_receives(struct e1000_adapter *adapter) in e1000e_enable_receives() argument
5166 if ((adapter->flags & FLAG_RX_NEEDS_RESTART) && in e1000e_enable_receives()
5167 (adapter->flags & FLAG_RESTART_NOW)) { in e1000e_enable_receives()
5168 struct e1000_hw *hw = &adapter->hw; in e1000e_enable_receives()
5172 adapter->flags &= ~FLAG_RESTART_NOW; in e1000e_enable_receives()
5176 static void e1000e_check_82574_phy_workaround(struct e1000_adapter *adapter) in e1000e_check_82574_phy_workaround() argument
5178 struct e1000_hw *hw = &adapter->hw; in e1000e_check_82574_phy_workaround()
5184 adapter->phy_hang_count++; in e1000e_check_82574_phy_workaround()
5186 adapter->phy_hang_count = 0; in e1000e_check_82574_phy_workaround()
5188 if (adapter->phy_hang_count > 1) { in e1000e_check_82574_phy_workaround()
5189 adapter->phy_hang_count = 0; in e1000e_check_82574_phy_workaround()
5191 schedule_work(&adapter->reset_task); in e1000e_check_82574_phy_workaround()
5201 struct e1000_adapter *adapter = timer_container_of(adapter, t, in e1000_watchdog() local
5205 schedule_work(&adapter->watchdog_task); in e1000_watchdog()
5212 struct e1000_adapter *adapter = container_of(work, in e1000_watchdog_task() local
5215 struct net_device *netdev = adapter->netdev; in e1000_watchdog_task()
5216 struct e1000_mac_info *mac = &adapter->hw.mac; in e1000_watchdog_task()
5217 struct e1000_phy_info *phy = &adapter->hw.phy; in e1000_watchdog_task()
5218 struct e1000_ring *tx_ring = adapter->tx_ring; in e1000_watchdog_task()
5220 struct e1000_hw *hw = &adapter->hw; in e1000_watchdog_task()
5223 if (test_bit(__E1000_DOWN, &adapter->state)) in e1000_watchdog_task()
5226 link = e1000e_has_link(adapter); in e1000_watchdog_task()
5231 e1000e_enable_receives(adapter); in e1000_watchdog_task()
5236 (adapter->mng_vlan_id != adapter->hw.mng_cookie.vlan_id)) in e1000_watchdog_task()
5237 e1000_update_mng_vlan(adapter); in e1000_watchdog_task()
5259 e1000_phy_hw_reset(&adapter->hw); in e1000_watchdog_task()
5264 e1000_phy_read_status(adapter); in e1000_watchdog_task()
5265 mac->ops.get_link_up_info(&adapter->hw, in e1000_watchdog_task()
5266 &adapter->link_speed, in e1000_watchdog_task()
5267 &adapter->link_duplex); in e1000_watchdog_task()
5268 e1000_print_link_info(adapter); in e1000_watchdog_task()
5282 (adapter->link_speed == SPEED_10 || in e1000_watchdog_task()
5283 adapter->link_speed == SPEED_100) && in e1000_watchdog_task()
5284 (adapter->link_duplex == HALF_DUPLEX)) { in e1000_watchdog_task()
5294 adapter->tx_timeout_factor = 1; in e1000_watchdog_task()
5295 switch (adapter->link_speed) { in e1000_watchdog_task()
5298 adapter->tx_timeout_factor = 16; in e1000_watchdog_task()
5302 adapter->tx_timeout_factor = 10; in e1000_watchdog_task()
5309 if ((adapter->flags & FLAG_TARC_SPEED_MODE_BIT) && in e1000_watchdog_task()
5334 if (!test_bit(__E1000_DOWN, &adapter->state)) in e1000_watchdog_task()
5335 mod_timer(&adapter->phy_info_timer, in e1000_watchdog_task()
5340 adapter->link_speed = 0; in e1000_watchdog_task()
5341 adapter->link_duplex = 0; in e1000_watchdog_task()
5346 if (!test_bit(__E1000_DOWN, &adapter->state)) in e1000_watchdog_task()
5347 mod_timer(&adapter->phy_info_timer, in e1000_watchdog_task()
5354 if (adapter->flags & FLAG_RX_NEEDS_RESTART) in e1000_watchdog_task()
5355 adapter->flags |= FLAG_RESTART_NOW; in e1000_watchdog_task()
5363 spin_lock(&adapter->stats64_lock); in e1000_watchdog_task()
5364 e1000e_update_stats(adapter); in e1000_watchdog_task()
5366 mac->tx_packet_delta = adapter->stats.tpt - adapter->tpt_old; in e1000_watchdog_task()
5367 adapter->tpt_old = adapter->stats.tpt; in e1000_watchdog_task()
5368 mac->collision_delta = adapter->stats.colc - adapter->colc_old; in e1000_watchdog_task()
5369 adapter->colc_old = adapter->stats.colc; in e1000_watchdog_task()
5371 adapter->gorc = adapter->stats.gorc - adapter->gorc_old; in e1000_watchdog_task()
5372 adapter->gorc_old = adapter->stats.gorc; in e1000_watchdog_task()
5373 adapter->gotc = adapter->stats.gotc - adapter->gotc_old; in e1000_watchdog_task()
5374 adapter->gotc_old = adapter->stats.gotc; in e1000_watchdog_task()
5375 spin_unlock(&adapter->stats64_lock); in e1000_watchdog_task()
5383 adapter->flags |= FLAG_RESTART_NOW; in e1000_watchdog_task()
5386 if (adapter->flags & FLAG_RESTART_NOW) { in e1000_watchdog_task()
5387 schedule_work(&adapter->reset_task); in e1000_watchdog_task()
5392 e1000e_update_adaptive(&adapter->hw); in e1000_watchdog_task()
5395 if (adapter->itr_setting == 4) { in e1000_watchdog_task()
5400 u32 goc = (adapter->gotc + adapter->gorc) / 10000; in e1000_watchdog_task()
5401 u32 dif = (adapter->gotc > adapter->gorc ? in e1000_watchdog_task()
5402 adapter->gotc - adapter->gorc : in e1000_watchdog_task()
5403 adapter->gorc - adapter->gotc) / 10000; in e1000_watchdog_task()
5406 e1000e_write_itr(adapter, itr); in e1000_watchdog_task()
5410 if (adapter->msix_entries) in e1000_watchdog_task()
5411 ew32(ICS, adapter->rx_ring->ims_val); in e1000_watchdog_task()
5416 e1000e_flush_descriptors(adapter); in e1000_watchdog_task()
5419 adapter->detect_tx_hung = true; in e1000_watchdog_task()
5425 hw->mac.ops.rar_set(hw, adapter->hw.mac.addr, 0); in e1000_watchdog_task()
5427 if (adapter->flags2 & FLAG2_CHECK_PHY_HANG) in e1000_watchdog_task()
5428 e1000e_check_82574_phy_workaround(adapter); in e1000_watchdog_task()
5431 if (adapter->hwtstamp_config.rx_filter != HWTSTAMP_FILTER_NONE) { in e1000_watchdog_task()
5432 if ((adapter->flags2 & FLAG2_CHECK_RX_HWTSTAMP) && in e1000_watchdog_task()
5435 adapter->rx_hwtstamp_cleared++; in e1000_watchdog_task()
5437 adapter->flags2 |= FLAG2_CHECK_RX_HWTSTAMP; in e1000_watchdog_task()
5442 if (!test_bit(__E1000_DOWN, &adapter->state)) in e1000_watchdog_task()
5443 mod_timer(&adapter->watchdog_timer, in e1000_watchdog_task()
5524 struct e1000_adapter *adapter = tx_ring->adapter; in e1000_tx_csum() local
5579 struct e1000_adapter *adapter = tx_ring->adapter; in e1000_tx_map() local
5580 struct pci_dev *pdev = adapter->pdev; in e1000_tx_map()
5673 struct e1000_adapter *adapter = tx_ring->adapter; in e1000_tx_queue() local
5721 tx_desc->lower.data |= cpu_to_le32(adapter->txd_cmd); in e1000_tx_queue()
5738 static int e1000_transfer_dhcp_info(struct e1000_adapter *adapter, in e1000_transfer_dhcp_info() argument
5741 struct e1000_hw *hw = &adapter->hw; in e1000_transfer_dhcp_info()
5745 !((skb_vlan_tag_get(skb) == adapter->hw.mng_cookie.vlan_id) && in e1000_transfer_dhcp_info()
5746 (adapter->hw.mng_cookie.status & in e1000_transfer_dhcp_info()
5777 struct e1000_adapter *adapter = tx_ring->adapter; in __e1000_maybe_stop_tx() local
5779 netif_stop_queue(adapter->netdev); in __e1000_maybe_stop_tx()
5793 netif_start_queue(adapter->netdev); in __e1000_maybe_stop_tx()
5794 ++adapter->restart_queue; in __e1000_maybe_stop_tx()
5810 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_xmit_frame() local
5811 struct e1000_ring *tx_ring = adapter->tx_ring; in e1000_xmit_frame()
5822 if (test_bit(__E1000_DOWN, &adapter->state)) { in e1000_xmit_frame()
5868 count += DIV_ROUND_UP(len, adapter->tx_fifo_limit); in e1000_xmit_frame()
5873 adapter->tx_fifo_limit); in e1000_xmit_frame()
5875 if (adapter->hw.mac.tx_pkt_filtering) in e1000_xmit_frame()
5876 e1000_transfer_dhcp_info(adapter, skb); in e1000_xmit_frame()
5914 count = e1000_tx_map(tx_ring, skb, first, adapter->tx_fifo_limit, in e1000_xmit_frame()
5918 (adapter->flags & FLAG_HAS_HW_TIMESTAMP)) { in e1000_xmit_frame()
5919 if (!adapter->tx_hwtstamp_skb) { in e1000_xmit_frame()
5922 adapter->tx_hwtstamp_skb = skb_get(skb); in e1000_xmit_frame()
5923 adapter->tx_hwtstamp_start = jiffies; in e1000_xmit_frame()
5924 schedule_work(&adapter->tx_hwtstamp_work); in e1000_xmit_frame()
5926 adapter->tx_hwtstamp_skipped++; in e1000_xmit_frame()
5938 adapter->tx_fifo_limit) + 4)); in e1000_xmit_frame()
5942 if (adapter->flags2 & FLAG2_PCIM2PCI_ARBITER_WA) in e1000_xmit_frame()
5964 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_tx_timeout() local
5967 adapter->tx_timeout_count++; in e1000_tx_timeout()
5968 schedule_work(&adapter->reset_task); in e1000_tx_timeout()
5973 struct e1000_adapter *adapter; in e1000_reset_task() local
5974 adapter = container_of(work, struct e1000_adapter, reset_task); in e1000_reset_task()
5978 if (test_bit(__E1000_DOWN, &adapter->state)) { in e1000_reset_task()
5983 if (!(adapter->flags & FLAG_RESTART_NOW)) { in e1000_reset_task()
5984 e1000e_dump(adapter); in e1000_reset_task()
5987 e1000e_reinit_locked(adapter); in e1000_reset_task()
6001 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_get_stats64() local
6003 spin_lock(&adapter->stats64_lock); in e1000e_get_stats64()
6004 e1000e_update_stats(adapter); in e1000e_get_stats64()
6006 stats->rx_bytes = adapter->stats.gorc; in e1000e_get_stats64()
6007 stats->rx_packets = adapter->stats.gprc; in e1000e_get_stats64()
6008 stats->tx_bytes = adapter->stats.gotc; in e1000e_get_stats64()
6009 stats->tx_packets = adapter->stats.gptc; in e1000e_get_stats64()
6010 stats->multicast = adapter->stats.mprc; in e1000e_get_stats64()
6011 stats->collisions = adapter->stats.colc; in e1000e_get_stats64()
6018 stats->rx_errors = adapter->stats.rxerrc + in e1000e_get_stats64()
6019 adapter->stats.crcerrs + adapter->stats.algnerrc + in e1000e_get_stats64()
6020 adapter->stats.ruc + adapter->stats.roc + adapter->stats.cexterr; in e1000e_get_stats64()
6021 stats->rx_length_errors = adapter->stats.ruc + adapter->stats.roc; in e1000e_get_stats64()
6022 stats->rx_crc_errors = adapter->stats.crcerrs; in e1000e_get_stats64()
6023 stats->rx_frame_errors = adapter->stats.algnerrc; in e1000e_get_stats64()
6024 stats->rx_missed_errors = adapter->stats.mpc; in e1000e_get_stats64()
6027 stats->tx_errors = adapter->stats.ecol + adapter->stats.latecol; in e1000e_get_stats64()
6028 stats->tx_aborted_errors = adapter->stats.ecol; in e1000e_get_stats64()
6029 stats->tx_window_errors = adapter->stats.latecol; in e1000e_get_stats64()
6030 stats->tx_carrier_errors = adapter->stats.tncrs; in e1000e_get_stats64()
6034 spin_unlock(&adapter->stats64_lock); in e1000e_get_stats64()
6046 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_change_mtu() local
6051 !(adapter->flags & FLAG_HAS_JUMBO_FRAMES)) { in e1000_change_mtu()
6057 if ((adapter->hw.mac.type >= e1000_pch2lan) && in e1000_change_mtu()
6058 !(adapter->flags2 & FLAG2_CRC_STRIPPING) && in e1000_change_mtu()
6064 while (test_and_set_bit(__E1000_RESETTING, &adapter->state)) in e1000_change_mtu()
6067 adapter->max_frame_size = max_frame; in e1000_change_mtu()
6075 e1000e_down(adapter, true); in e1000_change_mtu()
6086 adapter->rx_buffer_len = 2048; in e1000_change_mtu()
6088 adapter->rx_buffer_len = 4096; in e1000_change_mtu()
6092 adapter->rx_buffer_len = VLAN_ETH_FRAME_LEN + ETH_FCS_LEN; in e1000_change_mtu()
6095 e1000e_up(adapter); in e1000_change_mtu()
6097 e1000e_reset(adapter); in e1000_change_mtu()
6101 clear_bit(__E1000_RESETTING, &adapter->state); in e1000_change_mtu()
6108 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_ioctl() local
6111 if (adapter->hw.phy.media_type != e1000_media_type_copper) in e1000_ioctl()
6116 data->phy_id = adapter->hw.phy.addr; in e1000_ioctl()
6119 e1000_phy_read_status(adapter); in e1000_ioctl()
6123 data->val_out = adapter->phy_regs.bmcr; in e1000_ioctl()
6126 data->val_out = adapter->phy_regs.bmsr; in e1000_ioctl()
6129 data->val_out = (adapter->hw.phy.id >> 16); in e1000_ioctl()
6132 data->val_out = (adapter->hw.phy.id & 0xFFFF); in e1000_ioctl()
6135 data->val_out = adapter->phy_regs.advertise; in e1000_ioctl()
6138 data->val_out = adapter->phy_regs.lpa; in e1000_ioctl()
6141 data->val_out = adapter->phy_regs.expansion; in e1000_ioctl()
6144 data->val_out = adapter->phy_regs.ctrl1000; in e1000_ioctl()
6147 data->val_out = adapter->phy_regs.stat1000; in e1000_ioctl()
6150 data->val_out = adapter->phy_regs.estatus; in e1000_ioctl()
6184 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_hwtstamp_set() local
6187 ret_val = e1000e_config_hwtstamp(adapter, config, extack); in e1000e_hwtstamp_set()
6215 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_hwtstamp_get() local
6217 *kernel_config = adapter->hwtstamp_config; in e1000e_hwtstamp_get()
6222 static int e1000_init_phy_wakeup(struct e1000_adapter *adapter, u32 wufc) in e1000_init_phy_wakeup() argument
6224 struct e1000_hw *hw = &adapter->hw; in e1000_init_phy_wakeup()
6244 for (i = 0; i < adapter->hw.mac.mta_reg_count; i++) { in e1000_init_phy_wakeup()
6253 hw->phy.ops.read_reg_page(&adapter->hw, BM_RCTL, &phy_reg); in e1000_init_phy_wakeup()
6270 hw->phy.ops.write_reg_page(&adapter->hw, BM_RCTL, phy_reg); in e1000_init_phy_wakeup()
6282 hw->phy.ops.write_reg_page(&adapter->hw, BM_WUFC, wufc); in e1000_init_phy_wakeup()
6283 hw->phy.ops.write_reg_page(&adapter->hw, BM_WUC, wuc); in e1000_init_phy_wakeup()
6299 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_flush_lpic() local
6300 struct e1000_hw *hw = &adapter->hw; in e1000e_flush_lpic()
6319 static void e1000e_s0ix_entry_flow(struct e1000_adapter *adapter) in e1000e_s0ix_entry_flow() argument
6321 struct e1000_hw *hw = &adapter->hw; in e1000e_s0ix_entry_flow()
6468 static void e1000e_s0ix_exit_flow(struct e1000_adapter *adapter) in e1000e_s0ix_exit_flow() argument
6470 struct e1000_hw *hw = &adapter->hw; in e1000e_s0ix_exit_flow()
6601 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_pm_freeze() local
6612 while (test_bit(__E1000_RESETTING, &adapter->state) && count--) in e1000e_pm_freeze()
6615 WARN_ON(test_bit(__E1000_RESETTING, &adapter->state)); in e1000e_pm_freeze()
6618 e1000e_down(adapter, false); in e1000e_pm_freeze()
6619 e1000_free_irq(adapter); in e1000e_pm_freeze()
6623 e1000e_reset_interrupt_capability(adapter); in e1000e_pm_freeze()
6626 e1000e_disable_pcie_master(&adapter->hw); in e1000e_pm_freeze()
6634 struct e1000_adapter *adapter = netdev_priv(netdev); in __e1000_shutdown() local
6635 struct e1000_hw *hw = &adapter->hw; in __e1000_shutdown()
6643 wufc = adapter->wol; in __e1000_shutdown()
6652 e1000_setup_rctl(adapter); in __e1000_shutdown()
6664 if (!(adapter->flags2 & FLAG2_HAS_PHY_WAKEUP)) in __e1000_shutdown()
6668 if (adapter->hw.phy.media_type == e1000_media_type_fiber || in __e1000_shutdown()
6669 adapter->hw.phy.media_type == in __e1000_shutdown()
6678 e1000e_power_up_phy(adapter); in __e1000_shutdown()
6680 if (adapter->flags & FLAG_IS_ICH) in __e1000_shutdown()
6681 e1000_suspend_workarounds_ich8lan(&adapter->hw); in __e1000_shutdown()
6683 if (adapter->flags2 & FLAG2_HAS_PHY_WAKEUP) { in __e1000_shutdown()
6685 retval = e1000_init_phy_wakeup(adapter, wufc); in __e1000_shutdown()
6699 e1000_power_down_phy(adapter); in __e1000_shutdown()
6702 if (adapter->hw.phy.type == e1000_phy_igp_3) { in __e1000_shutdown()
6703 e1000e_igp3_phy_powerdown_workaround_ich8lan(&adapter->hw); in __e1000_shutdown()
6721 adapter->eee_advert && hw->dev_spec.ich8lan.eee_lp_ability) { in __e1000_shutdown()
6729 if (adapter->eee_advert & in __e1000_shutdown()
6733 if (adapter->eee_advert & in __e1000_shutdown()
6749 e1000e_release_hw_control(adapter); in __e1000_shutdown()
6762 if (adapter->flags & FLAG_IS_QUAD_PORT) { in __e1000_shutdown()
6884 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_pm_thaw() local
6887 e1000e_set_interrupt_capability(adapter); in e1000e_pm_thaw()
6891 rc = e1000_request_irq(adapter); in e1000e_pm_thaw()
6895 e1000e_up(adapter); in e1000e_pm_thaw()
6908 struct e1000_adapter *adapter = netdev_priv(netdev); in __e1000_resume() local
6909 struct e1000_hw *hw = &adapter->hw; in __e1000_resume()
6912 if (adapter->flags2 & FLAG2_DISABLE_ASPM_L0S) in __e1000_resume()
6914 if (adapter->flags2 & FLAG2_DISABLE_ASPM_L1) in __e1000_resume()
6922 e1000_resume_workarounds_pchlan(&adapter->hw); in __e1000_resume()
6924 e1000e_power_up_phy(adapter); in __e1000_resume()
6927 if (adapter->flags2 & FLAG2_HAS_PHY_WAKEUP) { in __e1000_resume()
6930 e1e_rphy(&adapter->hw, BM_WUS, &phy_data); in __e1000_resume()
6940 e1e_wphy(&adapter->hw, BM_WUS, ~0); in __e1000_resume()
6956 e1000e_reset(adapter); in __e1000_resume()
6958 e1000_init_manageability_pt(adapter); in __e1000_resume()
6964 if (!(adapter->flags & FLAG_HAS_AMT)) in __e1000_resume()
6965 e1000e_get_hw_control(adapter); in __e1000_resume()
6979 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_pm_suspend() local
6990 if (adapter->flags2 & FLAG2_ENABLE_S0IX_FLOWS) in e1000e_pm_suspend()
6991 e1000e_s0ix_entry_flow(adapter); in e1000e_pm_suspend()
7000 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_pm_resume() local
7005 if (adapter->flags2 & FLAG2_ENABLE_S0IX_FLOWS) in e1000e_pm_resume()
7006 e1000e_s0ix_exit_flow(adapter); in e1000e_pm_resume()
7018 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_pm_runtime_idle() local
7021 eee_lp = adapter->hw.dev_spec.ich8lan.eee_lp_ability; in e1000e_pm_runtime_idle()
7023 if (!e1000e_has_link(adapter)) { in e1000e_pm_runtime_idle()
7024 adapter->hw.dev_spec.ich8lan.eee_lp_ability = eee_lp; in e1000e_pm_runtime_idle()
7035 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_pm_runtime_resume() local
7045 e1000e_up(adapter); in e1000e_pm_runtime_resume()
7054 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_pm_runtime_suspend() local
7059 while (test_bit(__E1000_RESETTING, &adapter->state) && count--) in e1000e_pm_runtime_suspend()
7062 WARN_ON(test_bit(__E1000_RESETTING, &adapter->state)); in e1000e_pm_runtime_suspend()
7065 e1000e_down(adapter, false); in e1000e_pm_runtime_suspend()
7090 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_intr_msix() local
7092 if (adapter->msix_entries) { in e1000_intr_msix()
7096 msix_irq = adapter->msix_entries[vector].vector; in e1000_intr_msix()
7102 msix_irq = adapter->msix_entries[vector].vector; in e1000_intr_msix()
7108 msix_irq = adapter->msix_entries[vector].vector; in e1000_intr_msix()
7127 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_netpoll() local
7129 switch (adapter->int_mode) { in e1000_netpoll()
7131 e1000_intr_msix(adapter->pdev->irq, netdev); in e1000_netpoll()
7134 if (disable_hardirq(adapter->pdev->irq)) in e1000_netpoll()
7135 e1000_intr_msi(adapter->pdev->irq, netdev); in e1000_netpoll()
7136 enable_irq(adapter->pdev->irq); in e1000_netpoll()
7139 if (disable_hardirq(adapter->pdev->irq)) in e1000_netpoll()
7140 e1000_intr(adapter->pdev->irq, netdev); in e1000_netpoll()
7141 enable_irq(adapter->pdev->irq); in e1000_netpoll()
7179 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_io_slot_reset() local
7180 struct e1000_hw *hw = &adapter->hw; in e1000_io_slot_reset()
7185 if (adapter->flags2 & FLAG2_DISABLE_ASPM_L0S) in e1000_io_slot_reset()
7187 if (adapter->flags2 & FLAG2_DISABLE_ASPM_L1) in e1000_io_slot_reset()
7205 e1000e_reset(adapter); in e1000_io_slot_reset()
7224 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_io_resume() local
7226 e1000_init_manageability_pt(adapter); in e1000_io_resume()
7234 if (!(adapter->flags & FLAG_HAS_AMT)) in e1000_io_resume()
7235 e1000e_get_hw_control(adapter); in e1000_io_resume()
7238 static void e1000_print_device_info(struct e1000_adapter *adapter) in e1000_print_device_info() argument
7240 struct e1000_hw *hw = &adapter->hw; in e1000_print_device_info()
7241 struct net_device *netdev = adapter->netdev; in e1000_print_device_info()
7262 static void e1000_eeprom_checks(struct e1000_adapter *adapter) in e1000_eeprom_checks() argument
7264 struct e1000_hw *hw = &adapter->hw; in e1000_eeprom_checks()
7275 dev_warn(&adapter->pdev->dev, in e1000_eeprom_checks()
7283 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_fix_features() local
7284 struct e1000_hw *hw = &adapter->hw; in e1000_fix_features()
7304 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_set_features() local
7308 adapter->flags |= FLAG_TSO_FORCE; in e1000_set_features()
7317 adapter->flags2 &= ~FLAG2_CRC_STRIPPING; in e1000_set_features()
7322 if (adapter->flags2 & FLAG2_DFLT_CRC_STRIPPING) in e1000_set_features()
7323 adapter->flags2 |= FLAG2_CRC_STRIPPING; in e1000_set_features()
7325 adapter->flags2 &= ~FLAG2_CRC_STRIPPING; in e1000_set_features()
7332 e1000e_reinit_locked(adapter); in e1000_set_features()
7334 e1000e_reset(adapter); in e1000_set_features()
7377 struct e1000_adapter *adapter; in e1000_probe() local
7429 adapter = netdev_priv(netdev); in e1000_probe()
7430 hw = &adapter->hw; in e1000_probe()
7431 adapter->netdev = netdev; in e1000_probe()
7432 adapter->pdev = pdev; in e1000_probe()
7433 adapter->ei = ei; in e1000_probe()
7434 adapter->pba = ei->pba; in e1000_probe()
7435 adapter->flags = ei->flags; in e1000_probe()
7436 adapter->flags2 = ei->flags2; in e1000_probe()
7437 adapter->hw.adapter = adapter; in e1000_probe()
7438 adapter->hw.mac.type = ei->mac; in e1000_probe()
7439 adapter->max_hw_frame_size = ei->max_hw_frame_size; in e1000_probe()
7440 adapter->msg_enable = netif_msg_init(debug, DEFAULT_MSG_ENABLE); in e1000_probe()
7446 adapter->hw.hw_addr = ioremap(mmio_start, mmio_len); in e1000_probe()
7447 if (!adapter->hw.hw_addr) in e1000_probe()
7450 if ((adapter->flags & FLAG_HAS_FLASH) && in e1000_probe()
7455 adapter->hw.flash_address = ioremap(flash_start, flash_len); in e1000_probe()
7456 if (!adapter->hw.flash_address) in e1000_probe()
7461 if (adapter->flags2 & FLAG2_HAS_EEE) in e1000_probe()
7462 adapter->eee_advert = MDIO_EEE_100TX | MDIO_EEE_1000T; in e1000_probe()
7468 netif_napi_add(netdev, &adapter->napi, e1000e_poll); in e1000_probe()
7474 adapter->bd_number = cards_found++; in e1000_probe()
7476 e1000e_check_options(adapter); in e1000_probe()
7479 err = e1000_sw_init(adapter); in e1000_probe()
7487 err = ei->get_variants(adapter); in e1000_probe()
7491 if ((adapter->flags & FLAG_IS_ICH) && in e1000_probe()
7492 (adapter->flags & FLAG_READ_ONLY_NVM) && in e1000_probe()
7494 e1000e_write_protect_nvm_ich8lan(&adapter->hw); in e1000_probe()
7496 hw->mac.ops.get_bus_info(&adapter->hw); in e1000_probe()
7498 adapter->hw.phy.autoneg_wait_to_complete = 0; in e1000_probe()
7501 if (adapter->hw.phy.media_type == e1000_media_type_copper) { in e1000_probe()
7502 adapter->hw.phy.mdix = AUTO_ALL_MODES; in e1000_probe()
7503 adapter->hw.phy.disable_polarity_correction = 0; in e1000_probe()
7504 adapter->hw.phy.ms_type = e1000_ms_hw_default; in e1000_probe()
7525 if (!(adapter->flags & FLAG_TSO_FORCE)) { in e1000_probe()
7526 switch (adapter->link_speed) { in e1000_probe()
7553 if (adapter->flags & FLAG_HAS_HW_VLAN_FILTER) in e1000_probe()
7568 netdev->max_mtu = adapter->max_hw_frame_size - in e1000_probe()
7571 if (e1000e_enable_mng_pass_thru(&adapter->hw)) in e1000_probe()
7572 adapter->flags |= FLAG_MNG_PT_ENABLED; in e1000_probe()
7577 adapter->hw.mac.ops.reset_hw(&adapter->hw); in e1000_probe()
7583 if (e1000_validate_nvm_checksum(&adapter->hw) >= 0) in e1000_probe()
7592 e1000_eeprom_checks(adapter); in e1000_probe()
7595 if (e1000e_read_mac_addr(&adapter->hw)) in e1000_probe()
7599 eth_hw_addr_set(netdev, adapter->hw.mac.addr); in e1000_probe()
7608 timer_setup(&adapter->watchdog_timer, e1000_watchdog, 0); in e1000_probe()
7609 timer_setup(&adapter->phy_info_timer, e1000_update_phy_info, 0); in e1000_probe()
7611 INIT_WORK(&adapter->reset_task, e1000_reset_task); in e1000_probe()
7612 INIT_WORK(&adapter->watchdog_task, e1000_watchdog_task); in e1000_probe()
7613 INIT_WORK(&adapter->downshift_task, e1000e_downshift_workaround); in e1000_probe()
7614 INIT_WORK(&adapter->update_phy_task, e1000e_update_phy_task); in e1000_probe()
7615 INIT_WORK(&adapter->print_hang_task, e1000_print_hw_hang); in e1000_probe()
7618 adapter->hw.mac.autoneg = 1; in e1000_probe()
7619 adapter->fc_autoneg = true; in e1000_probe()
7620 adapter->hw.fc.requested_mode = e1000_fc_default; in e1000_probe()
7621 adapter->hw.fc.current_mode = e1000_fc_default; in e1000_probe()
7622 adapter->hw.phy.autoneg_advertised = 0x2f; in e1000_probe()
7627 if (adapter->flags & FLAG_APME_IN_WUC) { in e1000_probe()
7633 adapter->flags2 |= FLAG2_HAS_PHY_WAKEUP; in e1000_probe()
7634 } else if (adapter->flags & FLAG_APME_IN_CTRL3) { in e1000_probe()
7635 if (adapter->flags & FLAG_APME_CHECK_PORT_B && in e1000_probe()
7636 (adapter->hw.bus.func == 1)) in e1000_probe()
7637 ret_val = e1000_read_nvm(&adapter->hw, in e1000_probe()
7641 ret_val = e1000_read_nvm(&adapter->hw, in e1000_probe()
7650 adapter->eeprom_wol |= E1000_WUFC_MAG; in e1000_probe()
7656 if (!(adapter->flags & FLAG_HAS_WOL)) in e1000_probe()
7657 adapter->eeprom_wol = 0; in e1000_probe()
7660 adapter->wol = adapter->eeprom_wol; in e1000_probe()
7663 if (adapter->wol || (adapter->flags & FLAG_MNG_PT_ENABLED) || in e1000_probe()
7668 ret_val = e1000_read_nvm(&adapter->hw, 5, 1, &adapter->eeprom_vers); in e1000_probe()
7672 adapter->eeprom_vers = 0; in e1000_probe()
7676 e1000e_ptp_init(adapter); in e1000_probe()
7679 e1000e_reset(adapter); in e1000_probe()
7685 if (!(adapter->flags & FLAG_HAS_AMT)) in e1000_probe()
7686 e1000e_get_hw_control(adapter); in e1000_probe()
7689 adapter->flags2 |= FLAG2_ENABLE_S0IX_FLOWS; in e1000_probe()
7699 e1000_print_device_info(adapter); in e1000_probe()
7709 if (!(adapter->flags & FLAG_HAS_AMT)) in e1000_probe()
7710 e1000e_release_hw_control(adapter); in e1000_probe()
7713 e1000_phy_hw_reset(&adapter->hw); in e1000_probe()
7715 kfree(adapter->tx_ring); in e1000_probe()
7716 kfree(adapter->rx_ring); in e1000_probe()
7718 if ((adapter->hw.flash_address) && (hw->mac.type < e1000_pch_spt)) in e1000_probe()
7719 iounmap(adapter->hw.flash_address); in e1000_probe()
7720 e1000e_reset_interrupt_capability(adapter); in e1000_probe()
7722 iounmap(adapter->hw.hw_addr); in e1000_probe()
7745 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_remove() local
7747 e1000e_ptp_remove(adapter); in e1000_remove()
7752 set_bit(__E1000_DOWN, &adapter->state); in e1000_remove()
7753 timer_delete_sync(&adapter->watchdog_timer); in e1000_remove()
7754 timer_delete_sync(&adapter->phy_info_timer); in e1000_remove()
7756 cancel_work_sync(&adapter->reset_task); in e1000_remove()
7757 cancel_work_sync(&adapter->watchdog_task); in e1000_remove()
7758 cancel_work_sync(&adapter->downshift_task); in e1000_remove()
7759 cancel_work_sync(&adapter->update_phy_task); in e1000_remove()
7760 cancel_work_sync(&adapter->print_hang_task); in e1000_remove()
7762 if (adapter->flags & FLAG_HAS_HW_TIMESTAMP) { in e1000_remove()
7763 cancel_work_sync(&adapter->tx_hwtstamp_work); in e1000_remove()
7764 if (adapter->tx_hwtstamp_skb) { in e1000_remove()
7765 dev_consume_skb_any(adapter->tx_hwtstamp_skb); in e1000_remove()
7766 adapter->tx_hwtstamp_skb = NULL; in e1000_remove()
7778 e1000e_release_hw_control(adapter); in e1000_remove()
7780 e1000e_reset_interrupt_capability(adapter); in e1000_remove()
7781 kfree(adapter->tx_ring); in e1000_remove()
7782 kfree(adapter->rx_ring); in e1000_remove()
7784 iounmap(adapter->hw.hw_addr); in e1000_remove()
7785 if ((adapter->hw.flash_address) && in e1000_remove()
7786 (adapter->hw.mac.type < e1000_pch_spt)) in e1000_remove()
7787 iounmap(adapter->hw.flash_address); in e1000_remove()