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()
1742 if (adapter->flags2 & FLAG2_PCIM2PCI_ARBITER_WA) in e1000_clean_rx_ring()
1750 struct e1000_adapter *adapter = container_of(work, in e1000e_downshift_workaround() local
1754 if (test_bit(__E1000_DOWN, &adapter->state)) in e1000e_downshift_workaround()
1757 e1000e_gig_downshift_workaround_ich8lan(&adapter->hw); in e1000e_downshift_workaround()
1768 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_intr_msi() local
1769 struct e1000_hw *hw = &adapter->hw; in e1000_intr_msi()
1778 if ((adapter->flags & FLAG_LSC_GIG_SPEED_DROP) && in e1000_intr_msi()
1780 schedule_work(&adapter->downshift_task); in e1000_intr_msi()
1787 adapter->flags & FLAG_RX_NEEDS_RESTART) { in e1000_intr_msi()
1792 adapter->flags |= FLAG_RESTART_NOW; in e1000_intr_msi()
1795 if (!test_bit(__E1000_DOWN, &adapter->state)) in e1000_intr_msi()
1796 mod_timer(&adapter->watchdog_timer, jiffies + 1); in e1000_intr_msi()
1804 adapter->corr_errors += in e1000_intr_msi()
1806 adapter->uncorr_errors += in e1000_intr_msi()
1811 schedule_work(&adapter->reset_task); in e1000_intr_msi()
1817 if (napi_schedule_prep(&adapter->napi)) { in e1000_intr_msi()
1818 adapter->total_tx_bytes = 0; in e1000_intr_msi()
1819 adapter->total_tx_packets = 0; in e1000_intr_msi()
1820 adapter->total_rx_bytes = 0; in e1000_intr_msi()
1821 adapter->total_rx_packets = 0; in e1000_intr_msi()
1822 __napi_schedule(&adapter->napi); in e1000_intr_msi()
1836 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_intr() local
1837 struct e1000_hw *hw = &adapter->hw; in e1000_intr()
1840 if (!icr || test_bit(__E1000_DOWN, &adapter->state)) in e1000_intr()
1859 if ((adapter->flags & FLAG_LSC_GIG_SPEED_DROP) && in e1000_intr()
1861 schedule_work(&adapter->downshift_task); in e1000_intr()
1869 (adapter->flags & FLAG_RX_NEEDS_RESTART)) { in e1000_intr()
1873 adapter->flags |= FLAG_RESTART_NOW; in e1000_intr()
1876 if (!test_bit(__E1000_DOWN, &adapter->state)) in e1000_intr()
1877 mod_timer(&adapter->watchdog_timer, jiffies + 1); in e1000_intr()
1885 adapter->corr_errors += in e1000_intr()
1887 adapter->uncorr_errors += in e1000_intr()
1892 schedule_work(&adapter->reset_task); in e1000_intr()
1898 if (napi_schedule_prep(&adapter->napi)) { in e1000_intr()
1899 adapter->total_tx_bytes = 0; in e1000_intr()
1900 adapter->total_tx_packets = 0; in e1000_intr()
1901 adapter->total_rx_bytes = 0; in e1000_intr()
1902 adapter->total_rx_packets = 0; in e1000_intr()
1903 __napi_schedule(&adapter->napi); in e1000_intr()
1912 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_msix_other() local
1913 struct e1000_hw *hw = &adapter->hw; in e1000_msix_other()
1917 if (!test_bit(__E1000_DOWN, &adapter->state)) in e1000_msix_other()
1922 if (icr & adapter->eiac_mask) in e1000_msix_other()
1923 ew32(ICS, (icr & adapter->eiac_mask)); in e1000_msix_other()
1930 if (!test_bit(__E1000_DOWN, &adapter->state)) in e1000_msix_other()
1931 mod_timer(&adapter->watchdog_timer, jiffies + 1); in e1000_msix_other()
1935 if (!test_bit(__E1000_DOWN, &adapter->state)) in e1000_msix_other()
1944 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_intr_msix_tx() local
1945 struct e1000_hw *hw = &adapter->hw; in e1000_intr_msix_tx()
1946 struct e1000_ring *tx_ring = adapter->tx_ring; in e1000_intr_msix_tx()
1948 adapter->total_tx_bytes = 0; in e1000_intr_msix_tx()
1949 adapter->total_tx_packets = 0; in e1000_intr_msix_tx()
1961 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_intr_msix_rx() local
1962 struct e1000_ring *rx_ring = adapter->rx_ring; in e1000_intr_msix_rx()
1973 if (napi_schedule_prep(&adapter->napi)) { in e1000_intr_msix_rx()
1974 adapter->total_rx_bytes = 0; in e1000_intr_msix_rx()
1975 adapter->total_rx_packets = 0; in e1000_intr_msix_rx()
1976 __napi_schedule(&adapter->napi); in e1000_intr_msix_rx()
1987 static void e1000_configure_msix(struct e1000_adapter *adapter) in e1000_configure_msix() argument
1989 struct e1000_hw *hw = &adapter->hw; in e1000_configure_msix()
1990 struct e1000_ring *rx_ring = adapter->rx_ring; in e1000_configure_msix()
1991 struct e1000_ring *tx_ring = adapter->tx_ring; in e1000_configure_msix()
1995 adapter->eiac_mask = 0; in e1000_configure_msix()
2007 adapter->eiac_mask |= rx_ring->ims_val; in e1000_configure_msix()
2023 adapter->eiac_mask |= tx_ring->ims_val; in e1000_configure_msix()
2051 void e1000e_reset_interrupt_capability(struct e1000_adapter *adapter) in e1000e_reset_interrupt_capability() argument
2053 if (adapter->msix_entries) { in e1000e_reset_interrupt_capability()
2054 pci_disable_msix(adapter->pdev); in e1000e_reset_interrupt_capability()
2055 kfree(adapter->msix_entries); in e1000e_reset_interrupt_capability()
2056 adapter->msix_entries = NULL; in e1000e_reset_interrupt_capability()
2057 } else if (adapter->flags & FLAG_MSI_ENABLED) { in e1000e_reset_interrupt_capability()
2058 pci_disable_msi(adapter->pdev); in e1000e_reset_interrupt_capability()
2059 adapter->flags &= ~FLAG_MSI_ENABLED; in e1000e_reset_interrupt_capability()
2069 void e1000e_set_interrupt_capability(struct e1000_adapter *adapter) in e1000e_set_interrupt_capability() argument
2074 switch (adapter->int_mode) { in e1000e_set_interrupt_capability()
2076 if (adapter->flags & FLAG_HAS_MSIX) { in e1000e_set_interrupt_capability()
2077 adapter->num_vectors = 3; /* RxQ0, TxQ0 and other */ in e1000e_set_interrupt_capability()
2078 adapter->msix_entries = kcalloc(adapter->num_vectors, in e1000e_set_interrupt_capability()
2082 if (adapter->msix_entries) { in e1000e_set_interrupt_capability()
2083 struct e1000_adapter *a = adapter; in e1000e_set_interrupt_capability()
2085 for (i = 0; i < adapter->num_vectors; i++) in e1000e_set_interrupt_capability()
2086 adapter->msix_entries[i].entry = i; in e1000e_set_interrupt_capability()
2097 e1000e_reset_interrupt_capability(adapter); in e1000e_set_interrupt_capability()
2099 adapter->int_mode = E1000E_INT_MODE_MSI; in e1000e_set_interrupt_capability()
2102 if (!pci_enable_msi(adapter->pdev)) { in e1000e_set_interrupt_capability()
2103 adapter->flags |= FLAG_MSI_ENABLED; in e1000e_set_interrupt_capability()
2105 adapter->int_mode = E1000E_INT_MODE_LEGACY; in e1000e_set_interrupt_capability()
2115 adapter->num_vectors = 1; in e1000e_set_interrupt_capability()
2124 static int e1000_request_msix(struct e1000_adapter *adapter) in e1000_request_msix() argument
2126 struct net_device *netdev = adapter->netdev; in e1000_request_msix()
2130 snprintf(adapter->rx_ring->name, in e1000_request_msix()
2131 sizeof(adapter->rx_ring->name) - 1, in e1000_request_msix()
2134 memcpy(adapter->rx_ring->name, netdev->name, IFNAMSIZ); in e1000_request_msix()
2135 err = request_irq(adapter->msix_entries[vector].vector, in e1000_request_msix()
2136 e1000_intr_msix_rx, 0, adapter->rx_ring->name, in e1000_request_msix()
2140 adapter->rx_ring->itr_register = adapter->hw.hw_addr + in e1000_request_msix()
2142 adapter->rx_ring->itr_val = adapter->itr; in e1000_request_msix()
2146 snprintf(adapter->tx_ring->name, in e1000_request_msix()
2147 sizeof(adapter->tx_ring->name) - 1, in e1000_request_msix()
2150 memcpy(adapter->tx_ring->name, netdev->name, IFNAMSIZ); in e1000_request_msix()
2151 err = request_irq(adapter->msix_entries[vector].vector, in e1000_request_msix()
2152 e1000_intr_msix_tx, 0, adapter->tx_ring->name, in e1000_request_msix()
2156 adapter->tx_ring->itr_register = adapter->hw.hw_addr + in e1000_request_msix()
2158 adapter->tx_ring->itr_val = adapter->itr; in e1000_request_msix()
2161 err = request_irq(adapter->msix_entries[vector].vector, in e1000_request_msix()
2166 e1000_configure_msix(adapter); in e1000_request_msix()
2177 static int e1000_request_irq(struct e1000_adapter *adapter) in e1000_request_irq() argument
2179 struct net_device *netdev = adapter->netdev; in e1000_request_irq()
2182 if (adapter->msix_entries) { in e1000_request_irq()
2183 err = e1000_request_msix(adapter); in e1000_request_irq()
2187 e1000e_reset_interrupt_capability(adapter); in e1000_request_irq()
2188 adapter->int_mode = E1000E_INT_MODE_MSI; in e1000_request_irq()
2189 e1000e_set_interrupt_capability(adapter); in e1000_request_irq()
2191 if (adapter->flags & FLAG_MSI_ENABLED) { in e1000_request_irq()
2192 err = request_irq(adapter->pdev->irq, e1000_intr_msi, 0, in e1000_request_irq()
2198 e1000e_reset_interrupt_capability(adapter); in e1000_request_irq()
2199 adapter->int_mode = E1000E_INT_MODE_LEGACY; in e1000_request_irq()
2202 err = request_irq(adapter->pdev->irq, e1000_intr, IRQF_SHARED, in e1000_request_irq()
2210 static void e1000_free_irq(struct e1000_adapter *adapter) in e1000_free_irq() argument
2212 struct net_device *netdev = adapter->netdev; in e1000_free_irq()
2214 if (adapter->msix_entries) { in e1000_free_irq()
2217 free_irq(adapter->msix_entries[vector].vector, netdev); in e1000_free_irq()
2220 free_irq(adapter->msix_entries[vector].vector, netdev); in e1000_free_irq()
2224 free_irq(adapter->msix_entries[vector].vector, netdev); in e1000_free_irq()
2228 free_irq(adapter->pdev->irq, netdev); in e1000_free_irq()
2234 static void e1000_irq_disable(struct e1000_adapter *adapter) in e1000_irq_disable() argument
2236 struct e1000_hw *hw = &adapter->hw; in e1000_irq_disable()
2239 if (adapter->msix_entries) in e1000_irq_disable()
2243 if (adapter->msix_entries) { in e1000_irq_disable()
2246 for (i = 0; i < adapter->num_vectors; i++) in e1000_irq_disable()
2247 synchronize_irq(adapter->msix_entries[i].vector); in e1000_irq_disable()
2249 synchronize_irq(adapter->pdev->irq); in e1000_irq_disable()
2256 static void e1000_irq_enable(struct e1000_adapter *adapter) in e1000_irq_enable() argument
2258 struct e1000_hw *hw = &adapter->hw; in e1000_irq_enable()
2260 if (adapter->msix_entries) { in e1000_irq_enable()
2261 ew32(EIAC_82574, adapter->eiac_mask & E1000_EIAC_MASK_82574); in e1000_irq_enable()
2262 ew32(IMS, adapter->eiac_mask | E1000_IMS_OTHER | E1000_IMS_LSC); in e1000_irq_enable()
2281 void e1000e_get_hw_control(struct e1000_adapter *adapter) in e1000e_get_hw_control() argument
2283 struct e1000_hw *hw = &adapter->hw; in e1000e_get_hw_control()
2288 if (adapter->flags & FLAG_HAS_SWSM_ON_LOAD) { in e1000e_get_hw_control()
2291 } else if (adapter->flags & FLAG_HAS_CTRLEXT_ON_LOAD) { in e1000e_get_hw_control()
2307 void e1000e_release_hw_control(struct e1000_adapter *adapter) in e1000e_release_hw_control() argument
2309 struct e1000_hw *hw = &adapter->hw; in e1000e_release_hw_control()
2314 if (adapter->flags & FLAG_HAS_SWSM_ON_LOAD) { in e1000e_release_hw_control()
2317 } else if (adapter->flags & FLAG_HAS_CTRLEXT_ON_LOAD) { in e1000e_release_hw_control()
2326 static int e1000_alloc_ring_dma(struct e1000_adapter *adapter, in e1000_alloc_ring_dma() argument
2329 struct pci_dev *pdev = adapter->pdev; in e1000_alloc_ring_dma()
2347 struct e1000_adapter *adapter = tx_ring->adapter; in e1000e_setup_tx_resources() local
2359 err = e1000_alloc_ring_dma(adapter, tx_ring); in e1000e_setup_tx_resources()
2381 struct e1000_adapter *adapter = rx_ring->adapter; in e1000e_setup_rx_resources() local
2405 err = e1000_alloc_ring_dma(adapter, rx_ring); in e1000e_setup_rx_resources()
2432 struct e1000_adapter *adapter = tx_ring->adapter; in e1000_clean_tx_ring() local
2442 netdev_reset_queue(adapter->netdev); in e1000_clean_tx_ring()
2452 if (adapter->flags2 & FLAG2_PCIM2PCI_ARBITER_WA) in e1000_clean_tx_ring()
2466 struct e1000_adapter *adapter = tx_ring->adapter; in e1000e_free_tx_resources() local
2467 struct pci_dev *pdev = adapter->pdev; in e1000e_free_tx_resources()
2487 struct e1000_adapter *adapter = rx_ring->adapter; in e1000e_free_rx_resources() local
2488 struct pci_dev *pdev = adapter->pdev; in e1000e_free_rx_resources()
2563 static void e1000_set_itr(struct e1000_adapter *adapter) in e1000_set_itr() argument
2566 u32 new_itr = adapter->itr; in e1000_set_itr()
2569 if (adapter->link_speed != SPEED_1000) { in e1000_set_itr()
2575 if (adapter->flags2 & FLAG2_DISABLE_AIM) { in e1000_set_itr()
2580 adapter->tx_itr = e1000_update_itr(adapter->tx_itr, in e1000_set_itr()
2581 adapter->total_tx_packets, in e1000_set_itr()
2582 adapter->total_tx_bytes); in e1000_set_itr()
2584 if (adapter->itr_setting == 3 && adapter->tx_itr == lowest_latency) in e1000_set_itr()
2585 adapter->tx_itr = low_latency; in e1000_set_itr()
2587 adapter->rx_itr = e1000_update_itr(adapter->rx_itr, in e1000_set_itr()
2588 adapter->total_rx_packets, in e1000_set_itr()
2589 adapter->total_rx_bytes); in e1000_set_itr()
2591 if (adapter->itr_setting == 3 && adapter->rx_itr == lowest_latency) in e1000_set_itr()
2592 adapter->rx_itr = low_latency; in e1000_set_itr()
2594 current_itr = max(adapter->rx_itr, adapter->tx_itr); in e1000_set_itr()
2612 if (new_itr != adapter->itr) { in e1000_set_itr()
2617 new_itr = new_itr > adapter->itr ? in e1000_set_itr()
2618 min(adapter->itr + (new_itr >> 2), new_itr) : new_itr; in e1000_set_itr()
2619 adapter->itr = new_itr; in e1000_set_itr()
2620 adapter->rx_ring->itr_val = new_itr; in e1000_set_itr()
2621 if (adapter->msix_entries) in e1000_set_itr()
2622 adapter->rx_ring->set_itr = 1; in e1000_set_itr()
2624 e1000e_write_itr(adapter, new_itr); in e1000_set_itr()
2637 void e1000e_write_itr(struct e1000_adapter *adapter, u32 itr) in e1000e_write_itr() argument
2639 struct e1000_hw *hw = &adapter->hw; in e1000e_write_itr()
2642 if (adapter->msix_entries) { in e1000e_write_itr()
2645 for (vector = 0; vector < adapter->num_vectors; vector++) in e1000e_write_itr()
2656 static int e1000_alloc_queues(struct e1000_adapter *adapter) in e1000_alloc_queues() argument
2660 adapter->tx_ring = kzalloc(size, GFP_KERNEL); in e1000_alloc_queues()
2661 if (!adapter->tx_ring) in e1000_alloc_queues()
2663 adapter->tx_ring->count = adapter->tx_ring_count; in e1000_alloc_queues()
2664 adapter->tx_ring->adapter = adapter; in e1000_alloc_queues()
2666 adapter->rx_ring = kzalloc(size, GFP_KERNEL); in e1000_alloc_queues()
2667 if (!adapter->rx_ring) in e1000_alloc_queues()
2669 adapter->rx_ring->count = adapter->rx_ring_count; in e1000_alloc_queues()
2670 adapter->rx_ring->adapter = adapter; in e1000_alloc_queues()
2675 kfree(adapter->rx_ring); in e1000_alloc_queues()
2676 kfree(adapter->tx_ring); in e1000_alloc_queues()
2687 struct e1000_adapter *adapter = container_of(napi, struct e1000_adapter, in e1000e_poll() local
2689 struct e1000_hw *hw = &adapter->hw; in e1000e_poll()
2690 struct net_device *poll_dev = adapter->netdev; in e1000e_poll()
2693 adapter = netdev_priv(poll_dev); in e1000e_poll()
2695 if (!adapter->msix_entries || in e1000e_poll()
2696 (adapter->rx_ring->ims_val & adapter->tx_ring->ims_val)) in e1000e_poll()
2697 tx_cleaned = e1000_clean_tx_irq(adapter->tx_ring); in e1000e_poll()
2699 adapter->clean_rx(adapter->rx_ring, &work_done, weight); in e1000e_poll()
2706 if (adapter->itr_setting & 3) in e1000e_poll()
2707 e1000_set_itr(adapter); in e1000e_poll()
2709 if (!test_bit(__E1000_DOWN, &adapter->state)) { in e1000e_poll()
2710 if (adapter->msix_entries) in e1000e_poll()
2711 ew32(IMS, adapter->rx_ring->ims_val); in e1000e_poll()
2713 e1000_irq_enable(adapter); in e1000e_poll()
2723 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_vlan_rx_add_vid() local
2724 struct e1000_hw *hw = &adapter->hw; in e1000_vlan_rx_add_vid()
2728 if ((adapter->hw.mng_cookie.status & in e1000_vlan_rx_add_vid()
2730 (vid == adapter->mng_vlan_id)) in e1000_vlan_rx_add_vid()
2734 if (adapter->flags & FLAG_HAS_HW_VLAN_FILTER) { in e1000_vlan_rx_add_vid()
2741 set_bit(vid, adapter->active_vlans); in e1000_vlan_rx_add_vid()
2749 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_vlan_rx_kill_vid() local
2750 struct e1000_hw *hw = &adapter->hw; in e1000_vlan_rx_kill_vid()
2753 if ((adapter->hw.mng_cookie.status & in e1000_vlan_rx_kill_vid()
2755 (vid == adapter->mng_vlan_id)) { in e1000_vlan_rx_kill_vid()
2757 e1000e_release_hw_control(adapter); in e1000_vlan_rx_kill_vid()
2762 if (adapter->flags & FLAG_HAS_HW_VLAN_FILTER) { in e1000_vlan_rx_kill_vid()
2769 clear_bit(vid, adapter->active_vlans); in e1000_vlan_rx_kill_vid()
2778 static void e1000e_vlan_filter_disable(struct e1000_adapter *adapter) in e1000e_vlan_filter_disable() argument
2780 struct net_device *netdev = adapter->netdev; in e1000e_vlan_filter_disable()
2781 struct e1000_hw *hw = &adapter->hw; in e1000e_vlan_filter_disable()
2784 if (adapter->flags & FLAG_HAS_HW_VLAN_FILTER) { in e1000e_vlan_filter_disable()
2790 if (adapter->mng_vlan_id != (u16)E1000_MNG_VLAN_NONE) { in e1000e_vlan_filter_disable()
2792 adapter->mng_vlan_id); in e1000e_vlan_filter_disable()
2793 adapter->mng_vlan_id = E1000_MNG_VLAN_NONE; in e1000e_vlan_filter_disable()
2802 static void e1000e_vlan_filter_enable(struct e1000_adapter *adapter) in e1000e_vlan_filter_enable() argument
2804 struct e1000_hw *hw = &adapter->hw; in e1000e_vlan_filter_enable()
2807 if (adapter->flags & FLAG_HAS_HW_VLAN_FILTER) { in e1000e_vlan_filter_enable()
2820 static void e1000e_vlan_strip_disable(struct e1000_adapter *adapter) in e1000e_vlan_strip_disable() argument
2822 struct e1000_hw *hw = &adapter->hw; in e1000e_vlan_strip_disable()
2835 static void e1000e_vlan_strip_enable(struct e1000_adapter *adapter) in e1000e_vlan_strip_enable() argument
2837 struct e1000_hw *hw = &adapter->hw; in e1000e_vlan_strip_enable()
2846 static void e1000_update_mng_vlan(struct e1000_adapter *adapter) in e1000_update_mng_vlan() argument
2848 struct net_device *netdev = adapter->netdev; in e1000_update_mng_vlan()
2849 u16 vid = adapter->hw.mng_cookie.vlan_id; in e1000_update_mng_vlan()
2850 u16 old_vid = adapter->mng_vlan_id; in e1000_update_mng_vlan()
2852 if (adapter->hw.mng_cookie.status & E1000_MNG_DHCP_COOKIE_STATUS_VLAN) { in e1000_update_mng_vlan()
2854 adapter->mng_vlan_id = vid; in e1000_update_mng_vlan()
2861 static void e1000_restore_vlan(struct e1000_adapter *adapter) in e1000_restore_vlan() argument
2865 e1000_vlan_rx_add_vid(adapter->netdev, htons(ETH_P_8021Q), 0); in e1000_restore_vlan()
2867 for_each_set_bit(vid, adapter->active_vlans, VLAN_N_VID) in e1000_restore_vlan()
2868 e1000_vlan_rx_add_vid(adapter->netdev, htons(ETH_P_8021Q), vid); in e1000_restore_vlan()
2871 static void e1000_init_manageability_pt(struct e1000_adapter *adapter) in e1000_init_manageability_pt() argument
2873 struct e1000_hw *hw = &adapter->hw; in e1000_init_manageability_pt()
2876 if (!(adapter->flags & FLAG_MNG_PT_ENABLED)) in e1000_init_manageability_pt()
2939 static void e1000_configure_tx(struct e1000_adapter *adapter) in e1000_configure_tx() argument
2941 struct e1000_hw *hw = &adapter->hw; in e1000_configure_tx()
2942 struct e1000_ring *tx_ring = adapter->tx_ring; in e1000_configure_tx()
2954 tx_ring->head = adapter->hw.hw_addr + E1000_TDH(0); in e1000_configure_tx()
2955 tx_ring->tail = adapter->hw.hw_addr + E1000_TDT(0); in e1000_configure_tx()
2958 ew32(TIDV, adapter->tx_int_delay); in e1000_configure_tx()
2960 ew32(TADV, adapter->tx_abs_int_delay); in e1000_configure_tx()
2962 if (adapter->flags2 & FLAG2_DMA_BURST) { in e1000_configure_tx()
2988 if (adapter->flags & FLAG_TARC_SPEED_MODE_BIT) { in e1000_configure_tx()
2999 if (adapter->flags & FLAG_TARC_SET_BIT_ZERO) { in e1000_configure_tx()
3009 adapter->txd_cmd = E1000_TXD_CMD_EOP | E1000_TXD_CMD_IFCS; in e1000_configure_tx()
3012 if (adapter->tx_int_delay) in e1000_configure_tx()
3013 adapter->txd_cmd |= E1000_TXD_CMD_IDE; in e1000_configure_tx()
3016 adapter->txd_cmd |= E1000_TXD_CMD_RS; in e1000_configure_tx()
3042 static void e1000_setup_rctl(struct e1000_adapter *adapter) in e1000_setup_rctl() argument
3044 struct e1000_hw *hw = &adapter->hw; in e1000_setup_rctl()
3055 if (adapter->netdev->mtu > ETH_DATA_LEN) in e1000_setup_rctl()
3069 (adapter->hw.mac.mc_filter_type << E1000_RCTL_MO_SHIFT); in e1000_setup_rctl()
3075 if (adapter->netdev->mtu <= ETH_DATA_LEN) in e1000_setup_rctl()
3084 if (adapter->flags2 & FLAG2_CRC_STRIPPING) in e1000_setup_rctl()
3107 switch (adapter->rx_buffer_len) { in e1000_setup_rctl()
3143 pages = PAGE_USE_COUNT(adapter->netdev->mtu); in e1000_setup_rctl()
3145 adapter->rx_ps_pages = pages; in e1000_setup_rctl()
3147 adapter->rx_ps_pages = 0; in e1000_setup_rctl()
3149 if (adapter->rx_ps_pages) { in e1000_setup_rctl()
3155 psrctl |= adapter->rx_ps_bsize0 >> E1000_PSRCTL_BSIZE0_SHIFT; in e1000_setup_rctl()
3157 switch (adapter->rx_ps_pages) { in e1000_setup_rctl()
3173 if (adapter->netdev->features & NETIF_F_RXALL) { in e1000_setup_rctl()
3191 adapter->flags &= ~FLAG_RESTART_NOW; in e1000_setup_rctl()
3200 static void e1000_configure_rx(struct e1000_adapter *adapter) in e1000_configure_rx() argument
3202 struct e1000_hw *hw = &adapter->hw; in e1000_configure_rx()
3203 struct e1000_ring *rx_ring = adapter->rx_ring; in e1000_configure_rx()
3207 if (adapter->rx_ps_pages) { in e1000_configure_rx()
3211 adapter->clean_rx = e1000_clean_rx_irq_ps; in e1000_configure_rx()
3212 adapter->alloc_rx_buf = e1000_alloc_rx_buffers_ps; in e1000_configure_rx()
3213 } else if (adapter->netdev->mtu > ETH_FRAME_LEN + ETH_FCS_LEN) { in e1000_configure_rx()
3215 adapter->clean_rx = e1000_clean_jumbo_rx_irq; in e1000_configure_rx()
3216 adapter->alloc_rx_buf = e1000_alloc_jumbo_rx_buffers; in e1000_configure_rx()
3219 adapter->clean_rx = e1000_clean_rx_irq; in e1000_configure_rx()
3220 adapter->alloc_rx_buf = e1000_alloc_rx_buffers; in e1000_configure_rx()
3225 if (!(adapter->flags2 & FLAG2_NO_DISABLE_RX)) in e1000_configure_rx()
3230 if (adapter->flags2 & FLAG2_DMA_BURST) { in e1000_configure_rx()
3245 if (adapter->rx_int_delay == DEFAULT_RDTR) in e1000_configure_rx()
3246 adapter->rx_int_delay = BURST_RDTR; in e1000_configure_rx()
3247 if (adapter->rx_abs_int_delay == DEFAULT_RADV) in e1000_configure_rx()
3248 adapter->rx_abs_int_delay = BURST_RADV; in e1000_configure_rx()
3252 ew32(RDTR, adapter->rx_int_delay); in e1000_configure_rx()
3255 ew32(RADV, adapter->rx_abs_int_delay); in e1000_configure_rx()
3256 if ((adapter->itr_setting != 0) && (adapter->itr != 0)) in e1000_configure_rx()
3257 e1000e_write_itr(adapter, adapter->itr); in e1000_configure_rx()
3275 rx_ring->head = adapter->hw.hw_addr + E1000_RDH(0); in e1000_configure_rx()
3276 rx_ring->tail = adapter->hw.hw_addr + E1000_RDT(0); 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()
3540 adapter->cc.shift = shift + INCPERIOD_SHIFT_96MHz; in e1000e_get_base_timinca()
3550 adapter->cc.shift = shift; in e1000e_get_base_timinca()
3577 static int e1000e_config_hwtstamp(struct e1000_adapter *adapter, in e1000e_config_hwtstamp() argument
3580 struct e1000_hw *hw = &adapter->hw; in e1000e_config_hwtstamp()
3590 if (!(adapter->flags & FLAG_HAS_HW_TIMESTAMP)) in e1000e_config_hwtstamp()
3681 adapter->hwtstamp_config = *config; in e1000e_config_hwtstamp()
3728 ret_val = e1000e_get_base_timinca(adapter, ®val); in e1000e_config_hwtstamp()
3734 timecounter_init(&adapter->tc, &adapter->cc, in e1000e_config_hwtstamp()
3744 static void e1000_configure(struct e1000_adapter *adapter) in e1000_configure() argument
3746 struct e1000_ring *rx_ring = adapter->rx_ring; in e1000_configure()
3748 e1000e_set_rx_mode(adapter->netdev); in e1000_configure()
3750 e1000_restore_vlan(adapter); in e1000_configure()
3751 e1000_init_manageability_pt(adapter); in e1000_configure()
3753 e1000_configure_tx(adapter); in e1000_configure()
3755 if (adapter->netdev->features & NETIF_F_RXHASH) in e1000_configure()
3756 e1000e_setup_rss_hash(adapter); in e1000_configure()
3757 e1000_setup_rctl(adapter); in e1000_configure()
3758 e1000_configure_rx(adapter); in e1000_configure()
3759 adapter->alloc_rx_buf(rx_ring, e1000_desc_unused(rx_ring), GFP_KERNEL); in e1000_configure()
3770 void e1000e_power_up_phy(struct e1000_adapter *adapter) in e1000e_power_up_phy() argument
3772 if (adapter->hw.phy.ops.power_up) in e1000e_power_up_phy()
3773 adapter->hw.phy.ops.power_up(&adapter->hw); in e1000e_power_up_phy()
3775 adapter->hw.mac.ops.setup_link(&adapter->hw); in e1000e_power_up_phy()
3784 static void e1000_power_down_phy(struct e1000_adapter *adapter) in e1000_power_down_phy() argument
3786 if (adapter->hw.phy.ops.power_down) in e1000_power_down_phy()
3787 adapter->hw.phy.ops.power_down(&adapter->hw); in e1000_power_down_phy()
3798 void e1000e_reset(struct e1000_adapter *adapter) in e1000e_reset() argument
3800 struct e1000_mac_info *mac = &adapter->hw.mac; in e1000e_reset()
3801 struct e1000_fc_info *fc = &adapter->hw.fc; in e1000e_reset()
3802 struct e1000_hw *hw = &adapter->hw; in e1000e_reset()
3804 u32 pba = adapter->pba; in e1000e_reset()
3810 if (adapter->max_frame_size > (VLAN_ETH_FRAME_LEN + ETH_FCS_LEN)) { in e1000e_reset()
3826 min_tx_space = (adapter->max_frame_size + in e1000e_reset()
3831 min_rx_space = adapter->max_frame_size; in e1000e_reset()
3861 if (adapter->flags & FLAG_DISABLE_FC_PAUSE_TIME) in e1000e_reset()
3871 if (adapter->netdev->mtu > ETH_DATA_LEN) { in e1000e_reset()
3881 ((pba << 10) - adapter->max_frame_size)); in e1000e_reset()
3890 if (adapter->netdev->mtu > ETH_DATA_LEN) { in e1000e_reset()
3904 if (adapter->netdev->mtu <= ETH_DATA_LEN) { in e1000e_reset()
3923 adapter->tx_fifo_limit = min_t(u32, ((er32(PBA) >> 16) << 10) - 96, in e1000e_reset()
3929 if (adapter->itr_setting & 0x3) { in e1000e_reset()
3930 if ((adapter->max_frame_size * 2) > (pba << 10)) { in e1000e_reset()
3931 if (!(adapter->flags2 & FLAG2_DISABLE_AIM)) { in e1000e_reset()
3932 dev_info(&adapter->pdev->dev, in e1000e_reset()
3934 adapter->flags2 |= FLAG2_DISABLE_AIM; in e1000e_reset()
3935 e1000e_write_itr(adapter, 0); in e1000e_reset()
3937 } else if (adapter->flags2 & FLAG2_DISABLE_AIM) { in e1000e_reset()
3938 dev_info(&adapter->pdev->dev, in e1000e_reset()
3940 adapter->flags2 &= ~FLAG2_DISABLE_AIM; in e1000e_reset()
3941 adapter->itr = 20000; in e1000e_reset()
3942 e1000e_write_itr(adapter, adapter->itr); in e1000e_reset()
3952 if (adapter->flags & FLAG_HAS_AMT) in e1000e_reset()
3953 e1000e_get_hw_control(adapter); in e1000e_reset()
3960 e1000_update_mng_vlan(adapter); in e1000e_reset()
3968 e1000e_config_hwtstamp(adapter, &adapter->hwtstamp_config); in e1000e_reset()
3971 if (adapter->flags2 & FLAG2_HAS_EEE) { in e1000e_reset()
3983 dev_err(&adapter->pdev->dev, in e1000e_reset()
3990 dev_err(&adapter->pdev->dev, in e1000e_reset()
3997 0 : adapter->eee_advert); in e1000e_reset()
4002 if (!netif_running(adapter->netdev) && in e1000e_reset()
4003 !test_bit(__E1000_TESTING, &adapter->state)) in e1000e_reset()
4004 e1000_power_down_phy(adapter); in e1000e_reset()
4008 if ((adapter->flags & FLAG_HAS_SMART_POWER_DOWN) && in e1000e_reset()
4009 !(adapter->flags & FLAG_SMART_POWER_DOWN)) { in e1000e_reset()
4021 int e1000e_up(struct e1000_adapter *adapter) in e1000e_up() argument
4023 struct e1000_hw *hw = &adapter->hw; in e1000e_up()
4026 e1000_configure(adapter); in e1000e_up()
4028 clear_bit(__E1000_DOWN, &adapter->state); in e1000e_up()
4030 if (adapter->msix_entries) in e1000e_up()
4031 e1000_configure_msix(adapter); in e1000e_up()
4032 e1000_irq_enable(adapter); in e1000e_up()
4034 netif_start_queue(adapter->netdev); in e1000e_up()
4037 if (adapter->msix_entries) in e1000e_up()
4045 static void e1000e_flush_descriptors(struct e1000_adapter *adapter) in e1000e_flush_descriptors() argument
4047 struct e1000_hw *hw = &adapter->hw; in e1000e_flush_descriptors()
4049 if (!(adapter->flags2 & FLAG2_DMA_BURST)) in e1000e_flush_descriptors()
4053 ew32(TIDV, adapter->tx_int_delay | E1000_TIDV_FPD); in e1000e_flush_descriptors()
4054 ew32(RDTR, adapter->rx_int_delay | E1000_RDTR_FPD); in e1000e_flush_descriptors()
4062 ew32(TIDV, adapter->tx_int_delay | E1000_TIDV_FPD); in e1000e_flush_descriptors()
4063 ew32(RDTR, adapter->rx_int_delay | E1000_RDTR_FPD); in e1000e_flush_descriptors()
4069 static void e1000e_update_stats(struct e1000_adapter *adapter);
4076 void e1000e_down(struct e1000_adapter *adapter, bool reset) in e1000e_down() argument
4078 struct net_device *netdev = adapter->netdev; in e1000e_down()
4079 struct e1000_hw *hw = &adapter->hw; in e1000e_down()
4085 set_bit(__E1000_DOWN, &adapter->state); in e1000e_down()
4091 if (!(adapter->flags2 & FLAG2_NO_DISABLE_RX)) in e1000e_down()
4106 e1000_irq_disable(adapter); in e1000e_down()
4108 napi_synchronize(&adapter->napi); in e1000e_down()
4110 del_timer_sync(&adapter->watchdog_timer); in e1000e_down()
4111 del_timer_sync(&adapter->phy_info_timer); in e1000e_down()
4113 spin_lock(&adapter->stats64_lock); in e1000e_down()
4114 e1000e_update_stats(adapter); in e1000e_down()
4115 spin_unlock(&adapter->stats64_lock); in e1000e_down()
4117 e1000e_flush_descriptors(adapter); in e1000e_down()
4118 e1000_clean_tx_ring(adapter->tx_ring); in e1000e_down()
4119 e1000_clean_rx_ring(adapter->rx_ring); in e1000e_down()
4121 adapter->link_speed = 0; in e1000e_down()
4122 adapter->link_duplex = 0; in e1000e_down()
4126 (adapter->netdev->mtu > ETH_DATA_LEN) && in e1000e_down()
4130 if (reset && !pci_channel_offline(adapter->pdev)) in e1000e_down()
4131 e1000e_reset(adapter); in e1000e_down()
4134 void e1000e_reinit_locked(struct e1000_adapter *adapter) in e1000e_reinit_locked() argument
4137 while (test_and_set_bit(__E1000_RESETTING, &adapter->state)) in e1000e_reinit_locked()
4139 e1000e_down(adapter, true); in e1000e_reinit_locked()
4140 e1000e_up(adapter); in e1000e_reinit_locked()
4141 clear_bit(__E1000_RESETTING, &adapter->state); in e1000e_reinit_locked()
4150 struct e1000_adapter *adapter = container_of(cc, struct e1000_adapter, in e1000e_cyclecounter_read() local
4152 struct e1000_hw *hw = &adapter->hw; in e1000e_cyclecounter_read()
4195 static int e1000_sw_init(struct e1000_adapter *adapter) in e1000_sw_init() argument
4197 struct net_device *netdev = adapter->netdev; in e1000_sw_init()
4199 adapter->rx_buffer_len = VLAN_ETH_FRAME_LEN + ETH_FCS_LEN; in e1000_sw_init()
4200 adapter->rx_ps_bsize0 = 128; in e1000_sw_init()
4201 adapter->max_frame_size = netdev->mtu + VLAN_ETH_HLEN + ETH_FCS_LEN; in e1000_sw_init()
4202 adapter->min_frame_size = ETH_ZLEN + ETH_FCS_LEN; in e1000_sw_init()
4203 adapter->tx_ring_count = E1000_DEFAULT_TXD; in e1000_sw_init()
4204 adapter->rx_ring_count = E1000_DEFAULT_RXD; in e1000_sw_init()
4206 spin_lock_init(&adapter->stats64_lock); in e1000_sw_init()
4208 e1000e_set_interrupt_capability(adapter); in e1000_sw_init()
4210 if (e1000_alloc_queues(adapter)) in e1000_sw_init()
4214 if (adapter->flags & FLAG_HAS_HW_TIMESTAMP) { in e1000_sw_init()
4215 adapter->cc.read = e1000e_cyclecounter_read; in e1000_sw_init()
4216 adapter->cc.mask = CYCLECOUNTER_MASK(64); in e1000_sw_init()
4217 adapter->cc.mult = 1; in e1000_sw_init()
4220 spin_lock_init(&adapter->systim_lock); in e1000_sw_init()
4221 INIT_WORK(&adapter->tx_hwtstamp_work, e1000e_tx_hwtstamp_work); in e1000_sw_init()
4225 e1000_irq_disable(adapter); in e1000_sw_init()
4227 set_bit(__E1000_DOWN, &adapter->state); in e1000_sw_init()
4239 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_intr_msi_test() local
4240 struct e1000_hw *hw = &adapter->hw; in e1000_intr_msi_test()
4245 adapter->flags &= ~FLAG_MSI_TEST_FAILED; in e1000_intr_msi_test()
4261 static int e1000_test_msi_interrupt(struct e1000_adapter *adapter) in e1000_test_msi_interrupt() argument
4263 struct net_device *netdev = adapter->netdev; in e1000_test_msi_interrupt()
4264 struct e1000_hw *hw = &adapter->hw; in e1000_test_msi_interrupt()
4272 e1000_free_irq(adapter); in e1000_test_msi_interrupt()
4273 e1000e_reset_interrupt_capability(adapter); in e1000_test_msi_interrupt()
4278 adapter->flags |= FLAG_MSI_TEST_FAILED; in e1000_test_msi_interrupt()
4280 err = pci_enable_msi(adapter->pdev); in e1000_test_msi_interrupt()
4284 err = request_irq(adapter->pdev->irq, e1000_intr_msi_test, 0, in e1000_test_msi_interrupt()
4287 pci_disable_msi(adapter->pdev); in e1000_test_msi_interrupt()
4296 e1000_irq_enable(adapter); in e1000_test_msi_interrupt()
4303 e1000_irq_disable(adapter); in e1000_test_msi_interrupt()
4307 if (adapter->flags & FLAG_MSI_TEST_FAILED) { in e1000_test_msi_interrupt()
4308 adapter->int_mode = E1000E_INT_MODE_LEGACY; in e1000_test_msi_interrupt()
4314 free_irq(adapter->pdev->irq, netdev); in e1000_test_msi_interrupt()
4315 pci_disable_msi(adapter->pdev); in e1000_test_msi_interrupt()
4318 e1000e_set_interrupt_capability(adapter); in e1000_test_msi_interrupt()
4319 return e1000_request_irq(adapter); in e1000_test_msi_interrupt()
4328 static int e1000_test_msi(struct e1000_adapter *adapter) in e1000_test_msi() argument
4333 if (!(adapter->flags & FLAG_MSI_ENABLED)) in e1000_test_msi()
4337 pci_read_config_word(adapter->pdev, PCI_COMMAND, &pci_cmd); in e1000_test_msi()
4339 pci_write_config_word(adapter->pdev, PCI_COMMAND, in e1000_test_msi()
4342 err = e1000_test_msi_interrupt(adapter); in e1000_test_msi()
4346 pci_read_config_word(adapter->pdev, PCI_COMMAND, &pci_cmd); in e1000_test_msi()
4348 pci_write_config_word(adapter->pdev, PCI_COMMAND, pci_cmd); in e1000_test_msi()
4368 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_open() local
4369 struct e1000_hw *hw = &adapter->hw; in e1000_open()
4370 struct pci_dev *pdev = adapter->pdev; in e1000_open()
4374 if (test_bit(__E1000_TESTING, &adapter->state)) in e1000_open()
4382 err = e1000e_setup_tx_resources(adapter->tx_ring); in e1000_open()
4387 err = e1000e_setup_rx_resources(adapter->rx_ring); in e1000_open()
4394 if (adapter->flags & FLAG_HAS_AMT) { in e1000_open()
4395 e1000e_get_hw_control(adapter); in e1000_open()
4396 e1000e_reset(adapter); in e1000_open()
4399 e1000e_power_up_phy(adapter); in e1000_open()
4401 adapter->mng_vlan_id = E1000_MNG_VLAN_NONE; in e1000_open()
4402 if ((adapter->hw.mng_cookie.status & E1000_MNG_DHCP_COOKIE_STATUS_VLAN)) in e1000_open()
4403 e1000_update_mng_vlan(adapter); in e1000_open()
4406 pm_qos_add_request(&adapter->pm_qos_req, PM_QOS_CPU_DMA_LATENCY, in e1000_open()
4414 e1000_configure(adapter); in e1000_open()
4416 err = e1000_request_irq(adapter); in e1000_open()
4424 if (adapter->int_mode != E1000E_INT_MODE_LEGACY) { in e1000_open()
4425 err = e1000_test_msi(adapter); in e1000_open()
4433 clear_bit(__E1000_DOWN, &adapter->state); in e1000_open()
4435 napi_enable(&adapter->napi); in e1000_open()
4437 e1000_irq_enable(adapter); in e1000_open()
4439 adapter->tx_hang_recheck = false; in e1000_open()
4446 if (adapter->msix_entries) in e1000_open()
4454 e1000e_release_hw_control(adapter); in e1000_open()
4455 e1000_power_down_phy(adapter); in e1000_open()
4456 e1000e_free_rx_resources(adapter->rx_ring); in e1000_open()
4458 e1000e_free_tx_resources(adapter->tx_ring); in e1000_open()
4460 e1000e_reset(adapter); in e1000_open()
4479 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_close() local
4480 struct pci_dev *pdev = adapter->pdev; in e1000_close()
4483 while (test_bit(__E1000_RESETTING, &adapter->state) && count--) in e1000_close()
4486 WARN_ON(test_bit(__E1000_RESETTING, &adapter->state)); in e1000_close()
4490 if (!test_bit(__E1000_DOWN, &adapter->state)) { in e1000_close()
4491 e1000e_down(adapter, true); in e1000_close()
4492 e1000_free_irq(adapter); in e1000_close()
4495 pr_info("%s NIC Link is Down\n", adapter->netdev->name); in e1000_close()
4498 napi_disable(&adapter->napi); in e1000_close()
4500 e1000e_free_tx_resources(adapter->tx_ring); in e1000_close()
4501 e1000e_free_rx_resources(adapter->rx_ring); in e1000_close()
4506 if (adapter->hw.mng_cookie.status & E1000_MNG_DHCP_COOKIE_STATUS_VLAN) in e1000_close()
4508 adapter->mng_vlan_id); in e1000_close()
4513 if ((adapter->flags & FLAG_HAS_AMT) && in e1000_close()
4514 !test_bit(__E1000_TESTING, &adapter->state)) in e1000_close()
4515 e1000e_release_hw_control(adapter); in e1000_close()
4517 pm_qos_remove_request(&adapter->pm_qos_req); in e1000_close()
4533 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_set_mac() local
4534 struct e1000_hw *hw = &adapter->hw; in e1000_set_mac()
4541 memcpy(adapter->hw.mac.addr, addr->sa_data, netdev->addr_len); in e1000_set_mac()
4543 hw->mac.ops.rar_set(&adapter->hw, adapter->hw.mac.addr, 0); in e1000_set_mac()
4545 if (adapter->flags & FLAG_RESET_OVERWRITES_LAA) { in e1000_set_mac()
4547 e1000e_set_laa_state_82571(&adapter->hw, 1); in e1000_set_mac()
4556 hw->mac.ops.rar_set(&adapter->hw, adapter->hw.mac.addr, in e1000_set_mac()
4557 adapter->hw.mac.rar_entry_count - 1); in e1000_set_mac()
4573 struct e1000_adapter *adapter = container_of(work, in e1000e_update_phy_task() local
4576 struct e1000_hw *hw = &adapter->hw; in e1000e_update_phy_task()
4578 if (test_bit(__E1000_DOWN, &adapter->state)) in e1000e_update_phy_task()
4597 struct e1000_adapter *adapter = (struct e1000_adapter *)data; in e1000_update_phy_info() local
4599 if (test_bit(__E1000_DOWN, &adapter->state)) in e1000_update_phy_info()
4602 schedule_work(&adapter->update_phy_task); in e1000_update_phy_info()
4611 static void e1000e_update_phy_stats(struct e1000_adapter *adapter) in e1000e_update_phy_stats() argument
4613 struct e1000_hw *hw = &adapter->hw; in e1000e_update_phy_stats()
4640 adapter->stats.scc += phy_data; in e1000e_update_phy_stats()
4646 adapter->stats.ecol += phy_data; in e1000e_update_phy_stats()
4652 adapter->stats.mcc += phy_data; in e1000e_update_phy_stats()
4658 adapter->stats.latecol += phy_data; in e1000e_update_phy_stats()
4670 adapter->stats.dc += phy_data; in e1000e_update_phy_stats()
4676 adapter->stats.tncrs += phy_data; in e1000e_update_phy_stats()
4686 static void e1000e_update_stats(struct e1000_adapter *adapter) in e1000e_update_stats() argument
4688 struct net_device *netdev = adapter->netdev; in e1000e_update_stats()
4689 struct e1000_hw *hw = &adapter->hw; in e1000e_update_stats()
4690 struct pci_dev *pdev = adapter->pdev; in e1000e_update_stats()
4695 if (adapter->link_speed == 0) in e1000e_update_stats()
4700 adapter->stats.crcerrs += er32(CRCERRS); in e1000e_update_stats()
4701 adapter->stats.gprc += er32(GPRC); in e1000e_update_stats()
4702 adapter->stats.gorc += er32(GORCL); in e1000e_update_stats()
4704 adapter->stats.bprc += er32(BPRC); in e1000e_update_stats()
4705 adapter->stats.mprc += er32(MPRC); in e1000e_update_stats()
4706 adapter->stats.roc += er32(ROC); in e1000e_update_stats()
4708 adapter->stats.mpc += er32(MPC); in e1000e_update_stats()
4711 if (adapter->link_duplex == HALF_DUPLEX) { in e1000e_update_stats()
4712 if (adapter->flags2 & FLAG2_HAS_PHY_STATS) { in e1000e_update_stats()
4713 e1000e_update_phy_stats(adapter); in e1000e_update_stats()
4715 adapter->stats.scc += er32(SCC); in e1000e_update_stats()
4716 adapter->stats.ecol += er32(ECOL); in e1000e_update_stats()
4717 adapter->stats.mcc += er32(MCC); in e1000e_update_stats()
4718 adapter->stats.latecol += er32(LATECOL); in e1000e_update_stats()
4719 adapter->stats.dc += er32(DC); in e1000e_update_stats()
4725 adapter->stats.tncrs += er32(TNCRS); in e1000e_update_stats()
4727 adapter->stats.colc += hw->mac.collision_delta; in e1000e_update_stats()
4730 adapter->stats.xonrxc += er32(XONRXC); in e1000e_update_stats()
4731 adapter->stats.xontxc += er32(XONTXC); in e1000e_update_stats()
4732 adapter->stats.xoffrxc += er32(XOFFRXC); in e1000e_update_stats()
4733 adapter->stats.xofftxc += er32(XOFFTXC); in e1000e_update_stats()
4734 adapter->stats.gptc += er32(GPTC); in e1000e_update_stats()
4735 adapter->stats.gotc += er32(GOTCL); in e1000e_update_stats()
4737 adapter->stats.rnbc += er32(RNBC); in e1000e_update_stats()
4738 adapter->stats.ruc += er32(RUC); in e1000e_update_stats()
4740 adapter->stats.mptc += er32(MPTC); in e1000e_update_stats()
4741 adapter->stats.bptc += er32(BPTC); in e1000e_update_stats()
4746 adapter->stats.tpt += hw->mac.tx_packet_delta; in e1000e_update_stats()
4748 adapter->stats.algnerrc += er32(ALGNERRC); in e1000e_update_stats()
4749 adapter->stats.rxerrc += er32(RXERRC); in e1000e_update_stats()
4750 adapter->stats.cexterr += er32(CEXTERR); in e1000e_update_stats()
4751 adapter->stats.tsctc += er32(TSCTC); in e1000e_update_stats()
4752 adapter->stats.tsctfc += er32(TSCTFC); in e1000e_update_stats()
4755 netdev->stats.multicast = adapter->stats.mprc; in e1000e_update_stats()
4756 netdev->stats.collisions = adapter->stats.colc; in e1000e_update_stats()
4763 netdev->stats.rx_errors = adapter->stats.rxerrc + in e1000e_update_stats()
4764 adapter->stats.crcerrs + adapter->stats.algnerrc + in e1000e_update_stats()
4765 adapter->stats.ruc + adapter->stats.roc + adapter->stats.cexterr; in e1000e_update_stats()
4766 netdev->stats.rx_length_errors = adapter->stats.ruc + in e1000e_update_stats()
4767 adapter->stats.roc; in e1000e_update_stats()
4768 netdev->stats.rx_crc_errors = adapter->stats.crcerrs; in e1000e_update_stats()
4769 netdev->stats.rx_frame_errors = adapter->stats.algnerrc; in e1000e_update_stats()
4770 netdev->stats.rx_missed_errors = adapter->stats.mpc; in e1000e_update_stats()
4773 netdev->stats.tx_errors = adapter->stats.ecol + adapter->stats.latecol; in e1000e_update_stats()
4774 netdev->stats.tx_aborted_errors = adapter->stats.ecol; in e1000e_update_stats()
4775 netdev->stats.tx_window_errors = adapter->stats.latecol; in e1000e_update_stats()
4776 netdev->stats.tx_carrier_errors = adapter->stats.tncrs; in e1000e_update_stats()
4781 adapter->stats.mgptc += er32(MGTPTC); in e1000e_update_stats()
4782 adapter->stats.mgprc += er32(MGTPRC); in e1000e_update_stats()
4783 adapter->stats.mgpdc += er32(MGTPDC); in e1000e_update_stats()
4790 adapter->corr_errors += in e1000e_update_stats()
4792 adapter->uncorr_errors += in e1000e_update_stats()
4802 static void e1000_phy_read_status(struct e1000_adapter *adapter) in e1000_phy_read_status() argument
4804 struct e1000_hw *hw = &adapter->hw; in e1000_phy_read_status()
4805 struct e1000_phy_regs *phy = &adapter->phy_regs; in e1000_phy_read_status()
4807 if (!pm_runtime_suspended((&adapter->pdev->dev)->parent) && in e1000_phy_read_status()
4809 (adapter->hw.phy.media_type == e1000_media_type_copper)) { in e1000_phy_read_status()
4840 static void e1000_print_link_info(struct e1000_adapter *adapter) in e1000_print_link_info() argument
4842 struct e1000_hw *hw = &adapter->hw; in e1000_print_link_info()
4847 adapter->netdev->name, adapter->link_speed, in e1000_print_link_info()
4848 adapter->link_duplex == FULL_DUPLEX ? "Full" : "Half", in e1000_print_link_info()
4854 static bool e1000e_has_link(struct e1000_adapter *adapter) in e1000e_has_link() argument
4856 struct e1000_hw *hw = &adapter->hw; in e1000e_has_link()
4880 link_active = adapter->hw.mac.serdes_has_link; in e1000e_has_link()
4896 static void e1000e_enable_receives(struct e1000_adapter *adapter) in e1000e_enable_receives() argument
4899 if ((adapter->flags & FLAG_RX_NEEDS_RESTART) && in e1000e_enable_receives()
4900 (adapter->flags & FLAG_RESTART_NOW)) { in e1000e_enable_receives()
4901 struct e1000_hw *hw = &adapter->hw; in e1000e_enable_receives()
4905 adapter->flags &= ~FLAG_RESTART_NOW; in e1000e_enable_receives()
4909 static void e1000e_check_82574_phy_workaround(struct e1000_adapter *adapter) in e1000e_check_82574_phy_workaround() argument
4911 struct e1000_hw *hw = &adapter->hw; in e1000e_check_82574_phy_workaround()
4917 adapter->phy_hang_count++; in e1000e_check_82574_phy_workaround()
4919 adapter->phy_hang_count = 0; in e1000e_check_82574_phy_workaround()
4921 if (adapter->phy_hang_count > 1) { in e1000e_check_82574_phy_workaround()
4922 adapter->phy_hang_count = 0; in e1000e_check_82574_phy_workaround()
4924 schedule_work(&adapter->reset_task); in e1000e_check_82574_phy_workaround()
4934 struct e1000_adapter *adapter = (struct e1000_adapter *)data; in e1000_watchdog() local
4937 schedule_work(&adapter->watchdog_task); in e1000_watchdog()
4944 struct e1000_adapter *adapter = container_of(work, in e1000_watchdog_task() local
4947 struct net_device *netdev = adapter->netdev; in e1000_watchdog_task()
4948 struct e1000_mac_info *mac = &adapter->hw.mac; in e1000_watchdog_task()
4949 struct e1000_phy_info *phy = &adapter->hw.phy; in e1000_watchdog_task()
4950 struct e1000_ring *tx_ring = adapter->tx_ring; in e1000_watchdog_task()
4951 struct e1000_hw *hw = &adapter->hw; in e1000_watchdog_task()
4954 if (test_bit(__E1000_DOWN, &adapter->state)) in e1000_watchdog_task()
4957 link = e1000e_has_link(adapter); in e1000_watchdog_task()
4962 e1000e_enable_receives(adapter); in e1000_watchdog_task()
4967 (adapter->mng_vlan_id != adapter->hw.mng_cookie.vlan_id)) in e1000_watchdog_task()
4968 e1000_update_mng_vlan(adapter); in e1000_watchdog_task()
4978 e1000_phy_read_status(adapter); in e1000_watchdog_task()
4979 mac->ops.get_link_up_info(&adapter->hw, in e1000_watchdog_task()
4980 &adapter->link_speed, in e1000_watchdog_task()
4981 &adapter->link_duplex); in e1000_watchdog_task()
4982 e1000_print_link_info(adapter); in e1000_watchdog_task()
4996 (adapter->link_speed == SPEED_10 || in e1000_watchdog_task()
4997 adapter->link_speed == SPEED_100) && in e1000_watchdog_task()
4998 (adapter->link_duplex == HALF_DUPLEX)) { in e1000_watchdog_task()
5008 adapter->tx_timeout_factor = 1; in e1000_watchdog_task()
5009 switch (adapter->link_speed) { in e1000_watchdog_task()
5012 adapter->tx_timeout_factor = 16; in e1000_watchdog_task()
5016 adapter->tx_timeout_factor = 10; in e1000_watchdog_task()
5023 if ((adapter->flags & FLAG_TARC_SPEED_MODE_BIT) && in e1000_watchdog_task()
5035 if (!(adapter->flags & FLAG_TSO_FORCE)) { in e1000_watchdog_task()
5036 switch (adapter->link_speed) { in e1000_watchdog_task()
5068 if (!test_bit(__E1000_DOWN, &adapter->state)) in e1000_watchdog_task()
5069 mod_timer(&adapter->phy_info_timer, in e1000_watchdog_task()
5074 adapter->link_speed = 0; in e1000_watchdog_task()
5075 adapter->link_duplex = 0; in e1000_watchdog_task()
5077 pr_info("%s NIC Link is Down\n", adapter->netdev->name); in e1000_watchdog_task()
5079 if (!test_bit(__E1000_DOWN, &adapter->state)) in e1000_watchdog_task()
5080 mod_timer(&adapter->phy_info_timer, in e1000_watchdog_task()
5087 if (adapter->flags & FLAG_RX_NEEDS_RESTART) in e1000_watchdog_task()
5088 adapter->flags |= FLAG_RESTART_NOW; in e1000_watchdog_task()
5096 spin_lock(&adapter->stats64_lock); in e1000_watchdog_task()
5097 e1000e_update_stats(adapter); in e1000_watchdog_task()
5099 mac->tx_packet_delta = adapter->stats.tpt - adapter->tpt_old; in e1000_watchdog_task()
5100 adapter->tpt_old = adapter->stats.tpt; in e1000_watchdog_task()
5101 mac->collision_delta = adapter->stats.colc - adapter->colc_old; in e1000_watchdog_task()
5102 adapter->colc_old = adapter->stats.colc; in e1000_watchdog_task()
5104 adapter->gorc = adapter->stats.gorc - adapter->gorc_old; in e1000_watchdog_task()
5105 adapter->gorc_old = adapter->stats.gorc; in e1000_watchdog_task()
5106 adapter->gotc = adapter->stats.gotc - adapter->gotc_old; in e1000_watchdog_task()
5107 adapter->gotc_old = adapter->stats.gotc; in e1000_watchdog_task()
5108 spin_unlock(&adapter->stats64_lock); in e1000_watchdog_task()
5116 adapter->flags |= FLAG_RESTART_NOW; in e1000_watchdog_task()
5119 if (adapter->flags & FLAG_RESTART_NOW) { in e1000_watchdog_task()
5120 schedule_work(&adapter->reset_task); in e1000_watchdog_task()
5125 e1000e_update_adaptive(&adapter->hw); in e1000_watchdog_task()
5128 if (adapter->itr_setting == 4) { in e1000_watchdog_task()
5133 u32 goc = (adapter->gotc + adapter->gorc) / 10000; in e1000_watchdog_task()
5134 u32 dif = (adapter->gotc > adapter->gorc ? in e1000_watchdog_task()
5135 adapter->gotc - adapter->gorc : in e1000_watchdog_task()
5136 adapter->gorc - adapter->gotc) / 10000; in e1000_watchdog_task()
5139 e1000e_write_itr(adapter, itr); in e1000_watchdog_task()
5143 if (adapter->msix_entries) in e1000_watchdog_task()
5144 ew32(ICS, adapter->rx_ring->ims_val); in e1000_watchdog_task()
5149 e1000e_flush_descriptors(adapter); in e1000_watchdog_task()
5152 adapter->detect_tx_hung = true; in e1000_watchdog_task()
5158 hw->mac.ops.rar_set(hw, adapter->hw.mac.addr, 0); in e1000_watchdog_task()
5160 if (adapter->flags2 & FLAG2_CHECK_PHY_HANG) in e1000_watchdog_task()
5161 e1000e_check_82574_phy_workaround(adapter); in e1000_watchdog_task()
5164 if (adapter->hwtstamp_config.rx_filter != HWTSTAMP_FILTER_NONE) { in e1000_watchdog_task()
5165 if ((adapter->flags2 & FLAG2_CHECK_RX_HWTSTAMP) && in e1000_watchdog_task()
5168 adapter->rx_hwtstamp_cleared++; in e1000_watchdog_task()
5170 adapter->flags2 |= FLAG2_CHECK_RX_HWTSTAMP; in e1000_watchdog_task()
5175 if (!test_bit(__E1000_DOWN, &adapter->state)) in e1000_watchdog_task()
5176 mod_timer(&adapter->watchdog_timer, in e1000_watchdog_task()
5260 struct e1000_adapter *adapter = tx_ring->adapter; in e1000_tx_csum() local
5315 struct e1000_adapter *adapter = tx_ring->adapter; in e1000_tx_map() local
5316 struct pci_dev *pdev = adapter->pdev; in e1000_tx_map()
5410 struct e1000_adapter *adapter = tx_ring->adapter; in e1000_tx_queue() local
5458 tx_desc->lower.data |= cpu_to_le32(adapter->txd_cmd); in e1000_tx_queue()
5475 static int e1000_transfer_dhcp_info(struct e1000_adapter *adapter, in e1000_transfer_dhcp_info() argument
5478 struct e1000_hw *hw = &adapter->hw; in e1000_transfer_dhcp_info()
5482 !((skb_vlan_tag_get(skb) == adapter->hw.mng_cookie.vlan_id) && in e1000_transfer_dhcp_info()
5483 (adapter->hw.mng_cookie.status & in e1000_transfer_dhcp_info()
5514 struct e1000_adapter *adapter = tx_ring->adapter; in __e1000_maybe_stop_tx() local
5516 netif_stop_queue(adapter->netdev); in __e1000_maybe_stop_tx()
5530 netif_start_queue(adapter->netdev); in __e1000_maybe_stop_tx()
5531 ++adapter->restart_queue; in __e1000_maybe_stop_tx()
5547 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_xmit_frame() local
5548 struct e1000_ring *tx_ring = adapter->tx_ring; in e1000_xmit_frame()
5559 if (test_bit(__E1000_DOWN, &adapter->state)) { in e1000_xmit_frame()
5605 count += DIV_ROUND_UP(len, adapter->tx_fifo_limit); in e1000_xmit_frame()
5610 adapter->tx_fifo_limit); in e1000_xmit_frame()
5612 if (adapter->hw.mac.tx_pkt_filtering) in e1000_xmit_frame()
5613 e1000_transfer_dhcp_info(adapter, skb); in e1000_xmit_frame()
5651 count = e1000_tx_map(tx_ring, skb, first, adapter->tx_fifo_limit, in e1000_xmit_frame()
5655 (adapter->flags & FLAG_HAS_HW_TIMESTAMP) && in e1000_xmit_frame()
5656 !adapter->tx_hwtstamp_skb) { in e1000_xmit_frame()
5659 adapter->tx_hwtstamp_skb = skb_get(skb); in e1000_xmit_frame()
5660 adapter->tx_hwtstamp_start = jiffies; in e1000_xmit_frame()
5661 schedule_work(&adapter->tx_hwtstamp_work); in e1000_xmit_frame()
5672 adapter->tx_fifo_limit) + 2)); in e1000_xmit_frame()
5676 if (adapter->flags2 & FLAG2_PCIM2PCI_ARBITER_WA) in e1000_xmit_frame()
5703 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_tx_timeout() local
5706 adapter->tx_timeout_count++; in e1000_tx_timeout()
5707 schedule_work(&adapter->reset_task); in e1000_tx_timeout()
5712 struct e1000_adapter *adapter; in e1000_reset_task() local
5713 adapter = container_of(work, struct e1000_adapter, reset_task); in e1000_reset_task()
5716 if (test_bit(__E1000_DOWN, &adapter->state)) in e1000_reset_task()
5719 if (!(adapter->flags & FLAG_RESTART_NOW)) { in e1000_reset_task()
5720 e1000e_dump(adapter); in e1000_reset_task()
5723 e1000e_reinit_locked(adapter); in e1000_reset_task()
5736 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_get_stats64() local
5739 spin_lock(&adapter->stats64_lock); in e1000e_get_stats64()
5740 e1000e_update_stats(adapter); in e1000e_get_stats64()
5742 stats->rx_bytes = adapter->stats.gorc; in e1000e_get_stats64()
5743 stats->rx_packets = adapter->stats.gprc; in e1000e_get_stats64()
5744 stats->tx_bytes = adapter->stats.gotc; in e1000e_get_stats64()
5745 stats->tx_packets = adapter->stats.gptc; in e1000e_get_stats64()
5746 stats->multicast = adapter->stats.mprc; in e1000e_get_stats64()
5747 stats->collisions = adapter->stats.colc; in e1000e_get_stats64()
5754 stats->rx_errors = adapter->stats.rxerrc + in e1000e_get_stats64()
5755 adapter->stats.crcerrs + adapter->stats.algnerrc + in e1000e_get_stats64()
5756 adapter->stats.ruc + adapter->stats.roc + adapter->stats.cexterr; in e1000e_get_stats64()
5757 stats->rx_length_errors = adapter->stats.ruc + adapter->stats.roc; in e1000e_get_stats64()
5758 stats->rx_crc_errors = adapter->stats.crcerrs; in e1000e_get_stats64()
5759 stats->rx_frame_errors = adapter->stats.algnerrc; in e1000e_get_stats64()
5760 stats->rx_missed_errors = adapter->stats.mpc; in e1000e_get_stats64()
5763 stats->tx_errors = adapter->stats.ecol + adapter->stats.latecol; in e1000e_get_stats64()
5764 stats->tx_aborted_errors = adapter->stats.ecol; in e1000e_get_stats64()
5765 stats->tx_window_errors = adapter->stats.latecol; in e1000e_get_stats64()
5766 stats->tx_carrier_errors = adapter->stats.tncrs; in e1000e_get_stats64()
5770 spin_unlock(&adapter->stats64_lock); in e1000e_get_stats64()
5783 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_change_mtu() local
5788 !(adapter->flags & FLAG_HAS_JUMBO_FRAMES)) { in e1000_change_mtu()
5795 (max_frame > adapter->max_hw_frame_size)) { in e1000_change_mtu()
5801 if ((adapter->hw.mac.type >= e1000_pch2lan) && in e1000_change_mtu()
5802 !(adapter->flags2 & FLAG2_CRC_STRIPPING) && in e1000_change_mtu()
5808 while (test_and_set_bit(__E1000_RESETTING, &adapter->state)) in e1000_change_mtu()
5811 adapter->max_frame_size = max_frame; in e1000_change_mtu()
5818 e1000e_down(adapter, true); in e1000_change_mtu()
5829 adapter->rx_buffer_len = 2048; in e1000_change_mtu()
5831 adapter->rx_buffer_len = 4096; in e1000_change_mtu()
5835 adapter->rx_buffer_len = VLAN_ETH_FRAME_LEN + ETH_FCS_LEN; in e1000_change_mtu()
5838 e1000e_up(adapter); in e1000_change_mtu()
5840 e1000e_reset(adapter); in e1000_change_mtu()
5844 clear_bit(__E1000_RESETTING, &adapter->state); in e1000_change_mtu()
5852 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_mii_ioctl() local
5855 if (adapter->hw.phy.media_type != e1000_media_type_copper) in e1000_mii_ioctl()
5860 data->phy_id = adapter->hw.phy.addr; in e1000_mii_ioctl()
5863 e1000_phy_read_status(adapter); in e1000_mii_ioctl()
5867 data->val_out = adapter->phy_regs.bmcr; in e1000_mii_ioctl()
5870 data->val_out = adapter->phy_regs.bmsr; in e1000_mii_ioctl()
5873 data->val_out = (adapter->hw.phy.id >> 16); in e1000_mii_ioctl()
5876 data->val_out = (adapter->hw.phy.id & 0xFFFF); in e1000_mii_ioctl()
5879 data->val_out = adapter->phy_regs.advertise; in e1000_mii_ioctl()
5882 data->val_out = adapter->phy_regs.lpa; in e1000_mii_ioctl()
5885 data->val_out = adapter->phy_regs.expansion; in e1000_mii_ioctl()
5888 data->val_out = adapter->phy_regs.ctrl1000; in e1000_mii_ioctl()
5891 data->val_out = adapter->phy_regs.stat1000; in e1000_mii_ioctl()
5894 data->val_out = adapter->phy_regs.estatus; in e1000_mii_ioctl()
5925 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_hwtstamp_set() local
5932 ret_val = e1000e_config_hwtstamp(adapter, &config); in e1000e_hwtstamp_set()
5960 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_hwtstamp_get() local
5962 return copy_to_user(ifr->ifr_data, &adapter->hwtstamp_config, in e1000e_hwtstamp_get()
5963 sizeof(adapter->hwtstamp_config)) ? -EFAULT : 0; in e1000e_hwtstamp_get()
5982 static int e1000_init_phy_wakeup(struct e1000_adapter *adapter, u32 wufc) in e1000_init_phy_wakeup() argument
5984 struct e1000_hw *hw = &adapter->hw; in e1000_init_phy_wakeup()
6004 for (i = 0; i < adapter->hw.mac.mta_reg_count; i++) { in e1000_init_phy_wakeup()
6013 hw->phy.ops.read_reg_page(&adapter->hw, BM_RCTL, &phy_reg); in e1000_init_phy_wakeup()
6030 hw->phy.ops.write_reg_page(&adapter->hw, BM_RCTL, phy_reg); in e1000_init_phy_wakeup()
6042 hw->phy.ops.write_reg_page(&adapter->hw, BM_WUFC, wufc); in e1000_init_phy_wakeup()
6043 hw->phy.ops.write_reg_page(&adapter->hw, BM_WUC, wuc); in e1000_init_phy_wakeup()
6059 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_flush_lpic() local
6060 struct e1000_hw *hw = &adapter->hw; in e1000e_flush_lpic()
6081 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_pm_freeze() local
6088 while (test_bit(__E1000_RESETTING, &adapter->state) && count--) in e1000e_pm_freeze()
6091 WARN_ON(test_bit(__E1000_RESETTING, &adapter->state)); in e1000e_pm_freeze()
6094 e1000e_down(adapter, false); in e1000e_pm_freeze()
6095 e1000_free_irq(adapter); in e1000e_pm_freeze()
6097 e1000e_reset_interrupt_capability(adapter); in e1000e_pm_freeze()
6100 e1000e_disable_pcie_master(&adapter->hw); in e1000e_pm_freeze()
6108 struct e1000_adapter *adapter = netdev_priv(netdev); in __e1000_shutdown() local
6109 struct e1000_hw *hw = &adapter->hw; in __e1000_shutdown()
6112 u32 wufc = runtime ? E1000_WUFC_LNKC : adapter->wol; in __e1000_shutdown()
6120 e1000_setup_rctl(adapter); in __e1000_shutdown()
6132 if (!(adapter->flags2 & FLAG2_HAS_PHY_WAKEUP)) in __e1000_shutdown()
6136 if (adapter->hw.phy.media_type == e1000_media_type_fiber || in __e1000_shutdown()
6137 adapter->hw.phy.media_type == in __e1000_shutdown()
6146 e1000e_power_up_phy(adapter); in __e1000_shutdown()
6148 if (adapter->flags & FLAG_IS_ICH) in __e1000_shutdown()
6149 e1000_suspend_workarounds_ich8lan(&adapter->hw); in __e1000_shutdown()
6151 if (adapter->flags2 & FLAG2_HAS_PHY_WAKEUP) { in __e1000_shutdown()
6153 retval = e1000_init_phy_wakeup(adapter, wufc); in __e1000_shutdown()
6165 e1000_power_down_phy(adapter); in __e1000_shutdown()
6168 if (adapter->hw.phy.type == e1000_phy_igp_3) { in __e1000_shutdown()
6169 e1000e_igp3_phy_powerdown_workaround_ich8lan(&adapter->hw); in __e1000_shutdown()
6186 e1000e_release_hw_control(adapter); in __e1000_shutdown()
6199 if (adapter->flags & FLAG_IS_QUAD_PORT) { in __e1000_shutdown()
6292 struct e1000_adapter *adapter = netdev_priv(netdev); in __e1000_resume() local
6293 struct e1000_hw *hw = &adapter->hw; in __e1000_resume()
6296 if (adapter->flags2 & FLAG2_DISABLE_ASPM_L0S) in __e1000_resume()
6298 if (adapter->flags2 & FLAG2_DISABLE_ASPM_L1) in __e1000_resume()
6306 e1000_resume_workarounds_pchlan(&adapter->hw); in __e1000_resume()
6308 e1000e_power_up_phy(adapter); in __e1000_resume()
6311 if (adapter->flags2 & FLAG2_HAS_PHY_WAKEUP) { in __e1000_resume()
6314 e1e_rphy(&adapter->hw, BM_WUS, &phy_data); in __e1000_resume()
6324 e1e_wphy(&adapter->hw, BM_WUS, ~0); in __e1000_resume()
6340 e1000e_reset(adapter); in __e1000_resume()
6342 e1000_init_manageability_pt(adapter); in __e1000_resume()
6348 if (!(adapter->flags & FLAG_HAS_AMT)) in __e1000_resume()
6349 e1000e_get_hw_control(adapter); in __e1000_resume()
6358 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_pm_thaw() local
6360 e1000e_set_interrupt_capability(adapter); in e1000e_pm_thaw()
6362 u32 err = e1000_request_irq(adapter); in e1000e_pm_thaw()
6367 e1000e_up(adapter); in e1000e_pm_thaw()
6403 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_pm_runtime_idle() local
6406 eee_lp = adapter->hw.dev_spec.ich8lan.eee_lp_ability; in e1000e_pm_runtime_idle()
6408 if (!e1000e_has_link(adapter)) { in e1000e_pm_runtime_idle()
6409 adapter->hw.dev_spec.ich8lan.eee_lp_ability = eee_lp; in e1000e_pm_runtime_idle()
6420 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_pm_runtime_resume() local
6428 rc = e1000e_up(adapter); in e1000e_pm_runtime_resume()
6437 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000e_pm_runtime_suspend() local
6442 while (test_bit(__E1000_RESETTING, &adapter->state) && count--) in e1000e_pm_runtime_suspend()
6445 WARN_ON(test_bit(__E1000_RESETTING, &adapter->state)); in e1000e_pm_runtime_suspend()
6448 e1000e_down(adapter, false); in e1000e_pm_runtime_suspend()
6474 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_intr_msix() local
6476 if (adapter->msix_entries) { in e1000_intr_msix()
6480 msix_irq = adapter->msix_entries[vector].vector; in e1000_intr_msix()
6486 msix_irq = adapter->msix_entries[vector].vector; in e1000_intr_msix()
6492 msix_irq = adapter->msix_entries[vector].vector; in e1000_intr_msix()
6511 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_netpoll() local
6513 switch (adapter->int_mode) { in e1000_netpoll()
6515 e1000_intr_msix(adapter->pdev->irq, netdev); in e1000_netpoll()
6518 disable_irq(adapter->pdev->irq); in e1000_netpoll()
6519 e1000_intr_msi(adapter->pdev->irq, netdev); in e1000_netpoll()
6520 enable_irq(adapter->pdev->irq); in e1000_netpoll()
6523 disable_irq(adapter->pdev->irq); in e1000_netpoll()
6524 e1000_intr(adapter->pdev->irq, netdev); in e1000_netpoll()
6525 enable_irq(adapter->pdev->irq); in e1000_netpoll()
6543 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_io_error_detected() local
6551 e1000e_down(adapter, true); in e1000_io_error_detected()
6568 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_io_slot_reset() local
6569 struct e1000_hw *hw = &adapter->hw; in e1000_io_slot_reset()
6574 if (adapter->flags2 & FLAG2_DISABLE_ASPM_L0S) in e1000_io_slot_reset()
6576 if (adapter->flags2 & FLAG2_DISABLE_ASPM_L1) in e1000_io_slot_reset()
6594 e1000e_reset(adapter); in e1000_io_slot_reset()
6615 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_io_resume() local
6617 e1000_init_manageability_pt(adapter); in e1000_io_resume()
6620 if (e1000e_up(adapter)) { in e1000_io_resume()
6633 if (!(adapter->flags & FLAG_HAS_AMT)) in e1000_io_resume()
6634 e1000e_get_hw_control(adapter); in e1000_io_resume()
6637 static void e1000_print_device_info(struct e1000_adapter *adapter) in e1000_print_device_info() argument
6639 struct e1000_hw *hw = &adapter->hw; in e1000_print_device_info()
6640 struct net_device *netdev = adapter->netdev; in e1000_print_device_info()
6661 static void e1000_eeprom_checks(struct e1000_adapter *adapter) in e1000_eeprom_checks() argument
6663 struct e1000_hw *hw = &adapter->hw; in e1000_eeprom_checks()
6674 dev_warn(&adapter->pdev->dev, in e1000_eeprom_checks()
6682 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_set_features() local
6686 adapter->flags |= FLAG_TSO_FORCE; in e1000_set_features()
6695 adapter->flags2 &= ~FLAG2_CRC_STRIPPING; in e1000_set_features()
6700 if (adapter->flags2 & FLAG2_DFLT_CRC_STRIPPING) in e1000_set_features()
6701 adapter->flags2 |= FLAG2_CRC_STRIPPING; in e1000_set_features()
6703 adapter->flags2 &= ~FLAG2_CRC_STRIPPING; in e1000_set_features()
6710 e1000e_reinit_locked(adapter); in e1000_set_features()
6712 e1000e_reset(adapter); in e1000_set_features()
6751 struct e1000_adapter *adapter; in e1000_probe() local
6812 adapter = netdev_priv(netdev); in e1000_probe()
6813 hw = &adapter->hw; in e1000_probe()
6814 adapter->netdev = netdev; in e1000_probe()
6815 adapter->pdev = pdev; in e1000_probe()
6816 adapter->ei = ei; in e1000_probe()
6817 adapter->pba = ei->pba; in e1000_probe()
6818 adapter->flags = ei->flags; in e1000_probe()
6819 adapter->flags2 = ei->flags2; in e1000_probe()
6820 adapter->hw.adapter = adapter; in e1000_probe()
6821 adapter->hw.mac.type = ei->mac; in e1000_probe()
6822 adapter->max_hw_frame_size = ei->max_hw_frame_size; in e1000_probe()
6823 adapter->msg_enable = netif_msg_init(debug, DEFAULT_MSG_ENABLE); in e1000_probe()
6829 adapter->hw.hw_addr = ioremap(mmio_start, mmio_len); in e1000_probe()
6830 if (!adapter->hw.hw_addr) in e1000_probe()
6833 if ((adapter->flags & FLAG_HAS_FLASH) && in e1000_probe()
6838 adapter->hw.flash_address = ioremap(flash_start, flash_len); in e1000_probe()
6839 if (!adapter->hw.flash_address) in e1000_probe()
6844 if (adapter->flags2 & FLAG2_HAS_EEE) in e1000_probe()
6845 adapter->eee_advert = MDIO_EEE_100TX | MDIO_EEE_1000T; in e1000_probe()
6851 netif_napi_add(netdev, &adapter->napi, e1000e_poll, 64); in e1000_probe()
6857 adapter->bd_number = cards_found++; in e1000_probe()
6859 e1000e_check_options(adapter); in e1000_probe()
6862 err = e1000_sw_init(adapter); in e1000_probe()
6870 err = ei->get_variants(adapter); in e1000_probe()
6874 if ((adapter->flags & FLAG_IS_ICH) && in e1000_probe()
6875 (adapter->flags & FLAG_READ_ONLY_NVM) && in e1000_probe()
6877 e1000e_write_protect_nvm_ich8lan(&adapter->hw); in e1000_probe()
6879 hw->mac.ops.get_bus_info(&adapter->hw); in e1000_probe()
6881 adapter->hw.phy.autoneg_wait_to_complete = 0; in e1000_probe()
6884 if (adapter->hw.phy.media_type == e1000_media_type_copper) { in e1000_probe()
6885 adapter->hw.phy.mdix = AUTO_ALL_MODES; in e1000_probe()
6886 adapter->hw.phy.disable_polarity_correction = 0; in e1000_probe()
6887 adapter->hw.phy.ms_type = e1000_ms_hw_default; in e1000_probe()
6910 if (adapter->flags & FLAG_HAS_HW_VLAN_FILTER) in e1000_probe()
6925 if (e1000e_enable_mng_pass_thru(&adapter->hw)) in e1000_probe()
6926 adapter->flags |= FLAG_MNG_PT_ENABLED; in e1000_probe()
6931 adapter->hw.mac.ops.reset_hw(&adapter->hw); in e1000_probe()
6937 if (e1000_validate_nvm_checksum(&adapter->hw) >= 0) in e1000_probe()
6946 e1000_eeprom_checks(adapter); in e1000_probe()
6949 if (e1000e_read_mac_addr(&adapter->hw)) in e1000_probe()
6953 memcpy(netdev->dev_addr, adapter->hw.mac.addr, netdev->addr_len); in e1000_probe()
6962 init_timer(&adapter->watchdog_timer); in e1000_probe()
6963 adapter->watchdog_timer.function = e1000_watchdog; in e1000_probe()
6964 adapter->watchdog_timer.data = (unsigned long)adapter; in e1000_probe()
6966 init_timer(&adapter->phy_info_timer); in e1000_probe()
6967 adapter->phy_info_timer.function = e1000_update_phy_info; in e1000_probe()
6968 adapter->phy_info_timer.data = (unsigned long)adapter; in e1000_probe()
6970 INIT_WORK(&adapter->reset_task, e1000_reset_task); in e1000_probe()
6971 INIT_WORK(&adapter->watchdog_task, e1000_watchdog_task); in e1000_probe()
6972 INIT_WORK(&adapter->downshift_task, e1000e_downshift_workaround); in e1000_probe()
6973 INIT_WORK(&adapter->update_phy_task, e1000e_update_phy_task); in e1000_probe()
6974 INIT_WORK(&adapter->print_hang_task, e1000_print_hw_hang); in e1000_probe()
6977 adapter->hw.mac.autoneg = 1; in e1000_probe()
6978 adapter->fc_autoneg = true; in e1000_probe()
6979 adapter->hw.fc.requested_mode = e1000_fc_default; in e1000_probe()
6980 adapter->hw.fc.current_mode = e1000_fc_default; in e1000_probe()
6981 adapter->hw.phy.autoneg_advertised = 0x2f; in e1000_probe()
6986 if (adapter->flags & FLAG_APME_IN_WUC) { in e1000_probe()
6992 adapter->flags2 |= FLAG2_HAS_PHY_WAKEUP; in e1000_probe()
6993 } else if (adapter->flags & FLAG_APME_IN_CTRL3) { in e1000_probe()
6994 if (adapter->flags & FLAG_APME_CHECK_PORT_B && in e1000_probe()
6995 (adapter->hw.bus.func == 1)) in e1000_probe()
6996 rval = e1000_read_nvm(&adapter->hw, in e1000_probe()
7000 rval = e1000_read_nvm(&adapter->hw, in e1000_probe()
7009 adapter->eeprom_wol |= E1000_WUFC_MAG; in e1000_probe()
7015 if (!(adapter->flags & FLAG_HAS_WOL)) in e1000_probe()
7016 adapter->eeprom_wol = 0; in e1000_probe()
7019 adapter->wol = adapter->eeprom_wol; in e1000_probe()
7022 if (adapter->wol || (adapter->flags & FLAG_MNG_PT_ENABLED) || in e1000_probe()
7027 rval = e1000_read_nvm(&adapter->hw, 5, 1, &adapter->eeprom_vers); in e1000_probe()
7031 adapter->eeprom_vers = 0; in e1000_probe()
7035 e1000e_reset(adapter); in e1000_probe()
7041 if (!(adapter->flags & FLAG_HAS_AMT)) in e1000_probe()
7042 e1000e_get_hw_control(adapter); in e1000_probe()
7053 e1000e_ptp_init(adapter); in e1000_probe()
7055 e1000_print_device_info(adapter); in e1000_probe()
7063 if (!(adapter->flags & FLAG_HAS_AMT)) in e1000_probe()
7064 e1000e_release_hw_control(adapter); in e1000_probe()
7067 e1000_phy_hw_reset(&adapter->hw); in e1000_probe()
7069 kfree(adapter->tx_ring); in e1000_probe()
7070 kfree(adapter->rx_ring); in e1000_probe()
7072 if ((adapter->hw.flash_address) && (hw->mac.type < e1000_pch_spt)) in e1000_probe()
7073 iounmap(adapter->hw.flash_address); in e1000_probe()
7074 e1000e_reset_interrupt_capability(adapter); in e1000_probe()
7076 iounmap(adapter->hw.hw_addr); in e1000_probe()
7100 struct e1000_adapter *adapter = netdev_priv(netdev); in e1000_remove() local
7101 bool down = test_bit(__E1000_DOWN, &adapter->state); in e1000_remove()
7103 e1000e_ptp_remove(adapter); in e1000_remove()
7109 set_bit(__E1000_DOWN, &adapter->state); in e1000_remove()
7110 del_timer_sync(&adapter->watchdog_timer); in e1000_remove()
7111 del_timer_sync(&adapter->phy_info_timer); in e1000_remove()
7113 cancel_work_sync(&adapter->reset_task); in e1000_remove()
7114 cancel_work_sync(&adapter->watchdog_task); in e1000_remove()
7115 cancel_work_sync(&adapter->downshift_task); in e1000_remove()
7116 cancel_work_sync(&adapter->update_phy_task); in e1000_remove()
7117 cancel_work_sync(&adapter->print_hang_task); in e1000_remove()
7119 if (adapter->flags & FLAG_HAS_HW_TIMESTAMP) { in e1000_remove()
7120 cancel_work_sync(&adapter->tx_hwtstamp_work); in e1000_remove()
7121 if (adapter->tx_hwtstamp_skb) { in e1000_remove()
7122 dev_kfree_skb_any(adapter->tx_hwtstamp_skb); in e1000_remove()
7123 adapter->tx_hwtstamp_skb = NULL; in e1000_remove()
7129 clear_bit(__E1000_DOWN, &adapter->state); in e1000_remove()
7138 e1000e_release_hw_control(adapter); in e1000_remove()
7140 e1000e_reset_interrupt_capability(adapter); in e1000_remove()
7141 kfree(adapter->tx_ring); in e1000_remove()
7142 kfree(adapter->rx_ring); in e1000_remove()
7144 iounmap(adapter->hw.hw_addr); in e1000_remove()
7145 if ((adapter->hw.flash_address) && in e1000_remove()
7146 (adapter->hw.mac.type < e1000_pch_spt)) in e1000_remove()
7147 iounmap(adapter->hw.flash_address); in e1000_remove()