aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/intel/e1000e/netdev.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ethernet/intel/e1000e/netdev.c')
-rw-r--r--drivers/net/ethernet/intel/e1000e/netdev.c80
1 files changed, 36 insertions, 44 deletions
diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
index a177b8b65c44..e8192d3f7eb4 100644
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@ -850,8 +850,8 @@ check_page:
850 850
851 if (!buffer_info->dma) 851 if (!buffer_info->dma)
852 buffer_info->dma = dma_map_page(&pdev->dev, 852 buffer_info->dma = dma_map_page(&pdev->dev,
853 buffer_info->page, 0, 853 buffer_info->page, 0,
854 PAGE_SIZE, 854 PAGE_SIZE,
855 DMA_FROM_DEVICE); 855 DMA_FROM_DEVICE);
856 856
857 rx_desc = E1000_RX_DESC_EXT(*rx_ring, i); 857 rx_desc = E1000_RX_DESC_EXT(*rx_ring, i);
@@ -1068,8 +1068,8 @@ static void e1000_put_txbuf(struct e1000_ring *tx_ring,
1068static void e1000_print_hw_hang(struct work_struct *work) 1068static void e1000_print_hw_hang(struct work_struct *work)
1069{ 1069{
1070 struct e1000_adapter *adapter = container_of(work, 1070 struct e1000_adapter *adapter = container_of(work,
1071 struct e1000_adapter, 1071 struct e1000_adapter,
1072 print_hang_task); 1072 print_hang_task);
1073 struct net_device *netdev = adapter->netdev; 1073 struct net_device *netdev = adapter->netdev;
1074 struct e1000_ring *tx_ring = adapter->tx_ring; 1074 struct e1000_ring *tx_ring = adapter->tx_ring;
1075 unsigned int i = tx_ring->next_to_clean; 1075 unsigned int i = tx_ring->next_to_clean;
@@ -1549,7 +1549,7 @@ static bool e1000_clean_jumbo_rx_irq(struct e1000_ring *rx_ring, int *work_done,
1549 /* this is the beginning of a chain */ 1549 /* this is the beginning of a chain */
1550 rxtop = skb; 1550 rxtop = skb;
1551 skb_fill_page_desc(rxtop, 0, buffer_info->page, 1551 skb_fill_page_desc(rxtop, 0, buffer_info->page,
1552 0, length); 1552 0, length);
1553 } else { 1553 } else {
1554 /* this is the middle of a chain */ 1554 /* this is the middle of a chain */
1555 skb_fill_page_desc(rxtop, 1555 skb_fill_page_desc(rxtop,
@@ -1590,10 +1590,10 @@ static bool e1000_clean_jumbo_rx_irq(struct e1000_ring *rx_ring, int *work_done,
1590 skb_put(skb, length); 1590 skb_put(skb, length);
1591 } else { 1591 } else {
1592 skb_fill_page_desc(skb, 0, 1592 skb_fill_page_desc(skb, 0,
1593 buffer_info->page, 0, 1593 buffer_info->page, 0,
1594 length); 1594 length);
1595 e1000_consume_page(buffer_info, skb, 1595 e1000_consume_page(buffer_info, skb,
1596 length); 1596 length);
1597 } 1597 }
1598 } 1598 }
1599 } 1599 }
@@ -1666,8 +1666,7 @@ static void e1000_clean_rx_ring(struct e1000_ring *rx_ring)
1666 DMA_FROM_DEVICE); 1666 DMA_FROM_DEVICE);
1667 else if (adapter->clean_rx == e1000_clean_jumbo_rx_irq) 1667 else if (adapter->clean_rx == e1000_clean_jumbo_rx_irq)
1668 dma_unmap_page(&pdev->dev, buffer_info->dma, 1668 dma_unmap_page(&pdev->dev, buffer_info->dma,
1669 PAGE_SIZE, 1669 PAGE_SIZE, DMA_FROM_DEVICE);
1670 DMA_FROM_DEVICE);
1671 else if (adapter->clean_rx == e1000_clean_rx_irq_ps) 1670 else if (adapter->clean_rx == e1000_clean_rx_irq_ps)
1672 dma_unmap_single(&pdev->dev, buffer_info->dma, 1671 dma_unmap_single(&pdev->dev, buffer_info->dma,
1673 adapter->rx_ps_bsize0, 1672 adapter->rx_ps_bsize0,
@@ -2578,8 +2577,7 @@ set_itr_now:
2578 * increasing 2577 * increasing
2579 */ 2578 */
2580 new_itr = new_itr > adapter->itr ? 2579 new_itr = new_itr > adapter->itr ?
2581 min(adapter->itr + (new_itr >> 2), new_itr) : 2580 min(adapter->itr + (new_itr >> 2), new_itr) : new_itr;
2582 new_itr;
2583 adapter->itr = new_itr; 2581 adapter->itr = new_itr;
2584 adapter->rx_ring->itr_val = new_itr; 2582 adapter->rx_ring->itr_val = new_itr;
2585 if (adapter->msix_entries) 2583 if (adapter->msix_entries)
@@ -2827,7 +2825,7 @@ static void e1000_restore_vlan(struct e1000_adapter *adapter)
2827 e1000_vlan_rx_add_vid(adapter->netdev, 0); 2825 e1000_vlan_rx_add_vid(adapter->netdev, 0);
2828 2826
2829 for_each_set_bit(vid, adapter->active_vlans, VLAN_N_VID) 2827 for_each_set_bit(vid, adapter->active_vlans, VLAN_N_VID)
2830 e1000_vlan_rx_add_vid(adapter->netdev, vid); 2828 e1000_vlan_rx_add_vid(adapter->netdev, vid);
2831} 2829}
2832 2830
2833static void e1000_init_manageability_pt(struct e1000_adapter *adapter) 2831static void e1000_init_manageability_pt(struct e1000_adapter *adapter)
@@ -3002,8 +3000,8 @@ static void e1000_setup_rctl(struct e1000_adapter *adapter)
3002 rctl = er32(RCTL); 3000 rctl = er32(RCTL);
3003 rctl &= ~(3 << E1000_RCTL_MO_SHIFT); 3001 rctl &= ~(3 << E1000_RCTL_MO_SHIFT);
3004 rctl |= E1000_RCTL_EN | E1000_RCTL_BAM | 3002 rctl |= E1000_RCTL_EN | E1000_RCTL_BAM |
3005 E1000_RCTL_LBM_NO | E1000_RCTL_RDMTS_HALF | 3003 E1000_RCTL_LBM_NO | E1000_RCTL_RDMTS_HALF |
3006 (adapter->hw.mac.mc_filter_type << E1000_RCTL_MO_SHIFT); 3004 (adapter->hw.mac.mc_filter_type << E1000_RCTL_MO_SHIFT);
3007 3005
3008 /* Do not Store bad packets */ 3006 /* Do not Store bad packets */
3009 rctl &= ~E1000_RCTL_SBP; 3007 rctl &= ~E1000_RCTL_SBP;
@@ -3275,7 +3273,7 @@ static int e1000e_write_mc_addr_list(struct net_device *netdev)
3275 /* update_mc_addr_list expects a packed array of only addresses. */ 3273 /* update_mc_addr_list expects a packed array of only addresses. */
3276 i = 0; 3274 i = 0;
3277 netdev_for_each_mc_addr(ha, netdev) 3275 netdev_for_each_mc_addr(ha, netdev)
3278 memcpy(mta_list + (i++ * ETH_ALEN), ha->addr, ETH_ALEN); 3276 memcpy(mta_list + (i++ * ETH_ALEN), ha->addr, ETH_ALEN);
3279 3277
3280 hw->mac.ops.update_mc_addr_list(hw, mta_list, i); 3278 hw->mac.ops.update_mc_addr_list(hw, mta_list, i);
3281 kfree(mta_list); 3279 kfree(mta_list);
@@ -4615,18 +4613,16 @@ static void e1000e_update_stats(struct e1000_adapter *adapter)
4615 * our own version based on RUC and ROC 4613 * our own version based on RUC and ROC
4616 */ 4614 */
4617 netdev->stats.rx_errors = adapter->stats.rxerrc + 4615 netdev->stats.rx_errors = adapter->stats.rxerrc +
4618 adapter->stats.crcerrs + adapter->stats.algnerrc + 4616 adapter->stats.crcerrs + adapter->stats.algnerrc +
4619 adapter->stats.ruc + adapter->stats.roc + 4617 adapter->stats.ruc + adapter->stats.roc + adapter->stats.cexterr;
4620 adapter->stats.cexterr;
4621 netdev->stats.rx_length_errors = adapter->stats.ruc + 4618 netdev->stats.rx_length_errors = adapter->stats.ruc +
4622 adapter->stats.roc; 4619 adapter->stats.roc;
4623 netdev->stats.rx_crc_errors = adapter->stats.crcerrs; 4620 netdev->stats.rx_crc_errors = adapter->stats.crcerrs;
4624 netdev->stats.rx_frame_errors = adapter->stats.algnerrc; 4621 netdev->stats.rx_frame_errors = adapter->stats.algnerrc;
4625 netdev->stats.rx_missed_errors = adapter->stats.mpc; 4622 netdev->stats.rx_missed_errors = adapter->stats.mpc;
4626 4623
4627 /* Tx Errors */ 4624 /* Tx Errors */
4628 netdev->stats.tx_errors = adapter->stats.ecol + 4625 netdev->stats.tx_errors = adapter->stats.ecol + adapter->stats.latecol;
4629 adapter->stats.latecol;
4630 netdev->stats.tx_aborted_errors = adapter->stats.ecol; 4626 netdev->stats.tx_aborted_errors = adapter->stats.ecol;
4631 netdev->stats.tx_window_errors = adapter->stats.latecol; 4627 netdev->stats.tx_window_errors = adapter->stats.latecol;
4632 netdev->stats.tx_carrier_errors = adapter->stats.tncrs; 4628 netdev->stats.tx_carrier_errors = adapter->stats.tncrs;
@@ -5056,14 +5052,14 @@ static int e1000_tso(struct e1000_ring *tx_ring, struct sk_buff *skb)
5056 iph->tot_len = 0; 5052 iph->tot_len = 0;
5057 iph->check = 0; 5053 iph->check = 0;
5058 tcp_hdr(skb)->check = ~csum_tcpudp_magic(iph->saddr, iph->daddr, 5054 tcp_hdr(skb)->check = ~csum_tcpudp_magic(iph->saddr, iph->daddr,
5059 0, IPPROTO_TCP, 0); 5055 0, IPPROTO_TCP, 0);
5060 cmd_length = E1000_TXD_CMD_IP; 5056 cmd_length = E1000_TXD_CMD_IP;
5061 ipcse = skb_transport_offset(skb) - 1; 5057 ipcse = skb_transport_offset(skb) - 1;
5062 } else if (skb_is_gso_v6(skb)) { 5058 } else if (skb_is_gso_v6(skb)) {
5063 ipv6_hdr(skb)->payload_len = 0; 5059 ipv6_hdr(skb)->payload_len = 0;
5064 tcp_hdr(skb)->check = ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr, 5060 tcp_hdr(skb)->check = ~csum_ipv6_magic(&ipv6_hdr(skb)->saddr,
5065 &ipv6_hdr(skb)->daddr, 5061 &ipv6_hdr(skb)->daddr,
5066 0, IPPROTO_TCP, 0); 5062 0, IPPROTO_TCP, 0);
5067 ipcse = 0; 5063 ipcse = 0;
5068 } 5064 }
5069 ipcss = skb_network_offset(skb); 5065 ipcss = skb_network_offset(skb);
@@ -5072,7 +5068,7 @@ static int e1000_tso(struct e1000_ring *tx_ring, struct sk_buff *skb)
5072 tucso = (void *)&(tcp_hdr(skb)->check) - (void *)skb->data; 5068 tucso = (void *)&(tcp_hdr(skb)->check) - (void *)skb->data;
5073 5069
5074 cmd_length |= (E1000_TXD_CMD_DEXT | E1000_TXD_CMD_TSE | 5070 cmd_length |= (E1000_TXD_CMD_DEXT | E1000_TXD_CMD_TSE |
5075 E1000_TXD_CMD_TCP | (skb->len - (hdr_len))); 5071 E1000_TXD_CMD_TCP | (skb->len - (hdr_len)));
5076 5072
5077 i = tx_ring->next_to_use; 5073 i = tx_ring->next_to_use;
5078 context_desc = E1000_CONTEXT_DESC(*tx_ring, i); 5074 context_desc = E1000_CONTEXT_DESC(*tx_ring, i);
@@ -5142,8 +5138,7 @@ static bool e1000_tx_csum(struct e1000_ring *tx_ring, struct sk_buff *skb)
5142 5138
5143 context_desc->lower_setup.ip_config = 0; 5139 context_desc->lower_setup.ip_config = 0;
5144 context_desc->upper_setup.tcp_fields.tucss = css; 5140 context_desc->upper_setup.tcp_fields.tucss = css;
5145 context_desc->upper_setup.tcp_fields.tucso = 5141 context_desc->upper_setup.tcp_fields.tucso = css + skb->csum_offset;
5146 css + skb->csum_offset;
5147 context_desc->upper_setup.tcp_fields.tucse = 0; 5142 context_desc->upper_setup.tcp_fields.tucse = 0;
5148 context_desc->tcp_seg_setup.data = 0; 5143 context_desc->tcp_seg_setup.data = 0;
5149 context_desc->cmd_and_length = cpu_to_le32(cmd_len); 5144 context_desc->cmd_and_length = cpu_to_le32(cmd_len);
@@ -5265,7 +5260,7 @@ static void e1000_tx_queue(struct e1000_ring *tx_ring, int tx_flags, int count)
5265 5260
5266 if (tx_flags & E1000_TX_FLAGS_TSO) { 5261 if (tx_flags & E1000_TX_FLAGS_TSO) {
5267 txd_lower |= E1000_TXD_CMD_DEXT | E1000_TXD_DTYP_D | 5262 txd_lower |= E1000_TXD_CMD_DEXT | E1000_TXD_DTYP_D |
5268 E1000_TXD_CMD_TSE; 5263 E1000_TXD_CMD_TSE;
5269 txd_upper |= E1000_TXD_POPTS_TXSM << 8; 5264 txd_upper |= E1000_TXD_POPTS_TXSM << 8;
5270 5265
5271 if (tx_flags & E1000_TX_FLAGS_IPV4) 5266 if (tx_flags & E1000_TX_FLAGS_IPV4)
@@ -5296,8 +5291,8 @@ static void e1000_tx_queue(struct e1000_ring *tx_ring, int tx_flags, int count)
5296 buffer_info = &tx_ring->buffer_info[i]; 5291 buffer_info = &tx_ring->buffer_info[i];
5297 tx_desc = E1000_TX_DESC(*tx_ring, i); 5292 tx_desc = E1000_TX_DESC(*tx_ring, i);
5298 tx_desc->buffer_addr = cpu_to_le64(buffer_info->dma); 5293 tx_desc->buffer_addr = cpu_to_le64(buffer_info->dma);
5299 tx_desc->lower.data = 5294 tx_desc->lower.data = cpu_to_le32(txd_lower |
5300 cpu_to_le32(txd_lower | buffer_info->length); 5295 buffer_info->length);
5301 tx_desc->upper.data = cpu_to_le32(txd_upper); 5296 tx_desc->upper.data = cpu_to_le32(txd_upper);
5302 5297
5303 i++; 5298 i++;
@@ -5597,18 +5592,15 @@ struct rtnl_link_stats64 *e1000e_get_stats64(struct net_device *netdev,
5597 * our own version based on RUC and ROC 5592 * our own version based on RUC and ROC
5598 */ 5593 */
5599 stats->rx_errors = adapter->stats.rxerrc + 5594 stats->rx_errors = adapter->stats.rxerrc +
5600 adapter->stats.crcerrs + adapter->stats.algnerrc + 5595 adapter->stats.crcerrs + adapter->stats.algnerrc +
5601 adapter->stats.ruc + adapter->stats.roc + 5596 adapter->stats.ruc + adapter->stats.roc + adapter->stats.cexterr;
5602 adapter->stats.cexterr; 5597 stats->rx_length_errors = adapter->stats.ruc + adapter->stats.roc;
5603 stats->rx_length_errors = adapter->stats.ruc +
5604 adapter->stats.roc;
5605 stats->rx_crc_errors = adapter->stats.crcerrs; 5598 stats->rx_crc_errors = adapter->stats.crcerrs;
5606 stats->rx_frame_errors = adapter->stats.algnerrc; 5599 stats->rx_frame_errors = adapter->stats.algnerrc;
5607 stats->rx_missed_errors = adapter->stats.mpc; 5600 stats->rx_missed_errors = adapter->stats.mpc;
5608 5601
5609 /* Tx Errors */ 5602 /* Tx Errors */
5610 stats->tx_errors = adapter->stats.ecol + 5603 stats->tx_errors = adapter->stats.ecol + adapter->stats.latecol;
5611 adapter->stats.latecol;
5612 stats->tx_aborted_errors = adapter->stats.ecol; 5604 stats->tx_aborted_errors = adapter->stats.ecol;
5613 stats->tx_window_errors = adapter->stats.latecol; 5605 stats->tx_window_errors = adapter->stats.latecol;
5614 stats->tx_carrier_errors = adapter->stats.tncrs; 5606 stats->tx_carrier_errors = adapter->stats.tncrs;
@@ -6002,8 +5994,7 @@ static void e1000_power_off(struct pci_dev *pdev, bool sleep, bool wake)
6002 pci_set_power_state(pdev, PCI_D3hot); 5994 pci_set_power_state(pdev, PCI_D3hot);
6003} 5995}
6004 5996
6005static void e1000_complete_shutdown(struct pci_dev *pdev, bool sleep, 5997static void e1000_complete_shutdown(struct pci_dev *pdev, bool sleep, bool wake)
6006 bool wake)
6007{ 5998{
6008 struct net_device *netdev = pci_get_drvdata(pdev); 5999 struct net_device *netdev = pci_get_drvdata(pdev);
6009 struct e1000_adapter *adapter = netdev_priv(netdev); 6000 struct e1000_adapter *adapter = netdev_priv(netdev);
@@ -6413,7 +6404,7 @@ static void e1000_print_device_info(struct e1000_adapter *adapter)
6413 e_info("(PCI Express:2.5GT/s:%s) %pM\n", 6404 e_info("(PCI Express:2.5GT/s:%s) %pM\n",
6414 /* bus width */ 6405 /* bus width */
6415 ((hw->bus.width == e1000_bus_width_pcie_x4) ? "Width x4" : 6406 ((hw->bus.width == e1000_bus_width_pcie_x4) ? "Width x4" :
6416 "Width x1"), 6407 "Width x1"),
6417 /* MAC address */ 6408 /* MAC address */
6418 netdev->dev_addr); 6409 netdev->dev_addr);
6419 e_info("Intel(R) PRO/%s Network Connection\n", 6410 e_info("Intel(R) PRO/%s Network Connection\n",
@@ -6550,7 +6541,8 @@ static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
6550 err = dma_set_coherent_mask(&pdev->dev, 6541 err = dma_set_coherent_mask(&pdev->dev,
6551 DMA_BIT_MASK(32)); 6542 DMA_BIT_MASK(32));
6552 if (err) { 6543 if (err) {
6553 dev_err(&pdev->dev, "No usable DMA configuration, aborting\n"); 6544 dev_err(&pdev->dev,
6545 "No usable DMA configuration, aborting\n");
6554 goto err_dma; 6546 goto err_dma;
6555 } 6547 }
6556 } 6548 }
@@ -6835,7 +6827,7 @@ err_ioremap:
6835 free_netdev(netdev); 6827 free_netdev(netdev);
6836err_alloc_etherdev: 6828err_alloc_etherdev:
6837 pci_release_selected_regions(pdev, 6829 pci_release_selected_regions(pdev,
6838 pci_select_bars(pdev, IORESOURCE_MEM)); 6830 pci_select_bars(pdev, IORESOURCE_MEM));
6839err_pci_reg: 6831err_pci_reg:
6840err_dma: 6832err_dma:
6841 pci_disable_device(pdev); 6833 pci_disable_device(pdev);
@@ -6905,7 +6897,7 @@ static void e1000_remove(struct pci_dev *pdev)
6905 if (adapter->hw.flash_address) 6897 if (adapter->hw.flash_address)
6906 iounmap(adapter->hw.flash_address); 6898 iounmap(adapter->hw.flash_address);
6907 pci_release_selected_regions(pdev, 6899 pci_release_selected_regions(pdev,
6908 pci_select_bars(pdev, IORESOURCE_MEM)); 6900 pci_select_bars(pdev, IORESOURCE_MEM));
6909 6901
6910 free_netdev(netdev); 6902 free_netdev(netdev);
6911 6903