aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorJesse Brandeburg <jesse.brandeburg@intel.com>2014-05-10 00:49:01 -0400
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2014-06-08 05:01:14 -0400
commitc2451d7f55d667350bf6eeda5749ce9a239a9b3f (patch)
tree7191c1d4cfc59277c3be6c81cca86abc6caaef0b /drivers/net
parentfff1f59b1773fcbb563c503ad9c7ace54062144b (diff)
i40e/i40evf: fix rx descriptor status
As reported by Eric Dumazet, the driver is not masking the right bits in the receive descriptor before it starts checking them. This patch extends the mask to allow for the right bits to be checked, and fixes the issue permanently via a define. CC: Eric Dumazet <eric.dumazet@gmail.com> Change-ID: I3274f7619057a950f468143e6d7e11b129f54655 Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e_type.h10
-rw-r--r--drivers/net/ethernet/intel/i40evf/i40e_type.h10
2 files changed, 12 insertions, 8 deletions
diff --git a/drivers/net/ethernet/intel/i40e/i40e_type.h b/drivers/net/ethernet/intel/i40e/i40e_type.h
index 5a930b31728f..7fbbab46fe27 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_type.h
+++ b/drivers/net/ethernet/intel/i40e/i40e_type.h
@@ -492,9 +492,6 @@ union i40e_32byte_rx_desc {
492 } wb; /* writeback */ 492 } wb; /* writeback */
493}; 493};
494 494
495#define I40E_RXD_QW1_STATUS_SHIFT 0
496#define I40E_RXD_QW1_STATUS_MASK (0x7FFFUL << I40E_RXD_QW1_STATUS_SHIFT)
497
498enum i40e_rx_desc_status_bits { 495enum i40e_rx_desc_status_bits {
499 /* Note: These are predefined bit offsets */ 496 /* Note: These are predefined bit offsets */
500 I40E_RX_DESC_STATUS_DD_SHIFT = 0, 497 I40E_RX_DESC_STATUS_DD_SHIFT = 0,
@@ -511,9 +508,14 @@ enum i40e_rx_desc_status_bits {
511 I40E_RX_DESC_STATUS_LPBK_SHIFT = 14, 508 I40E_RX_DESC_STATUS_LPBK_SHIFT = 14,
512 I40E_RX_DESC_STATUS_IPV6EXADD_SHIFT = 15, 509 I40E_RX_DESC_STATUS_IPV6EXADD_SHIFT = 15,
513 I40E_RX_DESC_STATUS_RESERVED_SHIFT = 16, /* 2 BITS */ 510 I40E_RX_DESC_STATUS_RESERVED_SHIFT = 16, /* 2 BITS */
514 I40E_RX_DESC_STATUS_UDP_0_SHIFT = 18 511 I40E_RX_DESC_STATUS_UDP_0_SHIFT = 18,
512 I40E_RX_DESC_STATUS_LAST /* this entry must be last!!! */
515}; 513};
516 514
515#define I40E_RXD_QW1_STATUS_SHIFT 0
516#define I40E_RXD_QW1_STATUS_MASK (((1 << I40E_RX_DESC_STATUS_LAST) - 1) \
517 << I40E_RXD_QW1_STATUS_SHIFT)
518
517#define I40E_RXD_QW1_STATUS_TSYNINDX_SHIFT I40E_RX_DESC_STATUS_TSYNINDX_SHIFT 519#define I40E_RXD_QW1_STATUS_TSYNINDX_SHIFT I40E_RX_DESC_STATUS_TSYNINDX_SHIFT
518#define I40E_RXD_QW1_STATUS_TSYNINDX_MASK (0x3UL << \ 520#define I40E_RXD_QW1_STATUS_TSYNINDX_MASK (0x3UL << \
519 I40E_RXD_QW1_STATUS_TSYNINDX_SHIFT) 521 I40E_RXD_QW1_STATUS_TSYNINDX_SHIFT)
diff --git a/drivers/net/ethernet/intel/i40evf/i40e_type.h b/drivers/net/ethernet/intel/i40evf/i40e_type.h
index 4fc9835ca7b1..9c901fdaf7cd 100644
--- a/drivers/net/ethernet/intel/i40evf/i40e_type.h
+++ b/drivers/net/ethernet/intel/i40evf/i40e_type.h
@@ -492,9 +492,6 @@ union i40e_32byte_rx_desc {
492 } wb; /* writeback */ 492 } wb; /* writeback */
493}; 493};
494 494
495#define I40E_RXD_QW1_STATUS_SHIFT 0
496#define I40E_RXD_QW1_STATUS_MASK (0x7FFFUL << I40E_RXD_QW1_STATUS_SHIFT)
497
498enum i40e_rx_desc_status_bits { 495enum i40e_rx_desc_status_bits {
499 /* Note: These are predefined bit offsets */ 496 /* Note: These are predefined bit offsets */
500 I40E_RX_DESC_STATUS_DD_SHIFT = 0, 497 I40E_RX_DESC_STATUS_DD_SHIFT = 0,
@@ -511,9 +508,14 @@ enum i40e_rx_desc_status_bits {
511 I40E_RX_DESC_STATUS_LPBK_SHIFT = 14, 508 I40E_RX_DESC_STATUS_LPBK_SHIFT = 14,
512 I40E_RX_DESC_STATUS_IPV6EXADD_SHIFT = 15, 509 I40E_RX_DESC_STATUS_IPV6EXADD_SHIFT = 15,
513 I40E_RX_DESC_STATUS_RESERVED_SHIFT = 16, /* 2 BITS */ 510 I40E_RX_DESC_STATUS_RESERVED_SHIFT = 16, /* 2 BITS */
514 I40E_RX_DESC_STATUS_UDP_0_SHIFT = 18 511 I40E_RX_DESC_STATUS_UDP_0_SHIFT = 18,
512 I40E_RX_DESC_STATUS_LAST /* this entry must be last!!! */
515}; 513};
516 514
515#define I40E_RXD_QW1_STATUS_SHIFT 0
516#define I40E_RXD_QW1_STATUS_MASK (((1 << I40E_RX_DESC_STATUS_LAST) - 1) \
517 << I40E_RXD_QW1_STATUS_SHIFT)
518
517#define I40E_RXD_QW1_STATUS_TSYNINDX_SHIFT I40E_RX_DESC_STATUS_TSYNINDX_SHIFT 519#define I40E_RXD_QW1_STATUS_TSYNINDX_SHIFT I40E_RX_DESC_STATUS_TSYNINDX_SHIFT
518#define I40E_RXD_QW1_STATUS_TSYNINDX_MASK (0x3UL << \ 520#define I40E_RXD_QW1_STATUS_TSYNINDX_MASK (0x3UL << \
519 I40E_RXD_QW1_STATUS_TSYNINDX_SHIFT) 521 I40E_RXD_QW1_STATUS_TSYNINDX_SHIFT)