[dpdk-dev] net/ixgbe: align register setting when RSC is disabled

Message ID 1492657566-26395-1-git-send-email-wei.dai@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Ferruh Yigit
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Wei Dai April 20, 2017, 3:06 a.m. UTC
  When RSC is not used, the RSC_DIS of register RFCTL should
be set according to ixgbe datasheet.

Signed-off-by: Wei Dai <wei.dai@intel.com>
---
 drivers/net/ixgbe/ixgbe_rxtx.c | 29 +++++++++++++----------------
 1 file changed, 13 insertions(+), 16 deletions(-)
  

Comments

Wenzhuo Lu April 21, 2017, 2:21 a.m. UTC | #1
Hi,


> -----Original Message-----
> From: Dai, Wei
> Sent: Thursday, April 20, 2017 11:06 AM
> To: Zhang, Helin; Ananyev, Konstantin; Lu, Wenzhuo; Dai, Wei
> Cc: dev@dpdk.org
> Subject: [PATCH] net/ixgbe: align register setting when RSC is disabled
> 
> When RSC is not used, the RSC_DIS of register RFCTL should be set according
> to ixgbe datasheet.
> 
> Signed-off-by: Wei Dai <wei.dai@intel.com>
Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
  
Ferruh Yigit April 21, 2017, 12:19 p.m. UTC | #2
On 4/21/2017 3:21 AM, Lu, Wenzhuo wrote:
> Hi,
> 
> 
>> -----Original Message-----
>> From: Dai, Wei
>> Sent: Thursday, April 20, 2017 11:06 AM
>> To: Zhang, Helin; Ananyev, Konstantin; Lu, Wenzhuo; Dai, Wei
>> Cc: dev@dpdk.org
>> Subject: [PATCH] net/ixgbe: align register setting when RSC is disabled
>>
>> When RSC is not used, the RSC_DIS of register RFCTL should be set according
>> to ixgbe datasheet.
>>
>> Signed-off-by: Wei Dai <wei.dai@intel.com>
> Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>

Applied to dpdk-next-net/master, thanks.
  

Patch

diff --git a/drivers/net/ixgbe/ixgbe_rxtx.c b/drivers/net/ixgbe/ixgbe_rxtx.c
index e8b5107..1e07895 100644
--- a/drivers/net/ixgbe/ixgbe_rxtx.c
+++ b/drivers/net/ixgbe/ixgbe_rxtx.c
@@ -4522,6 +4522,7 @@  ixgbe_set_rsc(struct rte_eth_dev *dev)
 	bool rsc_capable = false;
 	uint16_t i;
 	uint32_t rdrxctl;
+	uint32_t rfctl;
 
 	/* Sanity check */
 	dev->dev_ops->dev_infos_get(dev, &dev_info);
@@ -4549,22 +4550,18 @@  ixgbe_set_rsc(struct rte_eth_dev *dev)
 	}
 
 	/* RFCTL configuration  */
-	if (rsc_capable) {
-		uint32_t rfctl = IXGBE_READ_REG(hw, IXGBE_RFCTL);
-
-		if (rx_conf->enable_lro)
-			/*
-			 * Since NFS packets coalescing is not supported - clear
-			 * RFCTL.NFSW_DIS and RFCTL.NFSR_DIS when RSC is
-			 * enabled.
-			 */
-			rfctl &= ~(IXGBE_RFCTL_RSC_DIS | IXGBE_RFCTL_NFSW_DIS |
-				   IXGBE_RFCTL_NFSR_DIS);
-		else
-			rfctl |= IXGBE_RFCTL_RSC_DIS;
-
-		IXGBE_WRITE_REG(hw, IXGBE_RFCTL, rfctl);
-	}
+	rfctl = IXGBE_READ_REG(hw, IXGBE_RFCTL);
+	if ((rsc_capable) && (rx_conf->enable_lro))
+		/*
+		 * Since NFS packets coalescing is not supported - clear
+		 * RFCTL.NFSW_DIS and RFCTL.NFSR_DIS when RSC is
+		 * enabled.
+		 */
+		rfctl &= ~(IXGBE_RFCTL_RSC_DIS | IXGBE_RFCTL_NFSW_DIS |
+			   IXGBE_RFCTL_NFSR_DIS);
+	else
+		rfctl |= IXGBE_RFCTL_RSC_DIS;
+	IXGBE_WRITE_REG(hw, IXGBE_RFCTL, rfctl);
 
 	/* If LRO hasn't been requested - we are done here. */
 	if (!rx_conf->enable_lro)