aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/intel/e1000e/netdev.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2012-08-31 16:03:33 -0400
committerDavid S. Miller <davem@davemloft.net>2012-08-31 16:03:33 -0400
commitfcb118491bc8bc16c4eeb8142366bcbe17fe615d (patch)
tree8eb8aba6fe58519aea313820bb4b9c0859721cbd /drivers/net/ethernet/intel/e1000e/netdev.c
parent80f0fd8a7f18af78dd26bf94230e89c3ae82d4ba (diff)
parentdd1fe113e7532c7513ff03f832312d81628a23ff (diff)
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next
Diffstat (limited to 'drivers/net/ethernet/intel/e1000e/netdev.c')
-rw-r--r--drivers/net/ethernet/intel/e1000e/netdev.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
index d01a099475a1..121990cab144 100644
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@ -56,7 +56,7 @@
56 56
57#define DRV_EXTRAVERSION "-k" 57#define DRV_EXTRAVERSION "-k"
58 58
59#define DRV_VERSION "2.0.0" DRV_EXTRAVERSION 59#define DRV_VERSION "2.1.4" DRV_EXTRAVERSION
60char e1000e_driver_name[] = "e1000e"; 60char e1000e_driver_name[] = "e1000e";
61const char e1000e_driver_version[] = DRV_VERSION; 61const char e1000e_driver_version[] = DRV_VERSION;
62 62
@@ -3446,7 +3446,7 @@ void e1000e_reset(struct e1000_adapter *adapter)
3446 3446
3447 /* 3447 /*
3448 * if short on Rx space, Rx wins and must trump Tx 3448 * if short on Rx space, Rx wins and must trump Tx
3449 * adjustment or use Early Receive if available 3449 * adjustment
3450 */ 3450 */
3451 if (pba < min_rx_space) 3451 if (pba < min_rx_space)
3452 pba = min_rx_space; 3452 pba = min_rx_space;
@@ -3755,6 +3755,10 @@ static irqreturn_t e1000_intr_msi_test(int irq, void *data)
3755 e_dbg("icr is %08X\n", icr); 3755 e_dbg("icr is %08X\n", icr);
3756 if (icr & E1000_ICR_RXSEQ) { 3756 if (icr & E1000_ICR_RXSEQ) {
3757 adapter->flags &= ~FLAG_MSI_TEST_FAILED; 3757 adapter->flags &= ~FLAG_MSI_TEST_FAILED;
3758 /*
3759 * Force memory writes to complete before acknowledging the
3760 * interrupt is handled.
3761 */
3758 wmb(); 3762 wmb();
3759 } 3763 }
3760 3764
@@ -3796,6 +3800,10 @@ static int e1000_test_msi_interrupt(struct e1000_adapter *adapter)
3796 goto msi_test_failed; 3800 goto msi_test_failed;
3797 } 3801 }
3798 3802
3803 /*
3804 * Force memory writes to complete before enabling and firing an
3805 * interrupt.
3806 */
3799 wmb(); 3807 wmb();
3800 3808
3801 e1000_irq_enable(adapter); 3809 e1000_irq_enable(adapter);
@@ -3807,7 +3815,7 @@ static int e1000_test_msi_interrupt(struct e1000_adapter *adapter)
3807 3815
3808 e1000_irq_disable(adapter); 3816 e1000_irq_disable(adapter);
3809 3817
3810 rmb(); 3818 rmb(); /* read flags after interrupt has been fired */
3811 3819
3812 if (adapter->flags & FLAG_MSI_TEST_FAILED) { 3820 if (adapter->flags & FLAG_MSI_TEST_FAILED) {
3813 adapter->int_mode = E1000E_INT_MODE_LEGACY; 3821 adapter->int_mode = E1000E_INT_MODE_LEGACY;
@@ -4670,7 +4678,7 @@ static int e1000_tso(struct e1000_ring *tx_ring, struct sk_buff *skb)
4670 struct e1000_buffer *buffer_info; 4678 struct e1000_buffer *buffer_info;
4671 unsigned int i; 4679 unsigned int i;
4672 u32 cmd_length = 0; 4680 u32 cmd_length = 0;
4673 u16 ipcse = 0, tucse, mss; 4681 u16 ipcse = 0, mss;
4674 u8 ipcss, ipcso, tucss, tucso, hdr_len; 4682 u8 ipcss, ipcso, tucss, tucso, hdr_len;
4675 4683
4676 if (!skb_is_gso(skb)) 4684 if (!skb_is_gso(skb))
@@ -4704,7 +4712,6 @@ static int e1000_tso(struct e1000_ring *tx_ring, struct sk_buff *skb)
4704 ipcso = (void *)&(ip_hdr(skb)->check) - (void *)skb->data; 4712 ipcso = (void *)&(ip_hdr(skb)->check) - (void *)skb->data;
4705 tucss = skb_transport_offset(skb); 4713 tucss = skb_transport_offset(skb);
4706 tucso = (void *)&(tcp_hdr(skb)->check) - (void *)skb->data; 4714 tucso = (void *)&(tcp_hdr(skb)->check) - (void *)skb->data;
4707 tucse = 0;
4708 4715
4709 cmd_length |= (E1000_TXD_CMD_DEXT | E1000_TXD_CMD_TSE | 4716 cmd_length |= (E1000_TXD_CMD_DEXT | E1000_TXD_CMD_TSE |
4710 E1000_TXD_CMD_TCP | (skb->len - (hdr_len))); 4717 E1000_TXD_CMD_TCP | (skb->len - (hdr_len)));
@@ -4718,7 +4725,7 @@ static int e1000_tso(struct e1000_ring *tx_ring, struct sk_buff *skb)
4718 context_desc->lower_setup.ip_fields.ipcse = cpu_to_le16(ipcse); 4725 context_desc->lower_setup.ip_fields.ipcse = cpu_to_le16(ipcse);
4719 context_desc->upper_setup.tcp_fields.tucss = tucss; 4726 context_desc->upper_setup.tcp_fields.tucss = tucss;
4720 context_desc->upper_setup.tcp_fields.tucso = tucso; 4727 context_desc->upper_setup.tcp_fields.tucso = tucso;
4721 context_desc->upper_setup.tcp_fields.tucse = cpu_to_le16(tucse); 4728 context_desc->upper_setup.tcp_fields.tucse = 0;
4722 context_desc->tcp_seg_setup.fields.mss = cpu_to_le16(mss); 4729 context_desc->tcp_seg_setup.fields.mss = cpu_to_le16(mss);
4723 context_desc->tcp_seg_setup.fields.hdr_len = hdr_len; 4730 context_desc->tcp_seg_setup.fields.hdr_len = hdr_len;
4724 context_desc->cmd_and_length = cpu_to_le32(cmd_length); 4731 context_desc->cmd_and_length = cpu_to_le32(cmd_length);