[dpdk-dev] igb: change default RX wthresh back

Message ID 1459405129-12442-1-git-send-email-wenzhuo.lu@intel.com (mailing list archive)
State Rejected, archived
Headers

Commit Message

Wenzhuo Lu March 31, 2016, 6:18 a.m. UTC
  A problem is found on i350 VF. TX will happen once per 4
packets. If only 1~3 packets are received, they will not be
forwarded.

The reason is the default RX write-back threshold is changed
to 4. This patch changes the value back to 0, so every packet
can be handled immediately.

Fixes: 4a41c17dba18 (igb: set default thresholds based on MAC type)
Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
---
 drivers/net/e1000/igb_ethdev.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Ananyev, Konstantin March 31, 2016, 7:29 a.m. UTC | #1
Hi Wenzhuo,
> 
> A problem is found on i350 VF. TX will happen once per 4
> packets. If only 1~3 packets are received, they will not be
> forwarded.
> 
> The reason is the default RX write-back threshold is changed
> to 4. This patch changes the value back to 0, so every packet
> can be handled immediately.
> 
> Fixes: 4a41c17dba18 (igb: set default thresholds based on MAC type)
> Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
> ---
>  drivers/net/e1000/igb_ethdev.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c
> index bd0ae26..34120ae 100644
> --- a/drivers/net/e1000/igb_ethdev.c
> +++ b/drivers/net/e1000/igb_ethdev.c
> @@ -64,7 +64,7 @@
> 
>  #define IGB_DEFAULT_RX_PTHRESH      ((hw->mac.type == e1000_i354) ? 12 : 8)
>  #define IGB_DEFAULT_RX_HTHRESH      8
> -#define IGB_DEFAULT_RX_WTHRESH      ((hw->mac.type == e1000_82576) ? 1 : 4)
> +#define IGB_DEFAULT_RX_WTHRESH      0

But that still doesn't prevent user from setting wthresh to whatever he likes inside
rx_queue_setup(), so the problem persists right?
As a side notice, it seems really bad practice to use implicit variables inside macro definition. 
Konstantin

> 
>  #define IGB_DEFAULT_TX_PTHRESH      ((hw->mac.type == e1000_i354) ? 20 : 8)
>  #define IGB_DEFAULT_TX_HTHRESH      1
> --
> 1.9.3
  
Wenzhuo Lu April 1, 2016, 12:39 a.m. UTC | #2
Hi Konstantin,

> -----Original Message-----
> From: Ananyev, Konstantin
> Sent: Thursday, March 31, 2016 3:30 PM
> To: Lu, Wenzhuo; dev@dpdk.org
> Cc: Lu, Wenzhuo
> Subject: RE: [dpdk-dev] [PATCH] igb: change default RX wthresh back
> 
> 
> Hi Wenzhuo,
> >
> > A problem is found on i350 VF. TX will happen once per 4 packets. If
> > only 1~3 packets are received, they will not be forwarded.
> >
> > The reason is the default RX write-back threshold is changed to 4.
> > This patch changes the value back to 0, so every packet can be handled
> > immediately.
> >
> > Fixes: 4a41c17dba18 (igb: set default thresholds based on MAC type)
> > Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
> > ---
> >  drivers/net/e1000/igb_ethdev.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/net/e1000/igb_ethdev.c
> > b/drivers/net/e1000/igb_ethdev.c index bd0ae26..34120ae 100644
> > --- a/drivers/net/e1000/igb_ethdev.c
> > +++ b/drivers/net/e1000/igb_ethdev.c
> > @@ -64,7 +64,7 @@
> >
> >  #define IGB_DEFAULT_RX_PTHRESH      ((hw->mac.type == e1000_i354) ? 12 :
> 8)
> >  #define IGB_DEFAULT_RX_HTHRESH      8
> > -#define IGB_DEFAULT_RX_WTHRESH      ((hw->mac.type == e1000_82576) ?
> 1 : 4)
> > +#define IGB_DEFAULT_RX_WTHRESH      0
> 
> But that still doesn't prevent user from setting wthresh to whatever he likes
> inside rx_queue_setup(), so the problem persists right?
> As a side notice, it seems really bad practice to use implicit variables inside
> macro definition.
> Konstantin
Yes, you're right. It doesn't prevent the user from changing the value to trigger the problem.
I'll withdraw this patch and create another one for this problem. Thanks.

> 
> >
> >  #define IGB_DEFAULT_TX_PTHRESH      ((hw->mac.type == e1000_i354) ? 20 :
> 8)
> >  #define IGB_DEFAULT_TX_HTHRESH      1
> > --
> > 1.9.3
  

Patch

diff --git a/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c
index bd0ae26..34120ae 100644
--- a/drivers/net/e1000/igb_ethdev.c
+++ b/drivers/net/e1000/igb_ethdev.c
@@ -64,7 +64,7 @@ 
 
 #define IGB_DEFAULT_RX_PTHRESH      ((hw->mac.type == e1000_i354) ? 12 : 8)
 #define IGB_DEFAULT_RX_HTHRESH      8
-#define IGB_DEFAULT_RX_WTHRESH      ((hw->mac.type == e1000_82576) ? 1 : 4)
+#define IGB_DEFAULT_RX_WTHRESH      0
 
 #define IGB_DEFAULT_TX_PTHRESH      ((hw->mac.type == e1000_i354) ? 20 : 8)
 #define IGB_DEFAULT_TX_HTHRESH      1