Lines Matching refs:adapter

151 	if (hw->adapter->flags2 & FLAG2_PCIM2PCI_ARBITER_WA)  in __ew32()
191 static void e1000e_dump_ps_pages(struct e1000_adapter *adapter, in e1000e_dump_ps_pages() argument
197 for (i = 0; i < adapter->rx_ps_pages; i++) { in e1000e_dump_ps_pages()
213 static void e1000e_dump(struct e1000_adapter *adapter) in e1000e_dump() argument
215 struct net_device *netdev = adapter->netdev; in e1000e_dump()
216 struct e1000_hw *hw = &adapter->hw; in e1000e_dump()
218 struct e1000_ring *tx_ring = adapter->tx_ring; in e1000e_dump()
225 struct e1000_ring *rx_ring = adapter->rx_ring; in e1000e_dump()
237 if (!netif_msg_hw(adapter)) in e1000e_dump()
242 dev_info(&adapter->pdev->dev, "Net device Info\n"); in e1000e_dump()
249 dev_info(&adapter->pdev->dev, "Register Dump\n"); in e1000e_dump()
260 dev_info(&adapter->pdev->dev, "Tx Ring Summary\n"); in e1000e_dump()
271 if (!netif_msg_tx_done(adapter)) in e1000e_dump()
274 dev_info(&adapter->pdev->dev, "Tx Ring Dump\n"); in e1000e_dump()
330 if (netif_msg_pktdata(adapter) && buffer_info->skb) in e1000e_dump()
338 dev_info(&adapter->pdev->dev, "Rx Ring Summary\n"); in e1000e_dump()
344 if (!netif_msg_rx_status(adapter)) in e1000e_dump()
347 dev_info(&adapter->pdev->dev, "Rx Ring Dump\n"); in e1000e_dump()
348 switch (adapter->rx_ps_pages) { in e1000e_dump()
411 if (netif_msg_pktdata(adapter)) in e1000e_dump()
412 e1000e_dump_ps_pages(adapter, in e1000e_dump()
473 if (netif_msg_pktdata(adapter) && in e1000e_dump()
479 adapter->rx_buffer_len, in e1000e_dump()
511 static void e1000e_systim_to_hwtstamp(struct e1000_adapter *adapter, in e1000e_systim_to_hwtstamp() argument
518 spin_lock_irqsave(&adapter->systim_lock, flags); in e1000e_systim_to_hwtstamp()
519 ns = timecounter_cyc2time(&adapter->tc, systim); in e1000e_systim_to_hwtstamp()
520 spin_unlock_irqrestore(&adapter->systim_lock, flags); in e1000e_systim_to_hwtstamp()
536 static void e1000e_rx_hwtstamp(struct e1000_adapter *adapter, u32 status, in e1000e_rx_hwtstamp() argument
539 struct e1000_hw *hw = &adapter->hw; in e1000e_rx_hwtstamp()
542 if (!(adapter->flags & FLAG_HAS_HW_TIMESTAMP) || in e1000e_rx_hwtstamp()
556 e1000e_systim_to_hwtstamp(adapter, skb_hwtstamps(skb), rxstmp); in e1000e_rx_hwtstamp()
558 adapter->flags2 &= ~FLAG2_CHECK_RX_HWTSTAMP; in e1000e_rx_hwtstamp()
568 static void e1000_receive_skb(struct e1000_adapter *adapter, in e1000_receive_skb() argument
574 e1000e_rx_hwtstamp(adapter, staterr, skb); in e1000_receive_skb()
581 napi_gro_receive(&adapter->napi, skb); in e1000_receive_skb()
591 static void e1000_rx_checksum(struct e1000_adapter *adapter, u32 status_err, in e1000_rx_checksum() argument
600 if (!(adapter->netdev->features & NETIF_F_RXCSUM)) in e1000_rx_checksum()
610 adapter->hw_csum_err++; in e1000_rx_checksum()
620 adapter->hw_csum_good++; in e1000_rx_checksum()
625 struct e1000_adapter *adapter = rx_ring->adapter; in e1000e_update_rdt_wa() local
626 struct e1000_hw *hw = &adapter->hw; in e1000e_update_rdt_wa()
636 schedule_work(&adapter->reset_task); in e1000e_update_rdt_wa()
642 struct e1000_adapter *adapter = tx_ring->adapter; in e1000e_update_tdt_wa() local
643 struct e1000_hw *hw = &adapter->hw; in e1000e_update_tdt_wa()
653 schedule_work(&adapter->reset_task); in e1000e_update_tdt_wa()
664 struct e1000_adapter *adapter = rx_ring->adapter; in e1000_alloc_rx_buffers() local
665 struct net_device *netdev = adapter->netdev; in e1000_alloc_rx_buffers()
666 struct pci_dev *pdev = adapter->pdev; in e1000_alloc_rx_buffers()
671 unsigned int bufsz = adapter->rx_buffer_len; in e1000_alloc_rx_buffers()
686 adapter->alloc_rx_buff_failed++; in e1000_alloc_rx_buffers()
693 adapter->rx_buffer_len, in e1000_alloc_rx_buffers()
697 adapter->rx_dma_failed++; in e1000_alloc_rx_buffers()
711 if (adapter->flags2 & FLAG2_PCIM2PCI_ARBITER_WA) in e1000_alloc_rx_buffers()
732 struct e1000_adapter *adapter = rx_ring->adapter; in e1000_alloc_rx_buffers_ps() local
733 struct net_device *netdev = adapter->netdev; in e1000_alloc_rx_buffers_ps()
734 struct pci_dev *pdev = adapter->pdev; in e1000_alloc_rx_buffers_ps()
749 if (j >= adapter->rx_ps_pages) { in e1000_alloc_rx_buffers_ps()
758 adapter->alloc_rx_buff_failed++; in e1000_alloc_rx_buffers_ps()
767 dev_err(&adapter->pdev->dev, in e1000_alloc_rx_buffers_ps()
769 adapter->rx_dma_failed++; in e1000_alloc_rx_buffers_ps()
781 skb = __netdev_alloc_skb_ip_align(netdev, adapter->rx_ps_bsize0, in e1000_alloc_rx_buffers_ps()
785 adapter->alloc_rx_buff_failed++; in e1000_alloc_rx_buffers_ps()
791 adapter->rx_ps_bsize0, in e1000_alloc_rx_buffers_ps()
795 adapter->rx_dma_failed++; in e1000_alloc_rx_buffers_ps()
811 if (adapter->flags2 & FLAG2_PCIM2PCI_ARBITER_WA) in e1000_alloc_rx_buffers_ps()
836 struct e1000_adapter *adapter = rx_ring->adapter; in e1000_alloc_jumbo_rx_buffers() local
837 struct net_device *netdev = adapter->netdev; in e1000_alloc_jumbo_rx_buffers()
838 struct pci_dev *pdev = adapter->pdev; in e1000_alloc_jumbo_rx_buffers()
858 adapter->alloc_rx_buff_failed++; in e1000_alloc_jumbo_rx_buffers()
868 adapter->alloc_rx_buff_failed++; in e1000_alloc_jumbo_rx_buffers()
879 adapter->alloc_rx_buff_failed++; in e1000_alloc_jumbo_rx_buffers()
903 if (adapter->flags2 & FLAG2_PCIM2PCI_ARBITER_WA) in e1000_alloc_jumbo_rx_buffers()
927 struct e1000_adapter *adapter = rx_ring->adapter; in e1000_clean_rx_irq() local
928 struct net_device *netdev = adapter->netdev; in e1000_clean_rx_irq()
929 struct pci_dev *pdev = adapter->pdev; in e1000_clean_rx_irq()
930 struct e1000_hw *hw = &adapter->hw; in e1000_clean_rx_irq()
968 adapter->rx_buffer_len, DMA_FROM_DEVICE); in e1000_clean_rx_irq()
980 adapter->flags2 |= FLAG2_IS_DISCARDING; in e1000_clean_rx_irq()
982 if (adapter->flags2 & FLAG2_IS_DISCARDING) { in e1000_clean_rx_irq()
988 adapter->flags2 &= ~FLAG2_IS_DISCARDING; in e1000_clean_rx_irq()
1000 if (!(adapter->flags2 & FLAG2_CRC_STRIPPING)) { in e1000_clean_rx_irq()
1020 napi_alloc_skb(&adapter->napi, length); in e1000_clean_rx_irq()
1038 e1000_rx_checksum(adapter, staterr, skb); in e1000_clean_rx_irq()
1042 e1000_receive_skb(adapter, netdev, skb, staterr, in e1000_clean_rx_irq()
1050 adapter->alloc_rx_buf(rx_ring, cleaned_count, in e1000_clean_rx_irq()
1065 adapter->alloc_rx_buf(rx_ring, cleaned_count, GFP_ATOMIC); in e1000_clean_rx_irq()
1067 adapter->total_rx_bytes += total_rx_bytes; in e1000_clean_rx_irq()
1068 adapter->total_rx_packets += total_rx_packets; in e1000_clean_rx_irq()
1075 struct e1000_adapter *adapter = tx_ring->adapter; in e1000_put_txbuf() local
1079 dma_unmap_page(&adapter->pdev->dev, buffer_info->dma, in e1000_put_txbuf()
1082 dma_unmap_single(&adapter->pdev->dev, buffer_info->dma, in e1000_put_txbuf()
1095 struct e1000_adapter *adapter = container_of(work, in e1000_print_hw_hang() local
1098 struct net_device *netdev = adapter->netdev; in e1000_print_hw_hang()
1099 struct e1000_ring *tx_ring = adapter->tx_ring; in e1000_print_hw_hang()
1103 struct e1000_hw *hw = &adapter->hw; in e1000_print_hw_hang()
1107 if (test_bit(__E1000_DOWN, &adapter->state)) in e1000_print_hw_hang()
1110 if (!adapter->tx_hang_recheck && (adapter->flags2 & FLAG2_DMA_BURST)) { in e1000_print_hw_hang()
1114 ew32(TIDV, adapter->tx_int_delay | E1000_TIDV_FPD); in e1000_print_hw_hang()
1120 ew32(TIDV, adapter->tx_int_delay | E1000_TIDV_FPD); in e1000_print_hw_hang()
1123 adapter->tx_hang_recheck = true; in e1000_print_hw_hang()
1126 adapter->tx_hang_recheck = false; in e1000_print_hw_hang()
1140 pci_read_config_word(adapter->pdev, PCI_STATUS, &pci_status); in e1000_print_hw_hang()
1163 e1000e_dump(adapter); in e1000_print_hw_hang()
1180 struct e1000_adapter *adapter = container_of(work, struct e1000_adapter, in e1000e_tx_hwtstamp_work() local
1182 struct e1000_hw *hw = &adapter->hw; in e1000e_tx_hwtstamp_work()
1191 e1000e_systim_to_hwtstamp(adapter, &shhwtstamps, txstmp); in e1000e_tx_hwtstamp_work()
1193 skb_tstamp_tx(adapter->tx_hwtstamp_skb, &shhwtstamps); in e1000e_tx_hwtstamp_work()
1194 dev_kfree_skb_any(adapter->tx_hwtstamp_skb); in e1000e_tx_hwtstamp_work()
1195 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()
1311 struct e1000_adapter *adapter = rx_ring->adapter; in e1000_clean_rx_irq_ps() local
1312 struct e1000_hw *hw = &adapter->hw; in e1000_clean_rx_irq_ps()
1314 struct net_device *netdev = adapter->netdev; in e1000_clean_rx_irq_ps()
1315 struct pci_dev *pdev = adapter->pdev; in e1000_clean_rx_irq_ps()
1351 adapter->rx_ps_bsize0, DMA_FROM_DEVICE); in e1000_clean_rx_irq_ps()
1356 adapter->flags2 |= FLAG2_IS_DISCARDING; in e1000_clean_rx_irq_ps()
1358 if (adapter->flags2 & FLAG2_IS_DISCARDING) { in e1000_clean_rx_irq_ps()
1362 adapter->flags2 &= ~FLAG2_IS_DISCARDING; in e1000_clean_rx_irq_ps()
1395 ((length + l1) <= adapter->rx_ps_bsize0)) { in e1000_clean_rx_irq_ps()
1417 if (!(adapter->flags2 & FLAG2_CRC_STRIPPING)) { in e1000_clean_rx_irq_ps()
1446 if (!(adapter->flags2 & FLAG2_CRC_STRIPPING)) { in e1000_clean_rx_irq_ps()
1455 e1000_rx_checksum(adapter, staterr, skb); in e1000_clean_rx_irq_ps()
1461 adapter->rx_hdr_split++; in e1000_clean_rx_irq_ps()
1463 e1000_receive_skb(adapter, netdev, skb, staterr, in e1000_clean_rx_irq_ps()
1472 adapter->alloc_rx_buf(rx_ring, cleaned_count, in e1000_clean_rx_irq_ps()
1487 adapter->alloc_rx_buf(rx_ring, cleaned_count, GFP_ATOMIC); in e1000_clean_rx_irq_ps()
1489 adapter->total_rx_bytes += total_rx_bytes; in e1000_clean_rx_irq_ps()
1490 adapter->total_rx_packets += total_rx_packets; in e1000_clean_rx_irq_ps()
1516 struct e1000_adapter *adapter = rx_ring->adapter; in e1000_clean_jumbo_rx_irq() local
1517 struct net_device *netdev = adapter->netdev; in e1000_clean_jumbo_rx_irq()
1518 struct pci_dev *pdev = adapter->pdev; in e1000_clean_jumbo_rx_irq()
1631 e1000_rx_checksum(adapter, staterr, skb); in e1000_clean_jumbo_rx_irq()
1646 e1000_receive_skb(adapter, netdev, skb, staterr, in e1000_clean_jumbo_rx_irq()
1654 adapter->alloc_rx_buf(rx_ring, cleaned_count, in e1000_clean_jumbo_rx_irq()
1669 adapter->alloc_rx_buf(rx_ring, cleaned_count, GFP_ATOMIC); in e1000_clean_jumbo_rx_irq()
1671 adapter->total_rx_bytes += total_rx_bytes; in e1000_clean_jumbo_rx_irq()
1672 adapter->total_rx_packets += total_rx_packets; in e1000_clean_jumbo_rx_irq()
1682 struct e1000_adapter *adapter = rx_ring->adapter; in e1000_clean_rx_ring() local
1685 struct pci_dev *pdev = adapter->pdev; in e1000_clean_rx_ring()
1692 if (adapter->clean_rx == e1000_clean_rx_irq) in e1000_clean_rx_ring()
1694 adapter->rx_buffer_len, in e1000_clean_rx_ring()
1696 else if (adapter->clean_rx == e1000_clean_jumbo_rx_irq) in e1000_clean_rx_ring()
1699 else if (adapter->clean_rx == e1000_clean_rx_irq_ps) in e1000_clean_rx_ring()
1701 adapter->rx_ps_bsize0, in e1000_clean_rx_ring()
1739 adapter->flags2 &= ~FLAG2_IS_DISCARDING; in e1000_clean_rx_ring()
1744 struct e1000_adapter *adapter = container_of(work, in e1000e_downshift_workaround() local
1748 if (test_bit(__E1000_DOWN, &adapter->state)) in e1000e_downshift_workaround()
1751 e1000e_gig_downshift_workaround_ich8lan(&adapter->hw); in e1000e_downshift_workaround()
1762 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_intr_msi() local
1763 struct e1000_hw *hw = &adapter->hw; in e1000_intr_msi()
1772 if ((adapter->flags & FLAG_LSC_GIG_SPEED_DROP) && in e1000_intr_msi()
1774 schedule_work(&adapter->downshift_task); in e1000_intr_msi()
1781 adapter->flags & FLAG_RX_NEEDS_RESTART) { in e1000_intr_msi()
1786 adapter->flags |= FLAG_RESTART_NOW; in e1000_intr_msi()
1789 if (!test_bit(__E1000_DOWN, &adapter->state)) in e1000_intr_msi()
1790 mod_timer(&adapter->watchdog_timer, jiffies + 1); in e1000_intr_msi()
1798 adapter->corr_errors += in e1000_intr_msi()
1800 adapter->uncorr_errors += in e1000_intr_msi()
1805 schedule_work(&adapter->reset_task); in e1000_intr_msi()
1811 if (napi_schedule_prep(&adapter->napi)) { in e1000_intr_msi()
1812 adapter->total_tx_bytes = 0; in e1000_intr_msi()
1813 adapter->total_tx_packets = 0; in e1000_intr_msi()
1814 adapter->total_rx_bytes = 0; in e1000_intr_msi()
1815 adapter->total_rx_packets = 0; in e1000_intr_msi()
1816 __napi_schedule(&adapter->napi); in e1000_intr_msi()
1830 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_intr() local
1831 struct e1000_hw *hw = &adapter->hw; in e1000_intr()
1834 if (!icr || test_bit(__E1000_DOWN, &adapter->state)) in e1000_intr()
1853 if ((adapter->flags & FLAG_LSC_GIG_SPEED_DROP) && in e1000_intr()
1855 schedule_work(&adapter->downshift_task); in e1000_intr()
1863 (adapter->flags & FLAG_RX_NEEDS_RESTART)) { in e1000_intr()
1867 adapter->flags |= FLAG_RESTART_NOW; in e1000_intr()
1870 if (!test_bit(__E1000_DOWN, &adapter->state)) in e1000_intr()
1871 mod_timer(&adapter->watchdog_timer, jiffies + 1); in e1000_intr()
1879 adapter->corr_errors += in e1000_intr()
1881 adapter->uncorr_errors += in e1000_intr()
1886 schedule_work(&adapter->reset_task); in e1000_intr()
1892 if (napi_schedule_prep(&adapter->napi)) { in e1000_intr()
1893 adapter->total_tx_bytes = 0; in e1000_intr()
1894 adapter->total_tx_packets = 0; in e1000_intr()
1895 adapter->total_rx_bytes = 0; in e1000_intr()
1896 adapter->total_rx_packets = 0; in e1000_intr()
1897 __napi_schedule(&adapter->napi); in e1000_intr()
1906 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_msix_other() local
1907 struct e1000_hw *hw = &adapter->hw; in e1000_msix_other()
1911 if (!test_bit(__E1000_DOWN, &adapter->state)) in e1000_msix_other()
1916 if (icr & adapter->eiac_mask) in e1000_msix_other()
1917 ew32(ICS, (icr & adapter->eiac_mask)); in e1000_msix_other()
1924 if (!test_bit(__E1000_DOWN, &adapter->state)) in e1000_msix_other()
1925 mod_timer(&adapter->watchdog_timer, jiffies + 1); in e1000_msix_other()
1929 if (!test_bit(__E1000_DOWN, &adapter->state)) in e1000_msix_other()
1938 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_intr_msix_tx() local
1939 struct e1000_hw *hw = &adapter->hw; in e1000_intr_msix_tx()
1940 struct e1000_ring *tx_ring = adapter->tx_ring; in e1000_intr_msix_tx()
1942 adapter->total_tx_bytes = 0; in e1000_intr_msix_tx()
1943 adapter->total_tx_packets = 0; in e1000_intr_msix_tx()
1955 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_intr_msix_rx() local
1956 struct e1000_ring *rx_ring = adapter->rx_ring; in e1000_intr_msix_rx()
1967 if (napi_schedule_prep(&adapter->napi)) { in e1000_intr_msix_rx()
1968 adapter->total_rx_bytes = 0; in e1000_intr_msix_rx()
1969 adapter->total_rx_packets = 0; in e1000_intr_msix_rx()
1970 __napi_schedule(&adapter->napi); in e1000_intr_msix_rx()
1981 static void e1000_configure_msix(struct e1000_adapter *adapter) in e1000_configure_msix() argument
1983 struct e1000_hw *hw = &adapter->hw; in e1000_configure_msix()
1984 struct e1000_ring *rx_ring = adapter->rx_ring; in e1000_configure_msix()
1985 struct e1000_ring *tx_ring = adapter->tx_ring; in e1000_configure_msix()
1989 adapter->eiac_mask = 0; in e1000_configure_msix()
2001 adapter->eiac_mask |= rx_ring->ims_val; in e1000_configure_msix()
2017 adapter->eiac_mask |= tx_ring->ims_val; in e1000_configure_msix()
2045 void e1000e_reset_interrupt_capability(struct e1000_adapter *adapter) in e1000e_reset_interrupt_capability() argument
2047 if (adapter->msix_entries) { in e1000e_reset_interrupt_capability()
2048 pci_disable_msix(adapter->pdev); in e1000e_reset_interrupt_capability()
2049 kfree(adapter->msix_entries); in e1000e_reset_interrupt_capability()
2050 adapter->msix_entries = NULL; in e1000e_reset_interrupt_capability()
2051 } else if (adapter->flags & FLAG_MSI_ENABLED) { in e1000e_reset_interrupt_capability()
2052 pci_disable_msi(adapter->pdev); in e1000e_reset_interrupt_capability()
2053 adapter->flags &= ~FLAG_MSI_ENABLED; in e1000e_reset_interrupt_capability()
2063 void e1000e_set_interrupt_capability(struct e1000_adapter *adapter) in e1000e_set_interrupt_capability() argument
2068 switch (adapter->int_mode) { in e1000e_set_interrupt_capability()
2070 if (adapter->flags & FLAG_HAS_MSIX) { in e1000e_set_interrupt_capability()
2071 adapter->num_vectors = 3; /* RxQ0, TxQ0 and other */ in e1000e_set_interrupt_capability()
2072 adapter->msix_entries = kcalloc(adapter->num_vectors, in e1000e_set_interrupt_capability()
2076 if (adapter->msix_entries) { in e1000e_set_interrupt_capability()
2077 struct e1000_adapter *a = adapter; in e1000e_set_interrupt_capability()
2079 for (i = 0; i < adapter->num_vectors; i++) in e1000e_set_interrupt_capability()
2080 adapter->msix_entries[i].entry = i; in e1000e_set_interrupt_capability()
2091 e1000e_reset_interrupt_capability(adapter); in e1000e_set_interrupt_capability()
2093 adapter->int_mode = E1000E_INT_MODE_MSI; in e1000e_set_interrupt_capability()
2096 if (!pci_enable_msi(adapter->pdev)) { in e1000e_set_interrupt_capability()
2097 adapter->flags |= FLAG_MSI_ENABLED; in e1000e_set_interrupt_capability()
2099 adapter->int_mode = E1000E_INT_MODE_LEGACY; in e1000e_set_interrupt_capability()
2109 adapter->num_vectors = 1; in e1000e_set_interrupt_capability()
2118 static int e1000_request_msix(struct e1000_adapter *adapter) in e1000_request_msix() argument
2120 struct net_device *netdev = adapter->netdev; in e1000_request_msix()
2124 snprintf(adapter->rx_ring->name, in e1000_request_msix()
2125 sizeof(adapter->rx_ring->name) - 1, in e1000_request_msix()
2128 memcpy(adapter->rx_ring->name, netdev->name, IFNAMSIZ); in e1000_request_msix()
2129 err = request_irq(adapter->msix_entries[vector].vector, in e1000_request_msix()
2130 e1000_intr_msix_rx, 0, adapter->rx_ring->name, in e1000_request_msix()
2134 adapter->rx_ring->itr_register = adapter->hw.hw_addr + in e1000_request_msix()
2136 adapter->rx_ring->itr_val = adapter->itr; in e1000_request_msix()
2140 snprintf(adapter->tx_ring->name, in e1000_request_msix()
2141 sizeof(adapter->tx_ring->name) - 1, in e1000_request_msix()
2144 memcpy(adapter->tx_ring->name, netdev->name, IFNAMSIZ); in e1000_request_msix()
2145 err = request_irq(adapter->msix_entries[vector].vector, in e1000_request_msix()
2146 e1000_intr_msix_tx, 0, adapter->tx_ring->name, in e1000_request_msix()
2150 adapter->tx_ring->itr_register = adapter->hw.hw_addr + in e1000_request_msix()
2152 adapter->tx_ring->itr_val = adapter->itr; in e1000_request_msix()
2155 err = request_irq(adapter->msix_entries[vector].vector, in e1000_request_msix()
2160 e1000_configure_msix(adapter); in e1000_request_msix()
2171 static int e1000_request_irq(struct e1000_adapter *adapter) in e1000_request_irq() argument
2173 struct net_device *netdev = adapter->netdev; in e1000_request_irq()
2176 if (adapter->msix_entries) { in e1000_request_irq()
2177 err = e1000_request_msix(adapter); in e1000_request_irq()
2181 e1000e_reset_interrupt_capability(adapter); in e1000_request_irq()
2182 adapter->int_mode = E1000E_INT_MODE_MSI; in e1000_request_irq()
2183 e1000e_set_interrupt_capability(adapter); in e1000_request_irq()
2185 if (adapter->flags & FLAG_MSI_ENABLED) { in e1000_request_irq()
2186 err = request_irq(adapter->pdev->irq, e1000_intr_msi, 0, in e1000_request_irq()
2192 e1000e_reset_interrupt_capability(adapter); in e1000_request_irq()
2193 adapter->int_mode = E1000E_INT_MODE_LEGACY; in e1000_request_irq()
2196 err = request_irq(adapter->pdev->irq, e1000_intr, IRQF_SHARED, in e1000_request_irq()
2204 static void e1000_free_irq(struct e1000_adapter *adapter) in e1000_free_irq() argument
2206 struct net_device *netdev = adapter->netdev; in e1000_free_irq()
2208 if (adapter->msix_entries) { in e1000_free_irq()
2211 free_irq(adapter->msix_entries[vector].vector, netdev); in e1000_free_irq()
2214 free_irq(adapter->msix_entries[vector].vector, netdev); in e1000_free_irq()
2218 free_irq(adapter->msix_entries[vector].vector, netdev); in e1000_free_irq()
2222 free_irq(adapter->pdev->irq, netdev); in e1000_free_irq()
2228 static void e1000_irq_disable(struct e1000_adapter *adapter) in e1000_irq_disable() argument
2230 struct e1000_hw *hw = &adapter->hw; in e1000_irq_disable()
2233 if (adapter->msix_entries) in e1000_irq_disable()
2237 if (adapter->msix_entries) { in e1000_irq_disable()
2240 for (i = 0; i < adapter->num_vectors; i++) in e1000_irq_disable()
2241 synchronize_irq(adapter->msix_entries[i].vector); in e1000_irq_disable()
2243 synchronize_irq(adapter->pdev->irq); in e1000_irq_disable()
2250 static void e1000_irq_enable(struct e1000_adapter *adapter) in e1000_irq_enable() argument
2252 struct e1000_hw *hw = &adapter->hw; in e1000_irq_enable()
2254 if (adapter->msix_entries) { in e1000_irq_enable()
2255 ew32(EIAC_82574, adapter->eiac_mask & E1000_EIAC_MASK_82574); in e1000_irq_enable()
2256 ew32(IMS, adapter->eiac_mask | E1000_IMS_OTHER | E1000_IMS_LSC); in e1000_irq_enable()
2275 void e1000e_get_hw_control(struct e1000_adapter *adapter) in e1000e_get_hw_control() argument
2277 struct e1000_hw *hw = &adapter->hw; in e1000e_get_hw_control()
2282 if (adapter->flags & FLAG_HAS_SWSM_ON_LOAD) { in e1000e_get_hw_control()
2285 } else if (adapter->flags & FLAG_HAS_CTRLEXT_ON_LOAD) { in e1000e_get_hw_control()
2301 void e1000e_release_hw_control(struct e1000_adapter *adapter) in e1000e_release_hw_control() argument
2303 struct e1000_hw *hw = &adapter->hw; in e1000e_release_hw_control()
2308 if (adapter->flags & FLAG_HAS_SWSM_ON_LOAD) { in e1000e_release_hw_control()
2311 } else if (adapter->flags & FLAG_HAS_CTRLEXT_ON_LOAD) { in e1000e_release_hw_control()
2320 static int e1000_alloc_ring_dma(struct e1000_adapter *adapter, in e1000_alloc_ring_dma() argument
2323 struct pci_dev *pdev = adapter->pdev; in e1000_alloc_ring_dma()
2341 struct e1000_adapter *adapter = tx_ring->adapter; in e1000e_setup_tx_resources() local
2353 err = e1000_alloc_ring_dma(adapter, tx_ring); in e1000e_setup_tx_resources()
2375 struct e1000_adapter *adapter = rx_ring->adapter; in e1000e_setup_rx_resources() local
2399 err = e1000_alloc_ring_dma(adapter, rx_ring); in e1000e_setup_rx_resources()
2426 struct e1000_adapter *adapter = tx_ring->adapter; in e1000_clean_tx_ring() local
2436 netdev_reset_queue(adapter->netdev); in e1000_clean_tx_ring()
2454 struct e1000_adapter *adapter = tx_ring->adapter; in e1000e_free_tx_resources() local
2455 struct pci_dev *pdev = adapter->pdev; in e1000e_free_tx_resources()
2475 struct e1000_adapter *adapter = rx_ring->adapter; in e1000e_free_rx_resources() local
2476 struct pci_dev *pdev = adapter->pdev; in e1000e_free_rx_resources()
2551 static void e1000_set_itr(struct e1000_adapter *adapter) in e1000_set_itr() argument
2554 u32 new_itr = adapter->itr; in e1000_set_itr()
2557 if (adapter->link_speed != SPEED_1000) { in e1000_set_itr()
2563 if (adapter->flags2 & FLAG2_DISABLE_AIM) { in e1000_set_itr()
2568 adapter->tx_itr = e1000_update_itr(adapter->tx_itr, in e1000_set_itr()
2569 adapter->total_tx_packets, in e1000_set_itr()
2570 adapter->total_tx_bytes); in e1000_set_itr()
2572 if (adapter->itr_setting == 3 && adapter->tx_itr == lowest_latency) in e1000_set_itr()
2573 adapter->tx_itr = low_latency; in e1000_set_itr()
2575 adapter->rx_itr = e1000_update_itr(adapter->rx_itr, in e1000_set_itr()
2576 adapter->total_rx_packets, in e1000_set_itr()
2577 adapter->total_rx_bytes); in e1000_set_itr()
2579 if (adapter->itr_setting == 3 && adapter->rx_itr == lowest_latency) in e1000_set_itr()
2580 adapter->rx_itr = low_latency; in e1000_set_itr()
2582 current_itr = max(adapter->rx_itr, adapter->tx_itr); in e1000_set_itr()
2600 if (new_itr != adapter->itr) { in e1000_set_itr()
2605 new_itr = new_itr > adapter->itr ? in e1000_set_itr()
2606 min(adapter->itr + (new_itr >> 2), new_itr) : new_itr; in e1000_set_itr()
2607 adapter->itr = new_itr; in e1000_set_itr()
2608 adapter->rx_ring->itr_val = new_itr; in e1000_set_itr()
2609 if (adapter->msix_entries) in e1000_set_itr()
2610 adapter->rx_ring->set_itr = 1; in e1000_set_itr()
2612 e1000e_write_itr(adapter, new_itr); in e1000_set_itr()
2625 void e1000e_write_itr(struct e1000_adapter *adapter, u32 itr) in e1000e_write_itr() argument
2627 struct e1000_hw *hw = &adapter->hw; in e1000e_write_itr()
2630 if (adapter->msix_entries) { in e1000e_write_itr()
2633 for (vector = 0; vector < adapter->num_vectors; vector++) in e1000e_write_itr()
2644 static int e1000_alloc_queues(struct e1000_adapter *adapter) in e1000_alloc_queues() argument
2648 adapter->tx_ring = kzalloc(size, GFP_KERNEL); in e1000_alloc_queues()
2649 if (!adapter->tx_ring) in e1000_alloc_queues()
2651 adapter->tx_ring->count = adapter->tx_ring_count; in e1000_alloc_queues()
2652 adapter->tx_ring->adapter = adapter; in e1000_alloc_queues()
2654 adapter->rx_ring = kzalloc(size, GFP_KERNEL); in e1000_alloc_queues()
2655 if (!adapter->rx_ring) in e1000_alloc_queues()
2657 adapter->rx_ring->count = adapter->rx_ring_count; in e1000_alloc_queues()
2658 adapter->rx_ring->adapter = adapter; in e1000_alloc_queues()
2663 kfree(adapter->rx_ring); in e1000_alloc_queues()
2664 kfree(adapter->tx_ring); in e1000_alloc_queues()
2675 struct e1000_adapter *adapter = container_of(napi, struct e1000_adapter, in e1000e_poll() local
2677 struct e1000_hw *hw = &adapter->hw; in e1000e_poll()
2678 struct net_device *poll_dev = adapter->netdev; in e1000e_poll()
2681 adapter = netdev_priv(poll_dev); in e1000e_poll()
2683 if (!adapter->msix_entries || in e1000e_poll()
2684 (adapter->rx_ring->ims_val & adapter->tx_ring->ims_val)) in e1000e_poll()
2685 tx_cleaned = e1000_clean_tx_irq(adapter->tx_ring); in e1000e_poll()
2687 adapter->clean_rx(adapter->rx_ring, &work_done, weight); in e1000e_poll()
2694 if (adapter->itr_setting & 3) in e1000e_poll()
2695 e1000_set_itr(adapter); in e1000e_poll()
2697 if (!test_bit(__E1000_DOWN, &adapter->state)) { in e1000e_poll()
2698 if (adapter->msix_entries) in e1000e_poll()
2699 ew32(IMS, adapter->rx_ring->ims_val); in e1000e_poll()
2701 e1000_irq_enable(adapter); in e1000e_poll()
2711 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_vlan_rx_add_vid() local
2712 struct e1000_hw *hw = &adapter->hw; in e1000_vlan_rx_add_vid()
2716 if ((adapter->hw.mng_cookie.status & in e1000_vlan_rx_add_vid()
2718 (vid == adapter->mng_vlan_id)) in e1000_vlan_rx_add_vid()
2722 if (adapter->flags & FLAG_HAS_HW_VLAN_FILTER) { in e1000_vlan_rx_add_vid()
2729 set_bit(vid, adapter->active_vlans); in e1000_vlan_rx_add_vid()
2737 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_vlan_rx_kill_vid() local
2738 struct e1000_hw *hw = &adapter->hw; in e1000_vlan_rx_kill_vid()
2741 if ((adapter->hw.mng_cookie.status & in e1000_vlan_rx_kill_vid()
2743 (vid == adapter->mng_vlan_id)) { in e1000_vlan_rx_kill_vid()
2745 e1000e_release_hw_control(adapter); in e1000_vlan_rx_kill_vid()
2750 if (adapter->flags & FLAG_HAS_HW_VLAN_FILTER) { in e1000_vlan_rx_kill_vid()
2757 clear_bit(vid, adapter->active_vlans); in e1000_vlan_rx_kill_vid()
2766 static void e1000e_vlan_filter_disable(struct e1000_adapter *adapter) in e1000e_vlan_filter_disable() argument
2768 struct net_device *netdev = adapter->netdev; in e1000e_vlan_filter_disable()
2769 struct e1000_hw *hw = &adapter->hw; in e1000e_vlan_filter_disable()
2772 if (adapter->flags & FLAG_HAS_HW_VLAN_FILTER) { in e1000e_vlan_filter_disable()
2778 if (adapter->mng_vlan_id != (u16)E1000_MNG_VLAN_NONE) { in e1000e_vlan_filter_disable()
2780 adapter->mng_vlan_id); in e1000e_vlan_filter_disable()
2781 adapter->mng_vlan_id = E1000_MNG_VLAN_NONE; in e1000e_vlan_filter_disable()
2790 static void e1000e_vlan_filter_enable(struct e1000_adapter *adapter) in e1000e_vlan_filter_enable() argument
2792 struct e1000_hw *hw = &adapter->hw; in e1000e_vlan_filter_enable()
2795 if (adapter->flags & FLAG_HAS_HW_VLAN_FILTER) { in e1000e_vlan_filter_enable()
2808 static void e1000e_vlan_strip_disable(struct e1000_adapter *adapter) in e1000e_vlan_strip_disable() argument
2810 struct e1000_hw *hw = &adapter->hw; in e1000e_vlan_strip_disable()
2823 static void e1000e_vlan_strip_enable(struct e1000_adapter *adapter) in e1000e_vlan_strip_enable() argument
2825 struct e1000_hw *hw = &adapter->hw; in e1000e_vlan_strip_enable()
2834 static void e1000_update_mng_vlan(struct e1000_adapter *adapter) in e1000_update_mng_vlan() argument
2836 struct net_device *netdev = adapter->netdev; in e1000_update_mng_vlan()
2837 u16 vid = adapter->hw.mng_cookie.vlan_id; in e1000_update_mng_vlan()
2838 u16 old_vid = adapter->mng_vlan_id; in e1000_update_mng_vlan()
2840 if (adapter->hw.mng_cookie.status & E1000_MNG_DHCP_COOKIE_STATUS_VLAN) { in e1000_update_mng_vlan()
2842 adapter->mng_vlan_id = vid; in e1000_update_mng_vlan()
2849 static void e1000_restore_vlan(struct e1000_adapter *adapter) in e1000_restore_vlan() argument
2853 e1000_vlan_rx_add_vid(adapter->netdev, htons(ETH_P_8021Q), 0); in e1000_restore_vlan()
2855 for_each_set_bit(vid, adapter->active_vlans, VLAN_N_VID) in e1000_restore_vlan()
2856 e1000_vlan_rx_add_vid(adapter->netdev, htons(ETH_P_8021Q), vid); in e1000_restore_vlan()
2859 static void e1000_init_manageability_pt(struct e1000_adapter *adapter) in e1000_init_manageability_pt() argument
2861 struct e1000_hw *hw = &adapter->hw; in e1000_init_manageability_pt()
2864 if (!(adapter->flags & FLAG_MNG_PT_ENABLED)) in e1000_init_manageability_pt()
2927 static void e1000_configure_tx(struct e1000_adapter *adapter) in e1000_configure_tx() argument
2929 struct e1000_hw *hw = &adapter->hw; in e1000_configure_tx()
2930 struct e1000_ring *tx_ring = adapter->tx_ring; in e1000_configure_tx()
2942 tx_ring->head = adapter->hw.hw_addr + E1000_TDH(0); in e1000_configure_tx()
2943 tx_ring->tail = adapter->hw.hw_addr + E1000_TDT(0); in e1000_configure_tx()
2946 if (adapter->flags2 & FLAG2_PCIM2PCI_ARBITER_WA) in e1000_configure_tx()
2952 ew32(TIDV, adapter->tx_int_delay); in e1000_configure_tx()
2954 ew32(TADV, adapter->tx_abs_int_delay); in e1000_configure_tx()
2956 if (adapter->flags2 & FLAG2_DMA_BURST) { in e1000_configure_tx()
2982 if (adapter->flags & FLAG_TARC_SPEED_MODE_BIT) { in e1000_configure_tx()
2993 if (adapter->flags & FLAG_TARC_SET_BIT_ZERO) { in e1000_configure_tx()
3003 adapter->txd_cmd = E1000_TXD_CMD_EOP | E1000_TXD_CMD_IFCS; in e1000_configure_tx()
3006 if (adapter->tx_int_delay) in e1000_configure_tx()
3007 adapter->txd_cmd |= E1000_TXD_CMD_IDE; in e1000_configure_tx()
3010 adapter->txd_cmd |= E1000_TXD_CMD_RS; in e1000_configure_tx()
3036 static void e1000_setup_rctl(struct e1000_adapter *adapter) in e1000_setup_rctl() argument
3038 struct e1000_hw *hw = &adapter->hw; in e1000_setup_rctl()
3049 if (adapter->netdev->mtu > ETH_DATA_LEN) in e1000_setup_rctl()
3063 (adapter->hw.mac.mc_filter_type << E1000_RCTL_MO_SHIFT); in e1000_setup_rctl()
3069 if (adapter->netdev->mtu <= ETH_DATA_LEN) in e1000_setup_rctl()
3078 if (adapter->flags2 & FLAG2_CRC_STRIPPING) in e1000_setup_rctl()
3101 switch (adapter->rx_buffer_len) { in e1000_setup_rctl()
3137 pages = PAGE_USE_COUNT(adapter->netdev->mtu); in e1000_setup_rctl()
3139 adapter->rx_ps_pages = pages; in e1000_setup_rctl()
3141 adapter->rx_ps_pages = 0; in e1000_setup_rctl()
3143 if (adapter->rx_ps_pages) { in e1000_setup_rctl()
3149 psrctl |= adapter->rx_ps_bsize0 >> E1000_PSRCTL_BSIZE0_SHIFT; in e1000_setup_rctl()
3151 switch (adapter->rx_ps_pages) { in e1000_setup_rctl()
3167 if (adapter->netdev->features & NETIF_F_RXALL) { in e1000_setup_rctl()
3185 adapter->flags &= ~FLAG_RESTART_NOW; in e1000_setup_rctl()
3194 static void e1000_configure_rx(struct e1000_adapter *adapter) in e1000_configure_rx() argument
3196 struct e1000_hw *hw = &adapter->hw; in e1000_configure_rx()
3197 struct e1000_ring *rx_ring = adapter->rx_ring; in e1000_configure_rx()
3201 if (adapter->rx_ps_pages) { in e1000_configure_rx()
3205 adapter->clean_rx = e1000_clean_rx_irq_ps; in e1000_configure_rx()
3206 adapter->alloc_rx_buf = e1000_alloc_rx_buffers_ps; in e1000_configure_rx()
3207 } else if (adapter->netdev->mtu > ETH_FRAME_LEN + ETH_FCS_LEN) { in e1000_configure_rx()
3209 adapter->clean_rx = e1000_clean_jumbo_rx_irq; in e1000_configure_rx()
3210 adapter->alloc_rx_buf = e1000_alloc_jumbo_rx_buffers; in e1000_configure_rx()
3213 adapter->clean_rx = e1000_clean_rx_irq; in e1000_configure_rx()
3214 adapter->alloc_rx_buf = e1000_alloc_rx_buffers; in e1000_configure_rx()
3219 if (!(adapter->flags2 & FLAG2_NO_DISABLE_RX)) in e1000_configure_rx()
3224 if (adapter->flags2 & FLAG2_DMA_BURST) { in e1000_configure_rx()
3239 if (adapter->rx_int_delay == DEFAULT_RDTR) in e1000_configure_rx()
3240 adapter->rx_int_delay = BURST_RDTR; in e1000_configure_rx()
3241 if (adapter->rx_abs_int_delay == DEFAULT_RADV) in e1000_configure_rx()
3242 adapter->rx_abs_int_delay = BURST_RADV; in e1000_configure_rx()
3246 ew32(RDTR, adapter->rx_int_delay); in e1000_configure_rx()
3249 ew32(RADV, adapter->rx_abs_int_delay); in e1000_configure_rx()
3250 if ((adapter->itr_setting != 0) && (adapter->itr != 0)) in e1000_configure_rx()
3251 e1000e_write_itr(adapter, adapter->itr); in e1000_configure_rx()
3269 rx_ring->head = adapter->hw.hw_addr + E1000_RDH(0); in e1000_configure_rx()
3270 rx_ring->tail = adapter->hw.hw_addr + E1000_RDT(0); in e1000_configure_rx()
3273 if (adapter->flags2 & FLAG2_PCIM2PCI_ARBITER_WA) in e1000_configure_rx()
3280 if (adapter->netdev->features & NETIF_F_RXCSUM) in e1000_configure_rx()
3289 if (adapter->netdev->mtu > ETH_DATA_LEN) { in e1000_configure_rx()
3292 adapter->max_frame_size) * 8 / 1000; in e1000_configure_rx()
3294 if (adapter->flags & FLAG_IS_ICH) { in e1000_configure_rx()
3300 pm_qos_update_request(&adapter->pm_qos_req, lat); in e1000_configure_rx()
3302 pm_qos_update_request(&adapter->pm_qos_req, in e1000_configure_rx()
3321 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_write_mc_addr_list() local
3322 struct e1000_hw *hw = &adapter->hw; in e1000e_write_mc_addr_list()
3359 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_write_uc_addr_list() local
3360 struct e1000_hw *hw = &adapter->hw; in e1000e_write_uc_addr_list()
3370 if (adapter->flags & FLAG_RESET_OVERWRITES_LAA) in e1000e_write_uc_addr_list()
3416 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_set_rx_mode() local
3417 struct e1000_hw *hw = &adapter->hw; in e1000e_set_rx_mode()
3432 e1000e_vlan_filter_disable(adapter); in e1000e_set_rx_mode()
3447 e1000e_vlan_filter_enable(adapter); in e1000e_set_rx_mode()
3460 e1000e_vlan_strip_enable(adapter); in e1000e_set_rx_mode()
3462 e1000e_vlan_strip_disable(adapter); in e1000e_set_rx_mode()
3465 static void e1000e_setup_rss_hash(struct e1000_adapter *adapter) in e1000e_setup_rss_hash() argument
3467 struct e1000_hw *hw = &adapter->hw; in e1000e_setup_rss_hash()
3505 s32 e1000e_get_base_timinca(struct e1000_adapter *adapter, u32 *timinca) in e1000e_get_base_timinca() argument
3507 struct e1000_hw *hw = &adapter->hw; in e1000e_get_base_timinca()
3533 adapter->cc.shift = shift + INCPERIOD_SHIFT_96MHz; in e1000e_get_base_timinca()
3539 adapter->cc.shift = shift; in e1000e_get_base_timinca()
3548 adapter->cc.shift = shift; in e1000e_get_base_timinca()
3558 adapter->cc.shift = shift; in e1000e_get_base_timinca()
3585 static int e1000e_config_hwtstamp(struct e1000_adapter *adapter, in e1000e_config_hwtstamp() argument
3588 struct e1000_hw *hw = &adapter->hw; in e1000e_config_hwtstamp()
3598 if (!(adapter->flags & FLAG_HAS_HW_TIMESTAMP)) in e1000e_config_hwtstamp()
3689 adapter->hwtstamp_config = *config; in e1000e_config_hwtstamp()
3736 ret_val = e1000e_get_base_timinca(adapter, &regval); in e1000e_config_hwtstamp()
3742 timecounter_init(&adapter->tc, &adapter->cc, in e1000e_config_hwtstamp()
3752 static void e1000_configure(struct e1000_adapter *adapter) in e1000_configure() argument
3754 struct e1000_ring *rx_ring = adapter->rx_ring; in e1000_configure()
3756 e1000e_set_rx_mode(adapter->netdev); in e1000_configure()
3758 e1000_restore_vlan(adapter); in e1000_configure()
3759 e1000_init_manageability_pt(adapter); in e1000_configure()
3761 e1000_configure_tx(adapter); in e1000_configure()
3763 if (adapter->netdev->features & NETIF_F_RXHASH) in e1000_configure()
3764 e1000e_setup_rss_hash(adapter); in e1000_configure()
3765 e1000_setup_rctl(adapter); in e1000_configure()
3766 e1000_configure_rx(adapter); in e1000_configure()
3767 adapter->alloc_rx_buf(rx_ring, e1000_desc_unused(rx_ring), GFP_KERNEL); in e1000_configure()
3778 void e1000e_power_up_phy(struct e1000_adapter *adapter) in e1000e_power_up_phy() argument
3780 if (adapter->hw.phy.ops.power_up) in e1000e_power_up_phy()
3781 adapter->hw.phy.ops.power_up(&adapter->hw); in e1000e_power_up_phy()
3783 adapter->hw.mac.ops.setup_link(&adapter->hw); in e1000e_power_up_phy()
3792 static void e1000_power_down_phy(struct e1000_adapter *adapter) in e1000_power_down_phy() argument
3794 if (adapter->hw.phy.ops.power_down) in e1000_power_down_phy()
3795 adapter->hw.phy.ops.power_down(&adapter->hw); in e1000_power_down_phy()
3806 static void e1000_flush_tx_ring(struct e1000_adapter *adapter) in e1000_flush_tx_ring() argument
3808 struct e1000_hw *hw = &adapter->hw; in e1000_flush_tx_ring()
3809 struct e1000_ring *tx_ring = adapter->tx_ring; in e1000_flush_tx_ring()
3838 static void e1000_flush_rx_ring(struct e1000_adapter *adapter) in e1000_flush_rx_ring() argument
3841 struct e1000_hw *hw = &adapter->hw; in e1000_flush_rx_ring()
3876 static void e1000_flush_desc_rings(struct e1000_adapter *adapter) in e1000_flush_desc_rings() argument
3880 struct e1000_hw *hw = &adapter->hw; in e1000_flush_desc_rings()
3888 pci_read_config_word(adapter->pdev, PCICFG_DESC_RING_STATUS, in e1000_flush_desc_rings()
3892 e1000_flush_tx_ring(adapter); in e1000_flush_desc_rings()
3894 pci_read_config_word(adapter->pdev, PCICFG_DESC_RING_STATUS, in e1000_flush_desc_rings()
3897 e1000_flush_rx_ring(adapter); in e1000_flush_desc_rings()
3908 void e1000e_reset(struct e1000_adapter *adapter) in e1000e_reset() argument
3910 struct e1000_mac_info *mac = &adapter->hw.mac; in e1000e_reset()
3911 struct e1000_fc_info *fc = &adapter->hw.fc; in e1000e_reset()
3912 struct e1000_hw *hw = &adapter->hw; in e1000e_reset()
3914 u32 pba = adapter->pba; in e1000e_reset()
3920 if (adapter->max_frame_size > (VLAN_ETH_FRAME_LEN + ETH_FCS_LEN)) { in e1000e_reset()
3936 min_tx_space = (adapter->max_frame_size + in e1000e_reset()
3941 min_rx_space = adapter->max_frame_size; in e1000e_reset()
3971 if (adapter->flags & FLAG_DISABLE_FC_PAUSE_TIME) in e1000e_reset()
3981 if (adapter->netdev->mtu > ETH_DATA_LEN) { in e1000e_reset()
3991 ((pba << 10) - adapter->max_frame_size)); in e1000e_reset()
4000 if (adapter->netdev->mtu > ETH_DATA_LEN) { in e1000e_reset()
4014 if (adapter->netdev->mtu <= ETH_DATA_LEN) { in e1000e_reset()
4033 adapter->tx_fifo_limit = min_t(u32, ((er32(PBA) >> 16) << 10) - 96, in e1000e_reset()
4039 if (adapter->itr_setting & 0x3) { in e1000e_reset()
4040 if ((adapter->max_frame_size * 2) > (pba << 10)) { in e1000e_reset()
4041 if (!(adapter->flags2 & FLAG2_DISABLE_AIM)) { in e1000e_reset()
4042 dev_info(&adapter->pdev->dev, in e1000e_reset()
4044 adapter->flags2 |= FLAG2_DISABLE_AIM; in e1000e_reset()
4045 e1000e_write_itr(adapter, 0); in e1000e_reset()
4047 } else if (adapter->flags2 & FLAG2_DISABLE_AIM) { in e1000e_reset()
4048 dev_info(&adapter->pdev->dev, in e1000e_reset()
4050 adapter->flags2 &= ~FLAG2_DISABLE_AIM; in e1000e_reset()
4051 adapter->itr = 20000; in e1000e_reset()
4052 e1000e_write_itr(adapter, adapter->itr); in e1000e_reset()
4057 e1000_flush_desc_rings(adapter); in e1000e_reset()
4064 if (adapter->flags & FLAG_HAS_AMT) in e1000e_reset()
4065 e1000e_get_hw_control(adapter); in e1000e_reset()
4072 e1000_update_mng_vlan(adapter); in e1000e_reset()
4080 e1000e_config_hwtstamp(adapter, &adapter->hwtstamp_config); in e1000e_reset()
4083 if (adapter->flags2 & FLAG2_HAS_EEE) { in e1000e_reset()
4095 dev_err(&adapter->pdev->dev, in e1000e_reset()
4102 dev_err(&adapter->pdev->dev, in e1000e_reset()
4109 0 : adapter->eee_advert); in e1000e_reset()
4114 if (!netif_running(adapter->netdev) && in e1000e_reset()
4115 !test_bit(__E1000_TESTING, &adapter->state)) in e1000e_reset()
4116 e1000_power_down_phy(adapter); in e1000e_reset()
4120 if ((adapter->flags & FLAG_HAS_SMART_POWER_DOWN) && in e1000e_reset()
4121 !(adapter->flags & FLAG_SMART_POWER_DOWN)) { in e1000e_reset()
4131 if (hw->mac.type == e1000_pch_spt && adapter->int_mode == 0) { in e1000e_reset()
4147 int e1000e_up(struct e1000_adapter *adapter) in e1000e_up() argument
4149 struct e1000_hw *hw = &adapter->hw; in e1000e_up()
4152 e1000_configure(adapter); in e1000e_up()
4154 clear_bit(__E1000_DOWN, &adapter->state); in e1000e_up()
4156 if (adapter->msix_entries) in e1000e_up()
4157 e1000_configure_msix(adapter); in e1000e_up()
4158 e1000_irq_enable(adapter); in e1000e_up()
4160 netif_start_queue(adapter->netdev); in e1000e_up()
4163 if (adapter->msix_entries) in e1000e_up()
4171 static void e1000e_flush_descriptors(struct e1000_adapter *adapter) in e1000e_flush_descriptors() argument
4173 struct e1000_hw *hw = &adapter->hw; in e1000e_flush_descriptors()
4175 if (!(adapter->flags2 & FLAG2_DMA_BURST)) in e1000e_flush_descriptors()
4179 ew32(TIDV, adapter->tx_int_delay | E1000_TIDV_FPD); in e1000e_flush_descriptors()
4180 ew32(RDTR, adapter->rx_int_delay | E1000_RDTR_FPD); in e1000e_flush_descriptors()
4188 ew32(TIDV, adapter->tx_int_delay | E1000_TIDV_FPD); in e1000e_flush_descriptors()
4189 ew32(RDTR, adapter->rx_int_delay | E1000_RDTR_FPD); in e1000e_flush_descriptors()
4195 static void e1000e_update_stats(struct e1000_adapter *adapter);
4202 void e1000e_down(struct e1000_adapter *adapter, bool reset) in e1000e_down() argument
4204 struct net_device *netdev = adapter->netdev; in e1000e_down()
4205 struct e1000_hw *hw = &adapter->hw; in e1000e_down()
4211 set_bit(__E1000_DOWN, &adapter->state); in e1000e_down()
4217 if (!(adapter->flags2 & FLAG2_NO_DISABLE_RX)) in e1000e_down()
4232 e1000_irq_disable(adapter); in e1000e_down()
4234 napi_synchronize(&adapter->napi); in e1000e_down()
4236 del_timer_sync(&adapter->watchdog_timer); in e1000e_down()
4237 del_timer_sync(&adapter->phy_info_timer); in e1000e_down()
4239 spin_lock(&adapter->stats64_lock); in e1000e_down()
4240 e1000e_update_stats(adapter); in e1000e_down()
4241 spin_unlock(&adapter->stats64_lock); in e1000e_down()
4243 e1000e_flush_descriptors(adapter); in e1000e_down()
4245 adapter->link_speed = 0; in e1000e_down()
4246 adapter->link_duplex = 0; in e1000e_down()
4250 (adapter->netdev->mtu > ETH_DATA_LEN) && in e1000e_down()
4254 if (!pci_channel_offline(adapter->pdev)) { in e1000e_down()
4256 e1000e_reset(adapter); in e1000e_down()
4258 e1000_flush_desc_rings(adapter); in e1000e_down()
4260 e1000_clean_tx_ring(adapter->tx_ring); in e1000e_down()
4261 e1000_clean_rx_ring(adapter->rx_ring); in e1000e_down()
4264 void e1000e_reinit_locked(struct e1000_adapter *adapter) in e1000e_reinit_locked() argument
4267 while (test_and_set_bit(__E1000_RESETTING, &adapter->state)) in e1000e_reinit_locked()
4269 e1000e_down(adapter, true); in e1000e_reinit_locked()
4270 e1000e_up(adapter); in e1000e_reinit_locked()
4271 clear_bit(__E1000_RESETTING, &adapter->state); in e1000e_reinit_locked()
4280 struct e1000_adapter *adapter = container_of(cc, struct e1000_adapter, in e1000e_cyclecounter_read() local
4282 struct e1000_hw *hw = &adapter->hw; in e1000e_cyclecounter_read()
4343 static int e1000_sw_init(struct e1000_adapter *adapter) in e1000_sw_init() argument
4345 struct net_device *netdev = adapter->netdev; in e1000_sw_init()
4347 adapter->rx_buffer_len = VLAN_ETH_FRAME_LEN + ETH_FCS_LEN; in e1000_sw_init()
4348 adapter->rx_ps_bsize0 = 128; in e1000_sw_init()
4349 adapter->max_frame_size = netdev->mtu + VLAN_ETH_HLEN + ETH_FCS_LEN; in e1000_sw_init()
4350 adapter->min_frame_size = ETH_ZLEN + ETH_FCS_LEN; in e1000_sw_init()
4351 adapter->tx_ring_count = E1000_DEFAULT_TXD; in e1000_sw_init()
4352 adapter->rx_ring_count = E1000_DEFAULT_RXD; in e1000_sw_init()
4354 spin_lock_init(&adapter->stats64_lock); in e1000_sw_init()
4356 e1000e_set_interrupt_capability(adapter); in e1000_sw_init()
4358 if (e1000_alloc_queues(adapter)) in e1000_sw_init()
4362 if (adapter->flags & FLAG_HAS_HW_TIMESTAMP) { in e1000_sw_init()
4363 adapter->cc.read = e1000e_cyclecounter_read; in e1000_sw_init()
4364 adapter->cc.mask = CYCLECOUNTER_MASK(64); in e1000_sw_init()
4365 adapter->cc.mult = 1; in e1000_sw_init()
4368 spin_lock_init(&adapter->systim_lock); in e1000_sw_init()
4369 INIT_WORK(&adapter->tx_hwtstamp_work, e1000e_tx_hwtstamp_work); in e1000_sw_init()
4373 e1000_irq_disable(adapter); in e1000_sw_init()
4375 set_bit(__E1000_DOWN, &adapter->state); in e1000_sw_init()
4387 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_intr_msi_test() local
4388 struct e1000_hw *hw = &adapter->hw; in e1000_intr_msi_test()
4393 adapter->flags &= ~FLAG_MSI_TEST_FAILED; in e1000_intr_msi_test()
4409 static int e1000_test_msi_interrupt(struct e1000_adapter *adapter) in e1000_test_msi_interrupt() argument
4411 struct net_device *netdev = adapter->netdev; in e1000_test_msi_interrupt()
4412 struct e1000_hw *hw = &adapter->hw; in e1000_test_msi_interrupt()
4420 e1000_free_irq(adapter); in e1000_test_msi_interrupt()
4421 e1000e_reset_interrupt_capability(adapter); in e1000_test_msi_interrupt()
4426 adapter->flags |= FLAG_MSI_TEST_FAILED; in e1000_test_msi_interrupt()
4428 err = pci_enable_msi(adapter->pdev); in e1000_test_msi_interrupt()
4432 err = request_irq(adapter->pdev->irq, e1000_intr_msi_test, 0, in e1000_test_msi_interrupt()
4435 pci_disable_msi(adapter->pdev); in e1000_test_msi_interrupt()
4444 e1000_irq_enable(adapter); in e1000_test_msi_interrupt()
4451 e1000_irq_disable(adapter); in e1000_test_msi_interrupt()
4455 if (adapter->flags & FLAG_MSI_TEST_FAILED) { in e1000_test_msi_interrupt()
4456 adapter->int_mode = E1000E_INT_MODE_LEGACY; in e1000_test_msi_interrupt()
4462 free_irq(adapter->pdev->irq, netdev); in e1000_test_msi_interrupt()
4463 pci_disable_msi(adapter->pdev); in e1000_test_msi_interrupt()
4466 e1000e_set_interrupt_capability(adapter); in e1000_test_msi_interrupt()
4467 return e1000_request_irq(adapter); in e1000_test_msi_interrupt()
4476 static int e1000_test_msi(struct e1000_adapter *adapter) in e1000_test_msi() argument
4481 if (!(adapter->flags & FLAG_MSI_ENABLED)) in e1000_test_msi()
4485 pci_read_config_word(adapter->pdev, PCI_COMMAND, &pci_cmd); in e1000_test_msi()
4487 pci_write_config_word(adapter->pdev, PCI_COMMAND, in e1000_test_msi()
4490 err = e1000_test_msi_interrupt(adapter); in e1000_test_msi()
4494 pci_read_config_word(adapter->pdev, PCI_COMMAND, &pci_cmd); in e1000_test_msi()
4496 pci_write_config_word(adapter->pdev, PCI_COMMAND, pci_cmd); in e1000_test_msi()
4516 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_open() local
4517 struct e1000_hw *hw = &adapter->hw; in e1000_open()
4518 struct pci_dev *pdev = adapter->pdev; in e1000_open()
4522 if (test_bit(__E1000_TESTING, &adapter->state)) in e1000_open()
4530 err = e1000e_setup_tx_resources(adapter->tx_ring); in e1000_open()
4535 err = e1000e_setup_rx_resources(adapter->rx_ring); in e1000_open()
4542 if (adapter->flags & FLAG_HAS_AMT) { in e1000_open()
4543 e1000e_get_hw_control(adapter); in e1000_open()
4544 e1000e_reset(adapter); in e1000_open()
4547 e1000e_power_up_phy(adapter); in e1000_open()
4549 adapter->mng_vlan_id = E1000_MNG_VLAN_NONE; in e1000_open()
4550 if ((adapter->hw.mng_cookie.status & E1000_MNG_DHCP_COOKIE_STATUS_VLAN)) in e1000_open()
4551 e1000_update_mng_vlan(adapter); in e1000_open()
4554 pm_qos_add_request(&adapter->pm_qos_req, PM_QOS_CPU_DMA_LATENCY, in e1000_open()
4562 e1000_configure(adapter); in e1000_open()
4564 err = e1000_request_irq(adapter); in e1000_open()
4572 if (adapter->int_mode != E1000E_INT_MODE_LEGACY) { in e1000_open()
4573 err = e1000_test_msi(adapter); in e1000_open()
4581 clear_bit(__E1000_DOWN, &adapter->state); in e1000_open()
4583 napi_enable(&adapter->napi); in e1000_open()
4585 e1000_irq_enable(adapter); in e1000_open()
4587 adapter->tx_hang_recheck = false; in e1000_open()
4594 if (adapter->msix_entries) in e1000_open()
4602 pm_qos_remove_request(&adapter->pm_qos_req); in e1000_open()
4603 e1000e_release_hw_control(adapter); in e1000_open()
4604 e1000_power_down_phy(adapter); in e1000_open()
4605 e1000e_free_rx_resources(adapter->rx_ring); in e1000_open()
4607 e1000e_free_tx_resources(adapter->tx_ring); in e1000_open()
4609 e1000e_reset(adapter); in e1000_open()
4628 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_close() local
4629 struct pci_dev *pdev = adapter->pdev; in e1000_close()
4632 while (test_bit(__E1000_RESETTING, &adapter->state) && count--) in e1000_close()
4635 WARN_ON(test_bit(__E1000_RESETTING, &adapter->state)); in e1000_close()
4639 if (!test_bit(__E1000_DOWN, &adapter->state)) { in e1000_close()
4640 e1000e_down(adapter, true); in e1000_close()
4641 e1000_free_irq(adapter); in e1000_close()
4644 pr_info("%s NIC Link is Down\n", adapter->netdev->name); in e1000_close()
4647 napi_disable(&adapter->napi); in e1000_close()
4649 e1000e_free_tx_resources(adapter->tx_ring); in e1000_close()
4650 e1000e_free_rx_resources(adapter->rx_ring); in e1000_close()
4655 if (adapter->hw.mng_cookie.status & E1000_MNG_DHCP_COOKIE_STATUS_VLAN) in e1000_close()
4657 adapter->mng_vlan_id); in e1000_close()
4662 if ((adapter->flags & FLAG_HAS_AMT) && in e1000_close()
4663 !test_bit(__E1000_TESTING, &adapter->state)) in e1000_close()
4664 e1000e_release_hw_control(adapter); in e1000_close()
4666 pm_qos_remove_request(&adapter->pm_qos_req); in e1000_close()
4682 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_set_mac() local
4683 struct e1000_hw *hw = &adapter->hw; in e1000_set_mac()
4690 memcpy(adapter->hw.mac.addr, addr->sa_data, netdev->addr_len); in e1000_set_mac()
4692 hw->mac.ops.rar_set(&adapter->hw, adapter->hw.mac.addr, 0); in e1000_set_mac()
4694 if (adapter->flags & FLAG_RESET_OVERWRITES_LAA) { in e1000_set_mac()
4696 e1000e_set_laa_state_82571(&adapter->hw, 1); in e1000_set_mac()
4705 hw->mac.ops.rar_set(&adapter->hw, adapter->hw.mac.addr, in e1000_set_mac()
4706 adapter->hw.mac.rar_entry_count - 1); in e1000_set_mac()
4722 struct e1000_adapter *adapter = container_of(work, in e1000e_update_phy_task() local
4725 struct e1000_hw *hw = &adapter->hw; in e1000e_update_phy_task()
4727 if (test_bit(__E1000_DOWN, &adapter->state)) in e1000e_update_phy_task()
4746 struct e1000_adapter *adapter = (struct e1000_adapter *)data; in e1000_update_phy_info() local
4748 if (test_bit(__E1000_DOWN, &adapter->state)) in e1000_update_phy_info()
4751 schedule_work(&adapter->update_phy_task); in e1000_update_phy_info()
4760 static void e1000e_update_phy_stats(struct e1000_adapter *adapter) in e1000e_update_phy_stats() argument
4762 struct e1000_hw *hw = &adapter->hw; in e1000e_update_phy_stats()
4789 adapter->stats.scc += phy_data; in e1000e_update_phy_stats()
4795 adapter->stats.ecol += phy_data; in e1000e_update_phy_stats()
4801 adapter->stats.mcc += phy_data; in e1000e_update_phy_stats()
4807 adapter->stats.latecol += phy_data; in e1000e_update_phy_stats()
4819 adapter->stats.dc += phy_data; in e1000e_update_phy_stats()
4825 adapter->stats.tncrs += phy_data; in e1000e_update_phy_stats()
4835 static void e1000e_update_stats(struct e1000_adapter *adapter) in e1000e_update_stats() argument
4837 struct net_device *netdev = adapter->netdev; in e1000e_update_stats()
4838 struct e1000_hw *hw = &adapter->hw; in e1000e_update_stats()
4839 struct pci_dev *pdev = adapter->pdev; in e1000e_update_stats()
4844 if (adapter->link_speed == 0) in e1000e_update_stats()
4849 adapter->stats.crcerrs += er32(CRCERRS); in e1000e_update_stats()
4850 adapter->stats.gprc += er32(GPRC); in e1000e_update_stats()
4851 adapter->stats.gorc += er32(GORCL); in e1000e_update_stats()
4853 adapter->stats.bprc += er32(BPRC); in e1000e_update_stats()
4854 adapter->stats.mprc += er32(MPRC); in e1000e_update_stats()
4855 adapter->stats.roc += er32(ROC); in e1000e_update_stats()
4857 adapter->stats.mpc += er32(MPC); in e1000e_update_stats()
4860 if (adapter->link_duplex == HALF_DUPLEX) { in e1000e_update_stats()
4861 if (adapter->flags2 & FLAG2_HAS_PHY_STATS) { in e1000e_update_stats()
4862 e1000e_update_phy_stats(adapter); in e1000e_update_stats()
4864 adapter->stats.scc += er32(SCC); in e1000e_update_stats()
4865 adapter->stats.ecol += er32(ECOL); in e1000e_update_stats()
4866 adapter->stats.mcc += er32(MCC); in e1000e_update_stats()
4867 adapter->stats.latecol += er32(LATECOL); in e1000e_update_stats()
4868 adapter->stats.dc += er32(DC); in e1000e_update_stats()
4874 adapter->stats.tncrs += er32(TNCRS); in e1000e_update_stats()
4876 adapter->stats.colc += hw->mac.collision_delta; in e1000e_update_stats()
4879 adapter->stats.xonrxc += er32(XONRXC); in e1000e_update_stats()
4880 adapter->stats.xontxc += er32(XONTXC); in e1000e_update_stats()
4881 adapter->stats.xoffrxc += er32(XOFFRXC); in e1000e_update_stats()
4882 adapter->stats.xofftxc += er32(XOFFTXC); in e1000e_update_stats()
4883 adapter->stats.gptc += er32(GPTC); in e1000e_update_stats()
4884 adapter->stats.gotc += er32(GOTCL); in e1000e_update_stats()
4886 adapter->stats.rnbc += er32(RNBC); in e1000e_update_stats()
4887 adapter->stats.ruc += er32(RUC); in e1000e_update_stats()
4889 adapter->stats.mptc += er32(MPTC); in e1000e_update_stats()
4890 adapter->stats.bptc += er32(BPTC); in e1000e_update_stats()
4895 adapter->stats.tpt += hw->mac.tx_packet_delta; in e1000e_update_stats()
4897 adapter->stats.algnerrc += er32(ALGNERRC); in e1000e_update_stats()
4898 adapter->stats.rxerrc += er32(RXERRC); in e1000e_update_stats()
4899 adapter->stats.cexterr += er32(CEXTERR); in e1000e_update_stats()
4900 adapter->stats.tsctc += er32(TSCTC); in e1000e_update_stats()
4901 adapter->stats.tsctfc += er32(TSCTFC); in e1000e_update_stats()
4904 netdev->stats.multicast = adapter->stats.mprc; in e1000e_update_stats()
4905 netdev->stats.collisions = adapter->stats.colc; in e1000e_update_stats()
4912 netdev->stats.rx_errors = adapter->stats.rxerrc + in e1000e_update_stats()
4913 adapter->stats.crcerrs + adapter->stats.algnerrc + in e1000e_update_stats()
4914 adapter->stats.ruc + adapter->stats.roc + adapter->stats.cexterr; in e1000e_update_stats()
4915 netdev->stats.rx_length_errors = adapter->stats.ruc + in e1000e_update_stats()
4916 adapter->stats.roc; in e1000e_update_stats()
4917 netdev->stats.rx_crc_errors = adapter->stats.crcerrs; in e1000e_update_stats()
4918 netdev->stats.rx_frame_errors = adapter->stats.algnerrc; in e1000e_update_stats()
4919 netdev->stats.rx_missed_errors = adapter->stats.mpc; in e1000e_update_stats()
4922 netdev->stats.tx_errors = adapter->stats.ecol + adapter->stats.latecol; in e1000e_update_stats()
4923 netdev->stats.tx_aborted_errors = adapter->stats.ecol; in e1000e_update_stats()
4924 netdev->stats.tx_window_errors = adapter->stats.latecol; in e1000e_update_stats()
4925 netdev->stats.tx_carrier_errors = adapter->stats.tncrs; in e1000e_update_stats()
4930 adapter->stats.mgptc += er32(MGTPTC); in e1000e_update_stats()
4931 adapter->stats.mgprc += er32(MGTPRC); in e1000e_update_stats()
4932 adapter->stats.mgpdc += er32(MGTPDC); in e1000e_update_stats()
4939 adapter->corr_errors += in e1000e_update_stats()
4941 adapter->uncorr_errors += in e1000e_update_stats()
4951 static void e1000_phy_read_status(struct e1000_adapter *adapter) in e1000_phy_read_status() argument
4953 struct e1000_hw *hw = &adapter->hw; in e1000_phy_read_status()
4954 struct e1000_phy_regs *phy = &adapter->phy_regs; in e1000_phy_read_status()
4956 if (!pm_runtime_suspended((&adapter->pdev->dev)->parent) && in e1000_phy_read_status()
4958 (adapter->hw.phy.media_type == e1000_media_type_copper)) { in e1000_phy_read_status()
4989 static void e1000_print_link_info(struct e1000_adapter *adapter) in e1000_print_link_info() argument
4991 struct e1000_hw *hw = &adapter->hw; in e1000_print_link_info()
4996 adapter->netdev->name, adapter->link_speed, in e1000_print_link_info()
4997 adapter->link_duplex == FULL_DUPLEX ? "Full" : "Half", in e1000_print_link_info()
5003 static bool e1000e_has_link(struct e1000_adapter *adapter) in e1000e_has_link() argument
5005 struct e1000_hw *hw = &adapter->hw; in e1000e_has_link()
5029 link_active = adapter->hw.mac.serdes_has_link; in e1000e_has_link()
5045 static void e1000e_enable_receives(struct e1000_adapter *adapter) in e1000e_enable_receives() argument
5048 if ((adapter->flags & FLAG_RX_NEEDS_RESTART) && in e1000e_enable_receives()
5049 (adapter->flags & FLAG_RESTART_NOW)) { in e1000e_enable_receives()
5050 struct e1000_hw *hw = &adapter->hw; in e1000e_enable_receives()
5054 adapter->flags &= ~FLAG_RESTART_NOW; in e1000e_enable_receives()
5058 static void e1000e_check_82574_phy_workaround(struct e1000_adapter *adapter) in e1000e_check_82574_phy_workaround() argument
5060 struct e1000_hw *hw = &adapter->hw; in e1000e_check_82574_phy_workaround()
5066 adapter->phy_hang_count++; in e1000e_check_82574_phy_workaround()
5068 adapter->phy_hang_count = 0; in e1000e_check_82574_phy_workaround()
5070 if (adapter->phy_hang_count > 1) { in e1000e_check_82574_phy_workaround()
5071 adapter->phy_hang_count = 0; in e1000e_check_82574_phy_workaround()
5073 schedule_work(&adapter->reset_task); in e1000e_check_82574_phy_workaround()
5083 struct e1000_adapter *adapter = (struct e1000_adapter *)data; in e1000_watchdog() local
5086 schedule_work(&adapter->watchdog_task); in e1000_watchdog()
5093 struct e1000_adapter *adapter = container_of(work, in e1000_watchdog_task() local
5096 struct net_device *netdev = adapter->netdev; in e1000_watchdog_task()
5097 struct e1000_mac_info *mac = &adapter->hw.mac; in e1000_watchdog_task()
5098 struct e1000_phy_info *phy = &adapter->hw.phy; in e1000_watchdog_task()
5099 struct e1000_ring *tx_ring = adapter->tx_ring; in e1000_watchdog_task()
5100 struct e1000_hw *hw = &adapter->hw; in e1000_watchdog_task()
5103 if (test_bit(__E1000_DOWN, &adapter->state)) in e1000_watchdog_task()
5106 link = e1000e_has_link(adapter); in e1000_watchdog_task()
5111 e1000e_enable_receives(adapter); in e1000_watchdog_task()
5116 (adapter->mng_vlan_id != adapter->hw.mng_cookie.vlan_id)) in e1000_watchdog_task()
5117 e1000_update_mng_vlan(adapter); in e1000_watchdog_task()
5127 e1000_phy_read_status(adapter); in e1000_watchdog_task()
5128 mac->ops.get_link_up_info(&adapter->hw, in e1000_watchdog_task()
5129 &adapter->link_speed, in e1000_watchdog_task()
5130 &adapter->link_duplex); in e1000_watchdog_task()
5131 e1000_print_link_info(adapter); in e1000_watchdog_task()
5145 (adapter->link_speed == SPEED_10 || in e1000_watchdog_task()
5146 adapter->link_speed == SPEED_100) && in e1000_watchdog_task()
5147 (adapter->link_duplex == HALF_DUPLEX)) { in e1000_watchdog_task()
5157 adapter->tx_timeout_factor = 1; in e1000_watchdog_task()
5158 switch (adapter->link_speed) { in e1000_watchdog_task()
5161 adapter->tx_timeout_factor = 16; in e1000_watchdog_task()
5165 adapter->tx_timeout_factor = 10; in e1000_watchdog_task()
5172 if ((adapter->flags & FLAG_TARC_SPEED_MODE_BIT) && in e1000_watchdog_task()
5184 if (!(adapter->flags & FLAG_TSO_FORCE)) { in e1000_watchdog_task()
5185 switch (adapter->link_speed) { in e1000_watchdog_task()
5217 if (!test_bit(__E1000_DOWN, &adapter->state)) in e1000_watchdog_task()
5218 mod_timer(&adapter->phy_info_timer, in e1000_watchdog_task()
5223 adapter->link_speed = 0; in e1000_watchdog_task()
5224 adapter->link_duplex = 0; in e1000_watchdog_task()
5226 pr_info("%s NIC Link is Down\n", adapter->netdev->name); in e1000_watchdog_task()
5228 if (!test_bit(__E1000_DOWN, &adapter->state)) in e1000_watchdog_task()
5229 mod_timer(&adapter->phy_info_timer, in e1000_watchdog_task()
5236 if (adapter->flags & FLAG_RX_NEEDS_RESTART) in e1000_watchdog_task()
5237 adapter->flags |= FLAG_RESTART_NOW; in e1000_watchdog_task()
5245 spin_lock(&adapter->stats64_lock); in e1000_watchdog_task()
5246 e1000e_update_stats(adapter); in e1000_watchdog_task()
5248 mac->tx_packet_delta = adapter->stats.tpt - adapter->tpt_old; in e1000_watchdog_task()
5249 adapter->tpt_old = adapter->stats.tpt; in e1000_watchdog_task()
5250 mac->collision_delta = adapter->stats.colc - adapter->colc_old; in e1000_watchdog_task()
5251 adapter->colc_old = adapter->stats.colc; in e1000_watchdog_task()
5253 adapter->gorc = adapter->stats.gorc - adapter->gorc_old; in e1000_watchdog_task()
5254 adapter->gorc_old = adapter->stats.gorc; in e1000_watchdog_task()
5255 adapter->gotc = adapter->stats.gotc - adapter->gotc_old; in e1000_watchdog_task()
5256 adapter->gotc_old = adapter->stats.gotc; in e1000_watchdog_task()
5257 spin_unlock(&adapter->stats64_lock); in e1000_watchdog_task()
5265 adapter->flags |= FLAG_RESTART_NOW; in e1000_watchdog_task()
5268 if (adapter->flags & FLAG_RESTART_NOW) { in e1000_watchdog_task()
5269 schedule_work(&adapter->reset_task); in e1000_watchdog_task()
5274 e1000e_update_adaptive(&adapter->hw); in e1000_watchdog_task()
5277 if (adapter->itr_setting == 4) { in e1000_watchdog_task()
5282 u32 goc = (adapter->gotc + adapter->gorc) / 10000; in e1000_watchdog_task()
5283 u32 dif = (adapter->gotc > adapter->gorc ? in e1000_watchdog_task()
5284 adapter->gotc - adapter->gorc : in e1000_watchdog_task()
5285 adapter->gorc - adapter->gotc) / 10000; in e1000_watchdog_task()
5288 e1000e_write_itr(adapter, itr); in e1000_watchdog_task()
5292 if (adapter->msix_entries) in e1000_watchdog_task()
5293 ew32(ICS, adapter->rx_ring->ims_val); in e1000_watchdog_task()
5298 e1000e_flush_descriptors(adapter); in e1000_watchdog_task()
5301 adapter->detect_tx_hung = true; in e1000_watchdog_task()
5307 hw->mac.ops.rar_set(hw, adapter->hw.mac.addr, 0); in e1000_watchdog_task()
5309 if (adapter->flags2 & FLAG2_CHECK_PHY_HANG) in e1000_watchdog_task()
5310 e1000e_check_82574_phy_workaround(adapter); in e1000_watchdog_task()
5313 if (adapter->hwtstamp_config.rx_filter != HWTSTAMP_FILTER_NONE) { in e1000_watchdog_task()
5314 if ((adapter->flags2 & FLAG2_CHECK_RX_HWTSTAMP) && in e1000_watchdog_task()
5317 adapter->rx_hwtstamp_cleared++; in e1000_watchdog_task()
5319 adapter->flags2 |= FLAG2_CHECK_RX_HWTSTAMP; in e1000_watchdog_task()
5324 if (!test_bit(__E1000_DOWN, &adapter->state)) in e1000_watchdog_task()
5325 mod_timer(&adapter->watchdog_timer, in e1000_watchdog_task()
5409 struct e1000_adapter *adapter = tx_ring->adapter; in e1000_tx_csum() local
5464 struct e1000_adapter *adapter = tx_ring->adapter; in e1000_tx_map() local
5465 struct pci_dev *pdev = adapter->pdev; in e1000_tx_map()
5559 struct e1000_adapter *adapter = tx_ring->adapter; in e1000_tx_queue() local
5607 tx_desc->lower.data |= cpu_to_le32(adapter->txd_cmd); in e1000_tx_queue()
5624 static int e1000_transfer_dhcp_info(struct e1000_adapter *adapter, in e1000_transfer_dhcp_info() argument
5627 struct e1000_hw *hw = &adapter->hw; in e1000_transfer_dhcp_info()
5631 !((skb_vlan_tag_get(skb) == adapter->hw.mng_cookie.vlan_id) && in e1000_transfer_dhcp_info()
5632 (adapter->hw.mng_cookie.status & in e1000_transfer_dhcp_info()
5663 struct e1000_adapter *adapter = tx_ring->adapter; in __e1000_maybe_stop_tx() local
5665 netif_stop_queue(adapter->netdev); in __e1000_maybe_stop_tx()
5679 netif_start_queue(adapter->netdev); in __e1000_maybe_stop_tx()
5680 ++adapter->restart_queue; in __e1000_maybe_stop_tx()
5696 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_xmit_frame() local
5697 struct e1000_ring *tx_ring = adapter->tx_ring; in e1000_xmit_frame()
5708 if (test_bit(__E1000_DOWN, &adapter->state)) { in e1000_xmit_frame()
5754 count += DIV_ROUND_UP(len, adapter->tx_fifo_limit); in e1000_xmit_frame()
5759 adapter->tx_fifo_limit); in e1000_xmit_frame()
5761 if (adapter->hw.mac.tx_pkt_filtering) in e1000_xmit_frame()
5762 e1000_transfer_dhcp_info(adapter, skb); in e1000_xmit_frame()
5800 count = e1000_tx_map(tx_ring, skb, first, adapter->tx_fifo_limit, in e1000_xmit_frame()
5804 (adapter->flags & FLAG_HAS_HW_TIMESTAMP) && in e1000_xmit_frame()
5805 !adapter->tx_hwtstamp_skb) { in e1000_xmit_frame()
5808 adapter->tx_hwtstamp_skb = skb_get(skb); in e1000_xmit_frame()
5809 adapter->tx_hwtstamp_start = jiffies; in e1000_xmit_frame()
5810 schedule_work(&adapter->tx_hwtstamp_work); in e1000_xmit_frame()
5821 adapter->tx_fifo_limit) + 2)); in e1000_xmit_frame()
5825 if (adapter->flags2 & FLAG2_PCIM2PCI_ARBITER_WA) in e1000_xmit_frame()
5852 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_tx_timeout() local
5855 adapter->tx_timeout_count++; in e1000_tx_timeout()
5856 schedule_work(&adapter->reset_task); in e1000_tx_timeout()
5861 struct e1000_adapter *adapter; in e1000_reset_task() local
5862 adapter = container_of(work, struct e1000_adapter, reset_task); in e1000_reset_task()
5865 if (test_bit(__E1000_DOWN, &adapter->state)) in e1000_reset_task()
5868 if (!(adapter->flags & FLAG_RESTART_NOW)) { in e1000_reset_task()
5869 e1000e_dump(adapter); in e1000_reset_task()
5872 e1000e_reinit_locked(adapter); in e1000_reset_task()
5885 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_get_stats64() local
5888 spin_lock(&adapter->stats64_lock); in e1000e_get_stats64()
5889 e1000e_update_stats(adapter); in e1000e_get_stats64()
5891 stats->rx_bytes = adapter->stats.gorc; in e1000e_get_stats64()
5892 stats->rx_packets = adapter->stats.gprc; in e1000e_get_stats64()
5893 stats->tx_bytes = adapter->stats.gotc; in e1000e_get_stats64()
5894 stats->tx_packets = adapter->stats.gptc; in e1000e_get_stats64()
5895 stats->multicast = adapter->stats.mprc; in e1000e_get_stats64()
5896 stats->collisions = adapter->stats.colc; in e1000e_get_stats64()
5903 stats->rx_errors = adapter->stats.rxerrc + in e1000e_get_stats64()
5904 adapter->stats.crcerrs + adapter->stats.algnerrc + in e1000e_get_stats64()
5905 adapter->stats.ruc + adapter->stats.roc + adapter->stats.cexterr; in e1000e_get_stats64()
5906 stats->rx_length_errors = adapter->stats.ruc + adapter->stats.roc; in e1000e_get_stats64()
5907 stats->rx_crc_errors = adapter->stats.crcerrs; in e1000e_get_stats64()
5908 stats->rx_frame_errors = adapter->stats.algnerrc; in e1000e_get_stats64()
5909 stats->rx_missed_errors = adapter->stats.mpc; in e1000e_get_stats64()
5912 stats->tx_errors = adapter->stats.ecol + adapter->stats.latecol; in e1000e_get_stats64()
5913 stats->tx_aborted_errors = adapter->stats.ecol; in e1000e_get_stats64()
5914 stats->tx_window_errors = adapter->stats.latecol; in e1000e_get_stats64()
5915 stats->tx_carrier_errors = adapter->stats.tncrs; in e1000e_get_stats64()
5919 spin_unlock(&adapter->stats64_lock); in e1000e_get_stats64()
5932 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_change_mtu() local
5937 !(adapter->flags & FLAG_HAS_JUMBO_FRAMES)) { in e1000_change_mtu()
5944 (max_frame > adapter->max_hw_frame_size)) { in e1000_change_mtu()
5950 if ((adapter->hw.mac.type >= e1000_pch2lan) && in e1000_change_mtu()
5951 !(adapter->flags2 & FLAG2_CRC_STRIPPING) && in e1000_change_mtu()
5957 while (test_and_set_bit(__E1000_RESETTING, &adapter->state)) in e1000_change_mtu()
5960 adapter->max_frame_size = max_frame; in e1000_change_mtu()
5967 e1000e_down(adapter, true); in e1000_change_mtu()
5978 adapter->rx_buffer_len = 2048; in e1000_change_mtu()
5980 adapter->rx_buffer_len = 4096; in e1000_change_mtu()
5984 adapter->rx_buffer_len = VLAN_ETH_FRAME_LEN + ETH_FCS_LEN; in e1000_change_mtu()
5987 e1000e_up(adapter); in e1000_change_mtu()
5989 e1000e_reset(adapter); in e1000_change_mtu()
5993 clear_bit(__E1000_RESETTING, &adapter->state); in e1000_change_mtu()
6001 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_mii_ioctl() local
6004 if (adapter->hw.phy.media_type != e1000_media_type_copper) in e1000_mii_ioctl()
6009 data->phy_id = adapter->hw.phy.addr; in e1000_mii_ioctl()
6012 e1000_phy_read_status(adapter); in e1000_mii_ioctl()
6016 data->val_out = adapter->phy_regs.bmcr; in e1000_mii_ioctl()
6019 data->val_out = adapter->phy_regs.bmsr; in e1000_mii_ioctl()
6022 data->val_out = (adapter->hw.phy.id >> 16); in e1000_mii_ioctl()
6025 data->val_out = (adapter->hw.phy.id & 0xFFFF); in e1000_mii_ioctl()
6028 data->val_out = adapter->phy_regs.advertise; in e1000_mii_ioctl()
6031 data->val_out = adapter->phy_regs.lpa; in e1000_mii_ioctl()
6034 data->val_out = adapter->phy_regs.expansion; in e1000_mii_ioctl()
6037 data->val_out = adapter->phy_regs.ctrl1000; in e1000_mii_ioctl()
6040 data->val_out = adapter->phy_regs.stat1000; in e1000_mii_ioctl()
6043 data->val_out = adapter->phy_regs.estatus; in e1000_mii_ioctl()
6074 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_hwtstamp_set() local
6081 ret_val = e1000e_config_hwtstamp(adapter, &config); in e1000e_hwtstamp_set()
6109 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_hwtstamp_get() local
6111 return copy_to_user(ifr->ifr_data, &adapter->hwtstamp_config, in e1000e_hwtstamp_get()
6112 sizeof(adapter->hwtstamp_config)) ? -EFAULT : 0; in e1000e_hwtstamp_get()
6131 static int e1000_init_phy_wakeup(struct e1000_adapter *adapter, u32 wufc) in e1000_init_phy_wakeup() argument
6133 struct e1000_hw *hw = &adapter->hw; in e1000_init_phy_wakeup()
6153 for (i = 0; i < adapter->hw.mac.mta_reg_count; i++) { in e1000_init_phy_wakeup()
6162 hw->phy.ops.read_reg_page(&adapter->hw, BM_RCTL, &phy_reg); in e1000_init_phy_wakeup()
6179 hw->phy.ops.write_reg_page(&adapter->hw, BM_RCTL, phy_reg); in e1000_init_phy_wakeup()
6191 hw->phy.ops.write_reg_page(&adapter->hw, BM_WUFC, wufc); in e1000_init_phy_wakeup()
6192 hw->phy.ops.write_reg_page(&adapter->hw, BM_WUC, wuc); in e1000_init_phy_wakeup()
6208 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_flush_lpic() local
6209 struct e1000_hw *hw = &adapter->hw; in e1000e_flush_lpic()
6230 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_pm_freeze() local
6237 while (test_bit(__E1000_RESETTING, &adapter->state) && count--) in e1000e_pm_freeze()
6240 WARN_ON(test_bit(__E1000_RESETTING, &adapter->state)); in e1000e_pm_freeze()
6243 e1000e_down(adapter, false); in e1000e_pm_freeze()
6244 e1000_free_irq(adapter); in e1000e_pm_freeze()
6246 e1000e_reset_interrupt_capability(adapter); in e1000e_pm_freeze()
6249 e1000e_disable_pcie_master(&adapter->hw); in e1000e_pm_freeze()
6257 struct e1000_adapter *adapter = netdev_priv(netdev); in __e1000_shutdown() local
6258 struct e1000_hw *hw = &adapter->hw; in __e1000_shutdown()
6261 u32 wufc = runtime ? E1000_WUFC_LNKC : adapter->wol; in __e1000_shutdown()
6269 e1000_setup_rctl(adapter); in __e1000_shutdown()
6281 if (!(adapter->flags2 & FLAG2_HAS_PHY_WAKEUP)) in __e1000_shutdown()
6285 if (adapter->hw.phy.media_type == e1000_media_type_fiber || in __e1000_shutdown()
6286 adapter->hw.phy.media_type == in __e1000_shutdown()
6295 e1000e_power_up_phy(adapter); in __e1000_shutdown()
6297 if (adapter->flags & FLAG_IS_ICH) in __e1000_shutdown()
6298 e1000_suspend_workarounds_ich8lan(&adapter->hw); in __e1000_shutdown()
6300 if (adapter->flags2 & FLAG2_HAS_PHY_WAKEUP) { in __e1000_shutdown()
6302 retval = e1000_init_phy_wakeup(adapter, wufc); in __e1000_shutdown()
6314 e1000_power_down_phy(adapter); in __e1000_shutdown()
6317 if (adapter->hw.phy.type == e1000_phy_igp_3) { in __e1000_shutdown()
6318 e1000e_igp3_phy_powerdown_workaround_ich8lan(&adapter->hw); in __e1000_shutdown()
6335 adapter->eee_advert && hw->dev_spec.ich8lan.eee_lp_ability) { in __e1000_shutdown()
6343 if (adapter->eee_advert & in __e1000_shutdown()
6347 if (adapter->eee_advert & in __e1000_shutdown()
6362 e1000e_release_hw_control(adapter); in __e1000_shutdown()
6375 if (adapter->flags & FLAG_IS_QUAD_PORT) { in __e1000_shutdown()
6498 struct e1000_adapter *adapter = netdev_priv(netdev); in __e1000_resume() local
6499 struct e1000_hw *hw = &adapter->hw; in __e1000_resume()
6502 if (adapter->flags2 & FLAG2_DISABLE_ASPM_L0S) in __e1000_resume()
6504 if (adapter->flags2 & FLAG2_DISABLE_ASPM_L1) in __e1000_resume()
6512 e1000_resume_workarounds_pchlan(&adapter->hw); in __e1000_resume()
6514 e1000e_power_up_phy(adapter); in __e1000_resume()
6517 if (adapter->flags2 & FLAG2_HAS_PHY_WAKEUP) { in __e1000_resume()
6520 e1e_rphy(&adapter->hw, BM_WUS, &phy_data); in __e1000_resume()
6530 e1e_wphy(&adapter->hw, BM_WUS, ~0); in __e1000_resume()
6546 e1000e_reset(adapter); in __e1000_resume()
6548 e1000_init_manageability_pt(adapter); in __e1000_resume()
6554 if (!(adapter->flags & FLAG_HAS_AMT)) in __e1000_resume()
6555 e1000e_get_hw_control(adapter); in __e1000_resume()
6564 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_pm_thaw() local
6566 e1000e_set_interrupt_capability(adapter); in e1000e_pm_thaw()
6568 u32 err = e1000_request_irq(adapter); in e1000e_pm_thaw()
6573 e1000e_up(adapter); in e1000e_pm_thaw()
6609 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_pm_runtime_idle() local
6612 eee_lp = adapter->hw.dev_spec.ich8lan.eee_lp_ability; in e1000e_pm_runtime_idle()
6614 if (!e1000e_has_link(adapter)) { in e1000e_pm_runtime_idle()
6615 adapter->hw.dev_spec.ich8lan.eee_lp_ability = eee_lp; in e1000e_pm_runtime_idle()
6626 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_pm_runtime_resume() local
6634 rc = e1000e_up(adapter); in e1000e_pm_runtime_resume()
6643 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_pm_runtime_suspend() local
6648 while (test_bit(__E1000_RESETTING, &adapter->state) && count--) in e1000e_pm_runtime_suspend()
6651 WARN_ON(test_bit(__E1000_RESETTING, &adapter->state)); in e1000e_pm_runtime_suspend()
6654 e1000e_down(adapter, false); in e1000e_pm_runtime_suspend()
6680 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_intr_msix() local
6682 if (adapter->msix_entries) { in e1000_intr_msix()
6686 msix_irq = adapter->msix_entries[vector].vector; in e1000_intr_msix()
6692 msix_irq = adapter->msix_entries[vector].vector; in e1000_intr_msix()
6698 msix_irq = adapter->msix_entries[vector].vector; in e1000_intr_msix()
6717 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_netpoll() local
6719 switch (adapter->int_mode) { in e1000_netpoll()
6721 e1000_intr_msix(adapter->pdev->irq, netdev); in e1000_netpoll()
6724 disable_irq(adapter->pdev->irq); in e1000_netpoll()
6725 e1000_intr_msi(adapter->pdev->irq, netdev); in e1000_netpoll()
6726 enable_irq(adapter->pdev->irq); in e1000_netpoll()
6729 disable_irq(adapter->pdev->irq); in e1000_netpoll()
6730 e1000_intr(adapter->pdev->irq, netdev); in e1000_netpoll()
6731 enable_irq(adapter->pdev->irq); in e1000_netpoll()
6749 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_io_error_detected() local
6757 e1000e_down(adapter, true); in e1000_io_error_detected()
6774 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_io_slot_reset() local
6775 struct e1000_hw *hw = &adapter->hw; in e1000_io_slot_reset()
6780 if (adapter->flags2 & FLAG2_DISABLE_ASPM_L0S) in e1000_io_slot_reset()
6782 if (adapter->flags2 & FLAG2_DISABLE_ASPM_L1) in e1000_io_slot_reset()
6800 e1000e_reset(adapter); in e1000_io_slot_reset()
6821 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_io_resume() local
6823 e1000_init_manageability_pt(adapter); in e1000_io_resume()
6826 if (e1000e_up(adapter)) { in e1000_io_resume()
6839 if (!(adapter->flags & FLAG_HAS_AMT)) in e1000_io_resume()
6840 e1000e_get_hw_control(adapter); in e1000_io_resume()
6843 static void e1000_print_device_info(struct e1000_adapter *adapter) in e1000_print_device_info() argument
6845 struct e1000_hw *hw = &adapter->hw; in e1000_print_device_info()
6846 struct net_device *netdev = adapter->netdev; in e1000_print_device_info()
6867 static void e1000_eeprom_checks(struct e1000_adapter *adapter) in e1000_eeprom_checks() argument
6869 struct e1000_hw *hw = &adapter->hw; in e1000_eeprom_checks()
6880 dev_warn(&adapter->pdev->dev, in e1000_eeprom_checks()
6888 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_fix_features() local
6889 struct e1000_hw *hw = &adapter->hw; in e1000_fix_features()
6901 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_set_features() local
6905 adapter->flags |= FLAG_TSO_FORCE; in e1000_set_features()
6914 adapter->flags2 &= ~FLAG2_CRC_STRIPPING; in e1000_set_features()
6919 if (adapter->flags2 & FLAG2_DFLT_CRC_STRIPPING) in e1000_set_features()
6920 adapter->flags2 |= FLAG2_CRC_STRIPPING; in e1000_set_features()
6922 adapter->flags2 &= ~FLAG2_CRC_STRIPPING; in e1000_set_features()
6929 e1000e_reinit_locked(adapter); in e1000_set_features()
6931 e1000e_reset(adapter); in e1000_set_features()
6972 struct e1000_adapter *adapter; in e1000_probe() local
7033 adapter = netdev_priv(netdev); in e1000_probe()
7034 hw = &adapter->hw; in e1000_probe()
7035 adapter->netdev = netdev; in e1000_probe()
7036 adapter->pdev = pdev; in e1000_probe()
7037 adapter->ei = ei; in e1000_probe()
7038 adapter->pba = ei->pba; in e1000_probe()
7039 adapter->flags = ei->flags; in e1000_probe()
7040 adapter->flags2 = ei->flags2; in e1000_probe()
7041 adapter->hw.adapter = adapter; in e1000_probe()
7042 adapter->hw.mac.type = ei->mac; in e1000_probe()
7043 adapter->max_hw_frame_size = ei->max_hw_frame_size; in e1000_probe()
7044 adapter->msg_enable = netif_msg_init(debug, DEFAULT_MSG_ENABLE); in e1000_probe()
7050 adapter->hw.hw_addr = ioremap(mmio_start, mmio_len); in e1000_probe()
7051 if (!adapter->hw.hw_addr) in e1000_probe()
7054 if ((adapter->flags & FLAG_HAS_FLASH) && in e1000_probe()
7059 adapter->hw.flash_address = ioremap(flash_start, flash_len); in e1000_probe()
7060 if (!adapter->hw.flash_address) in e1000_probe()
7065 if (adapter->flags2 & FLAG2_HAS_EEE) in e1000_probe()
7066 adapter->eee_advert = MDIO_EEE_100TX | MDIO_EEE_1000T; in e1000_probe()
7072 netif_napi_add(netdev, &adapter->napi, e1000e_poll, 64); in e1000_probe()
7078 adapter->bd_number = cards_found++; in e1000_probe()
7080 e1000e_check_options(adapter); in e1000_probe()
7083 err = e1000_sw_init(adapter); in e1000_probe()
7091 err = ei->get_variants(adapter); in e1000_probe()
7095 if ((adapter->flags & FLAG_IS_ICH) && in e1000_probe()
7096 (adapter->flags & FLAG_READ_ONLY_NVM) && in e1000_probe()
7098 e1000e_write_protect_nvm_ich8lan(&adapter->hw); in e1000_probe()
7100 hw->mac.ops.get_bus_info(&adapter->hw); in e1000_probe()
7102 adapter->hw.phy.autoneg_wait_to_complete = 0; in e1000_probe()
7105 if (adapter->hw.phy.media_type == e1000_media_type_copper) { in e1000_probe()
7106 adapter->hw.phy.mdix = AUTO_ALL_MODES; in e1000_probe()
7107 adapter->hw.phy.disable_polarity_correction = 0; in e1000_probe()
7108 adapter->hw.phy.ms_type = e1000_ms_hw_default; in e1000_probe()
7131 if (adapter->flags & FLAG_HAS_HW_VLAN_FILTER) in e1000_probe()
7146 if (e1000e_enable_mng_pass_thru(&adapter->hw)) in e1000_probe()
7147 adapter->flags |= FLAG_MNG_PT_ENABLED; in e1000_probe()
7152 adapter->hw.mac.ops.reset_hw(&adapter->hw); in e1000_probe()
7158 if (e1000_validate_nvm_checksum(&adapter->hw) >= 0) in e1000_probe()
7167 e1000_eeprom_checks(adapter); in e1000_probe()
7170 if (e1000e_read_mac_addr(&adapter->hw)) in e1000_probe()
7174 memcpy(netdev->dev_addr, adapter->hw.mac.addr, netdev->addr_len); in e1000_probe()
7183 init_timer(&adapter->watchdog_timer); in e1000_probe()
7184 adapter->watchdog_timer.function = e1000_watchdog; in e1000_probe()
7185 adapter->watchdog_timer.data = (unsigned long)adapter; in e1000_probe()
7187 init_timer(&adapter->phy_info_timer); in e1000_probe()
7188 adapter->phy_info_timer.function = e1000_update_phy_info; in e1000_probe()
7189 adapter->phy_info_timer.data = (unsigned long)adapter; in e1000_probe()
7191 INIT_WORK(&adapter->reset_task, e1000_reset_task); in e1000_probe()
7192 INIT_WORK(&adapter->watchdog_task, e1000_watchdog_task); in e1000_probe()
7193 INIT_WORK(&adapter->downshift_task, e1000e_downshift_workaround); in e1000_probe()
7194 INIT_WORK(&adapter->update_phy_task, e1000e_update_phy_task); in e1000_probe()
7195 INIT_WORK(&adapter->print_hang_task, e1000_print_hw_hang); in e1000_probe()
7198 adapter->hw.mac.autoneg = 1; in e1000_probe()
7199 adapter->fc_autoneg = true; in e1000_probe()
7200 adapter->hw.fc.requested_mode = e1000_fc_default; in e1000_probe()
7201 adapter->hw.fc.current_mode = e1000_fc_default; in e1000_probe()
7202 adapter->hw.phy.autoneg_advertised = 0x2f; in e1000_probe()
7207 if (adapter->flags & FLAG_APME_IN_WUC) { in e1000_probe()
7213 adapter->flags2 |= FLAG2_HAS_PHY_WAKEUP; in e1000_probe()
7214 } else if (adapter->flags & FLAG_APME_IN_CTRL3) { in e1000_probe()
7215 if (adapter->flags & FLAG_APME_CHECK_PORT_B && in e1000_probe()
7216 (adapter->hw.bus.func == 1)) in e1000_probe()
7217 rval = e1000_read_nvm(&adapter->hw, in e1000_probe()
7221 rval = e1000_read_nvm(&adapter->hw, in e1000_probe()
7230 adapter->eeprom_wol |= E1000_WUFC_MAG; in e1000_probe()
7236 if (!(adapter->flags & FLAG_HAS_WOL)) in e1000_probe()
7237 adapter->eeprom_wol = 0; in e1000_probe()
7240 adapter->wol = adapter->eeprom_wol; in e1000_probe()
7243 if (adapter->wol || (adapter->flags & FLAG_MNG_PT_ENABLED) || in e1000_probe()
7248 rval = e1000_read_nvm(&adapter->hw, 5, 1, &adapter->eeprom_vers); in e1000_probe()
7252 adapter->eeprom_vers = 0; in e1000_probe()
7256 e1000e_reset(adapter); in e1000_probe()
7262 if (!(adapter->flags & FLAG_HAS_AMT)) in e1000_probe()
7263 e1000e_get_hw_control(adapter); in e1000_probe()
7274 e1000e_ptp_init(adapter); in e1000_probe()
7276 e1000_print_device_info(adapter); in e1000_probe()
7284 if (!(adapter->flags & FLAG_HAS_AMT)) in e1000_probe()
7285 e1000e_release_hw_control(adapter); in e1000_probe()
7288 e1000_phy_hw_reset(&adapter->hw); in e1000_probe()
7290 kfree(adapter->tx_ring); in e1000_probe()
7291 kfree(adapter->rx_ring); in e1000_probe()
7293 if ((adapter->hw.flash_address) && (hw->mac.type < e1000_pch_spt)) in e1000_probe()
7294 iounmap(adapter->hw.flash_address); in e1000_probe()
7295 e1000e_reset_interrupt_capability(adapter); in e1000_probe()
7297 iounmap(adapter->hw.hw_addr); in e1000_probe()
7321 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_remove() local
7322 bool down = test_bit(__E1000_DOWN, &adapter->state); in e1000_remove()
7324 e1000e_ptp_remove(adapter); in e1000_remove()
7330 set_bit(__E1000_DOWN, &adapter->state); in e1000_remove()
7331 del_timer_sync(&adapter->watchdog_timer); in e1000_remove()
7332 del_timer_sync(&adapter->phy_info_timer); in e1000_remove()
7334 cancel_work_sync(&adapter->reset_task); in e1000_remove()
7335 cancel_work_sync(&adapter->watchdog_task); in e1000_remove()
7336 cancel_work_sync(&adapter->downshift_task); in e1000_remove()
7337 cancel_work_sync(&adapter->update_phy_task); in e1000_remove()
7338 cancel_work_sync(&adapter->print_hang_task); in e1000_remove()
7340 if (adapter->flags & FLAG_HAS_HW_TIMESTAMP) { in e1000_remove()
7341 cancel_work_sync(&adapter->tx_hwtstamp_work); in e1000_remove()
7342 if (adapter->tx_hwtstamp_skb) { in e1000_remove()
7343 dev_kfree_skb_any(adapter->tx_hwtstamp_skb); in e1000_remove()
7344 adapter->tx_hwtstamp_skb = NULL; in e1000_remove()
7350 clear_bit(__E1000_DOWN, &adapter->state); in e1000_remove()
7359 e1000e_release_hw_control(adapter); in e1000_remove()
7361 e1000e_reset_interrupt_capability(adapter); in e1000_remove()
7362 kfree(adapter->tx_ring); in e1000_remove()
7363 kfree(adapter->rx_ring); in e1000_remove()
7365 iounmap(adapter->hw.hw_addr); in e1000_remove()
7366 if ((adapter->hw.flash_address) && in e1000_remove()
7367 (adapter->hw.mac.type < e1000_pch_spt)) in e1000_remove()
7368 iounmap(adapter->hw.flash_address); in e1000_remove()