diff options
Diffstat (limited to 'drivers/net/ethernet/intel/e1000e/netdev.c')
-rw-r--r-- | drivers/net/ethernet/intel/e1000e/netdev.c | 51 |
1 files changed, 25 insertions, 26 deletions
diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c index a27e3bcc3249..ad5f43476924 100644 --- a/drivers/net/ethernet/intel/e1000e/netdev.c +++ b/drivers/net/ethernet/intel/e1000e/netdev.c | |||
@@ -1196,7 +1196,7 @@ static bool e1000_clean_tx_irq(struct e1000_ring *tx_ring) | |||
1196 | while ((eop_desc->upper.data & cpu_to_le32(E1000_TXD_STAT_DD)) && | 1196 | while ((eop_desc->upper.data & cpu_to_le32(E1000_TXD_STAT_DD)) && |
1197 | (count < tx_ring->count)) { | 1197 | (count < tx_ring->count)) { |
1198 | bool cleaned = false; | 1198 | bool cleaned = false; |
1199 | rmb(); /* read buffer_info after eop_desc */ | 1199 | rmb(); /* read buffer_info after eop_desc */ |
1200 | for (; !cleaned; count++) { | 1200 | for (; !cleaned; count++) { |
1201 | tx_desc = E1000_TX_DESC(*tx_ring, i); | 1201 | tx_desc = E1000_TX_DESC(*tx_ring, i); |
1202 | buffer_info = &tx_ring->buffer_info[i]; | 1202 | buffer_info = &tx_ring->buffer_info[i]; |
@@ -1385,7 +1385,7 @@ static bool e1000_clean_rx_irq_ps(struct e1000_ring *rx_ring, int *work_done, | |||
1385 | 1385 | ||
1386 | skb_put(skb, l1); | 1386 | skb_put(skb, l1); |
1387 | goto copydone; | 1387 | goto copydone; |
1388 | } /* if */ | 1388 | } /* if */ |
1389 | } | 1389 | } |
1390 | 1390 | ||
1391 | for (j = 0; j < PS_PAGE_BUFFERS; j++) { | 1391 | for (j = 0; j < PS_PAGE_BUFFERS; j++) { |
@@ -1800,7 +1800,7 @@ static irqreturn_t e1000_intr(int __always_unused irq, void *data) | |||
1800 | u32 rctl, icr = er32(ICR); | 1800 | u32 rctl, icr = er32(ICR); |
1801 | 1801 | ||
1802 | if (!icr || test_bit(__E1000_DOWN, &adapter->state)) | 1802 | if (!icr || test_bit(__E1000_DOWN, &adapter->state)) |
1803 | return IRQ_NONE; /* Not our interrupt */ | 1803 | return IRQ_NONE; /* Not our interrupt */ |
1804 | 1804 | ||
1805 | /* IMS will not auto-mask if INT_ASSERTED is not set, and if it is | 1805 | /* IMS will not auto-mask if INT_ASSERTED is not set, and if it is |
1806 | * not set, then the adapter didn't send an interrupt | 1806 | * not set, then the adapter didn't send an interrupt |
@@ -2487,7 +2487,7 @@ static unsigned int e1000_update_itr(u16 itr_setting, int packets, int bytes) | |||
2487 | else if ((packets < 5) && (bytes > 512)) | 2487 | else if ((packets < 5) && (bytes > 512)) |
2488 | retval = low_latency; | 2488 | retval = low_latency; |
2489 | break; | 2489 | break; |
2490 | case low_latency: /* 50 usec aka 20000 ints/s */ | 2490 | case low_latency: /* 50 usec aka 20000 ints/s */ |
2491 | if (bytes > 10000) { | 2491 | if (bytes > 10000) { |
2492 | /* this if handles the TSO accounting */ | 2492 | /* this if handles the TSO accounting */ |
2493 | if (bytes / packets > 8000) | 2493 | if (bytes / packets > 8000) |
@@ -2502,7 +2502,7 @@ static unsigned int e1000_update_itr(u16 itr_setting, int packets, int bytes) | |||
2502 | retval = lowest_latency; | 2502 | retval = lowest_latency; |
2503 | } | 2503 | } |
2504 | break; | 2504 | break; |
2505 | case bulk_latency: /* 250 usec aka 4000 ints/s */ | 2505 | case bulk_latency: /* 250 usec aka 4000 ints/s */ |
2506 | if (bytes > 25000) { | 2506 | if (bytes > 25000) { |
2507 | if (packets > 35) | 2507 | if (packets > 35) |
2508 | retval = low_latency; | 2508 | retval = low_latency; |
@@ -2554,7 +2554,7 @@ static void e1000_set_itr(struct e1000_adapter *adapter) | |||
2554 | new_itr = 70000; | 2554 | new_itr = 70000; |
2555 | break; | 2555 | break; |
2556 | case low_latency: | 2556 | case low_latency: |
2557 | new_itr = 20000; /* aka hwitr = ~200 */ | 2557 | new_itr = 20000; /* aka hwitr = ~200 */ |
2558 | break; | 2558 | break; |
2559 | case bulk_latency: | 2559 | case bulk_latency: |
2560 | new_itr = 4000; | 2560 | new_itr = 4000; |
@@ -3104,13 +3104,13 @@ static void e1000_setup_rctl(struct e1000_adapter *adapter) | |||
3104 | /* UPE and MPE will be handled by normal PROMISC logic | 3104 | /* UPE and MPE will be handled by normal PROMISC logic |
3105 | * in e1000e_set_rx_mode | 3105 | * in e1000e_set_rx_mode |
3106 | */ | 3106 | */ |
3107 | rctl |= (E1000_RCTL_SBP | /* Receive bad packets */ | 3107 | rctl |= (E1000_RCTL_SBP | /* Receive bad packets */ |
3108 | E1000_RCTL_BAM | /* RX All Bcast Pkts */ | 3108 | E1000_RCTL_BAM | /* RX All Bcast Pkts */ |
3109 | E1000_RCTL_PMCF); /* RX All MAC Ctrl Pkts */ | 3109 | E1000_RCTL_PMCF); /* RX All MAC Ctrl Pkts */ |
3110 | 3110 | ||
3111 | rctl &= ~(E1000_RCTL_VFE | /* Disable VLAN filter */ | 3111 | rctl &= ~(E1000_RCTL_VFE | /* Disable VLAN filter */ |
3112 | E1000_RCTL_DPF | /* Allow filtered pause */ | 3112 | E1000_RCTL_DPF | /* Allow filtered pause */ |
3113 | E1000_RCTL_CFIEN); /* Dis VLAN CFIEN Filter */ | 3113 | E1000_RCTL_CFIEN); /* Dis VLAN CFIEN Filter */ |
3114 | /* Do not mess with E1000_CTRL_VME, it affects transmit as well, | 3114 | /* Do not mess with E1000_CTRL_VME, it affects transmit as well, |
3115 | * and that breaks VLANs. | 3115 | * and that breaks VLANs. |
3116 | */ | 3116 | */ |
@@ -3799,7 +3799,7 @@ void e1000e_reset(struct e1000_adapter *adapter) | |||
3799 | hwm = min(((pba << 10) * 9 / 10), | 3799 | hwm = min(((pba << 10) * 9 / 10), |
3800 | ((pba << 10) - adapter->max_frame_size)); | 3800 | ((pba << 10) - adapter->max_frame_size)); |
3801 | 3801 | ||
3802 | fc->high_water = hwm & E1000_FCRTH_RTH; /* 8-byte granularity */ | 3802 | fc->high_water = hwm & E1000_FCRTH_RTH; /* 8-byte granularity */ |
3803 | fc->low_water = fc->high_water - 8; | 3803 | fc->low_water = fc->high_water - 8; |
3804 | break; | 3804 | break; |
3805 | case e1000_pchlan: | 3805 | case e1000_pchlan: |
@@ -3808,10 +3808,10 @@ void e1000e_reset(struct e1000_adapter *adapter) | |||
3808 | */ | 3808 | */ |
3809 | if (adapter->netdev->mtu > ETH_DATA_LEN) { | 3809 | if (adapter->netdev->mtu > ETH_DATA_LEN) { |
3810 | fc->high_water = 0x3500; | 3810 | fc->high_water = 0x3500; |
3811 | fc->low_water = 0x1500; | 3811 | fc->low_water = 0x1500; |
3812 | } else { | 3812 | } else { |
3813 | fc->high_water = 0x5000; | 3813 | fc->high_water = 0x5000; |
3814 | fc->low_water = 0x3000; | 3814 | fc->low_water = 0x3000; |
3815 | } | 3815 | } |
3816 | fc->refresh_time = 0x1000; | 3816 | fc->refresh_time = 0x1000; |
3817 | break; | 3817 | break; |
@@ -4581,7 +4581,7 @@ static void e1000e_update_stats(struct e1000_adapter *adapter) | |||
4581 | adapter->stats.crcerrs += er32(CRCERRS); | 4581 | adapter->stats.crcerrs += er32(CRCERRS); |
4582 | adapter->stats.gprc += er32(GPRC); | 4582 | adapter->stats.gprc += er32(GPRC); |
4583 | adapter->stats.gorc += er32(GORCL); | 4583 | adapter->stats.gorc += er32(GORCL); |
4584 | er32(GORCH); /* Clear gorc */ | 4584 | er32(GORCH); /* Clear gorc */ |
4585 | adapter->stats.bprc += er32(BPRC); | 4585 | adapter->stats.bprc += er32(BPRC); |
4586 | adapter->stats.mprc += er32(MPRC); | 4586 | adapter->stats.mprc += er32(MPRC); |
4587 | adapter->stats.roc += er32(ROC); | 4587 | adapter->stats.roc += er32(ROC); |
@@ -4614,7 +4614,7 @@ static void e1000e_update_stats(struct e1000_adapter *adapter) | |||
4614 | adapter->stats.xofftxc += er32(XOFFTXC); | 4614 | adapter->stats.xofftxc += er32(XOFFTXC); |
4615 | adapter->stats.gptc += er32(GPTC); | 4615 | adapter->stats.gptc += er32(GPTC); |
4616 | adapter->stats.gotc += er32(GOTCL); | 4616 | adapter->stats.gotc += er32(GOTCL); |
4617 | er32(GOTCH); /* Clear gotc */ | 4617 | er32(GOTCH); /* Clear gotc */ |
4618 | adapter->stats.rnbc += er32(RNBC); | 4618 | adapter->stats.rnbc += er32(RNBC); |
4619 | adapter->stats.ruc += er32(RUC); | 4619 | adapter->stats.ruc += er32(RUC); |
4620 | 4620 | ||
@@ -5106,13 +5106,13 @@ static int e1000_tso(struct e1000_ring *tx_ring, struct sk_buff *skb) | |||
5106 | context_desc = E1000_CONTEXT_DESC(*tx_ring, i); | 5106 | context_desc = E1000_CONTEXT_DESC(*tx_ring, i); |
5107 | buffer_info = &tx_ring->buffer_info[i]; | 5107 | buffer_info = &tx_ring->buffer_info[i]; |
5108 | 5108 | ||
5109 | context_desc->lower_setup.ip_fields.ipcss = ipcss; | 5109 | context_desc->lower_setup.ip_fields.ipcss = ipcss; |
5110 | context_desc->lower_setup.ip_fields.ipcso = ipcso; | 5110 | context_desc->lower_setup.ip_fields.ipcso = ipcso; |
5111 | context_desc->lower_setup.ip_fields.ipcse = cpu_to_le16(ipcse); | 5111 | context_desc->lower_setup.ip_fields.ipcse = cpu_to_le16(ipcse); |
5112 | context_desc->upper_setup.tcp_fields.tucss = tucss; | 5112 | context_desc->upper_setup.tcp_fields.tucss = tucss; |
5113 | context_desc->upper_setup.tcp_fields.tucso = tucso; | 5113 | context_desc->upper_setup.tcp_fields.tucso = tucso; |
5114 | context_desc->upper_setup.tcp_fields.tucse = 0; | 5114 | context_desc->upper_setup.tcp_fields.tucse = 0; |
5115 | context_desc->tcp_seg_setup.fields.mss = cpu_to_le16(mss); | 5115 | context_desc->tcp_seg_setup.fields.mss = cpu_to_le16(mss); |
5116 | context_desc->tcp_seg_setup.fields.hdr_len = hdr_len; | 5116 | context_desc->tcp_seg_setup.fields.hdr_len = hdr_len; |
5117 | context_desc->cmd_and_length = cpu_to_le32(cmd_length); | 5117 | context_desc->cmd_and_length = cpu_to_le32(cmd_length); |
5118 | 5118 | ||
@@ -5363,7 +5363,7 @@ static void e1000_tx_queue(struct e1000_ring *tx_ring, int tx_flags, int count) | |||
5363 | static int e1000_transfer_dhcp_info(struct e1000_adapter *adapter, | 5363 | static int e1000_transfer_dhcp_info(struct e1000_adapter *adapter, |
5364 | struct sk_buff *skb) | 5364 | struct sk_buff *skb) |
5365 | { | 5365 | { |
5366 | struct e1000_hw *hw = &adapter->hw; | 5366 | struct e1000_hw *hw = &adapter->hw; |
5367 | u16 length, offset; | 5367 | u16 length, offset; |
5368 | 5368 | ||
5369 | if (vlan_tx_tag_present(skb) && | 5369 | if (vlan_tx_tag_present(skb) && |
@@ -6259,7 +6259,7 @@ static void e1000_netpoll(struct net_device *netdev) | |||
6259 | e1000_intr_msi(adapter->pdev->irq, netdev); | 6259 | e1000_intr_msi(adapter->pdev->irq, netdev); |
6260 | enable_irq(adapter->pdev->irq); | 6260 | enable_irq(adapter->pdev->irq); |
6261 | break; | 6261 | break; |
6262 | default: /* E1000E_INT_MODE_LEGACY */ | 6262 | default: /* E1000E_INT_MODE_LEGACY */ |
6263 | disable_irq(adapter->pdev->irq); | 6263 | disable_irq(adapter->pdev->irq); |
6264 | e1000_intr(adapter->pdev->irq, netdev); | 6264 | e1000_intr(adapter->pdev->irq, netdev); |
6265 | enable_irq(adapter->pdev->irq); | 6265 | enable_irq(adapter->pdev->irq); |
@@ -6589,9 +6589,9 @@ static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
6589 | adapter->eee_advert = MDIO_EEE_100TX | MDIO_EEE_1000T; | 6589 | adapter->eee_advert = MDIO_EEE_100TX | MDIO_EEE_1000T; |
6590 | 6590 | ||
6591 | /* construct the net_device struct */ | 6591 | /* construct the net_device struct */ |
6592 | netdev->netdev_ops = &e1000e_netdev_ops; | 6592 | netdev->netdev_ops = &e1000e_netdev_ops; |
6593 | e1000e_set_ethtool_ops(netdev); | 6593 | e1000e_set_ethtool_ops(netdev); |
6594 | netdev->watchdog_timeo = 5 * HZ; | 6594 | netdev->watchdog_timeo = 5 * HZ; |
6595 | netif_napi_add(netdev, &adapter->napi, e1000e_poll, 64); | 6595 | netif_napi_add(netdev, &adapter->napi, e1000e_poll, 64); |
6596 | strlcpy(netdev->name, pci_name(pdev), sizeof(netdev->name)); | 6596 | strlcpy(netdev->name, pci_name(pdev), sizeof(netdev->name)); |
6597 | 6597 | ||
@@ -7034,7 +7034,6 @@ static void __exit e1000_exit_module(void) | |||
7034 | } | 7034 | } |
7035 | module_exit(e1000_exit_module); | 7035 | module_exit(e1000_exit_module); |
7036 | 7036 | ||
7037 | |||
7038 | MODULE_AUTHOR("Intel Corporation, <linux.nics@intel.com>"); | 7037 | MODULE_AUTHOR("Intel Corporation, <linux.nics@intel.com>"); |
7039 | MODULE_DESCRIPTION("Intel(R) PRO/1000 Network Driver"); | 7038 | MODULE_DESCRIPTION("Intel(R) PRO/1000 Network Driver"); |
7040 | MODULE_LICENSE("GPL"); | 7039 | MODULE_LICENSE("GPL"); |