[dpdk-dev] [PATCH] net/mlx4: fix rx not working after mbuf alloc failure

Adrien Mazarguil adrien.mazarguil at 6wind.com
Thu Apr 13 14:28:22 CEST 2017


On Thu, Apr 13, 2017 at 01:22:39PM +0100, Ferruh Yigit wrote:
> On 4/13/2017 1:05 PM, Adrien Mazarguil wrote:
> > Hi Charles,
> > 
> > On Thu, Apr 13, 2017 at 07:52:34AM +0000, Myers, Charles wrote:
> >> I ran into an issue where the mlx4 driver stops receiving packets when mbuf allocation fails in mlx4_rx_burst().
> >>
> >> This issue appears to be caused because the code doesn't recycle the existing mbuf to the sges array
> >> when mbuf allocation fails as is done in the code right above it which handles the
> >> (wc.status != IBV_WC_SUCCESS) case.
> >>
> >> Copying the code from the above case before jumping to repost fixes the issue for me.
> >>
> >> Signed-off-by: Charles Myers <Charles.Myers at spirent.com>
> > 
> > Thanks, this addresses a very old bug present since v2.1.0. As a fix, the
> > subject line should contain the word "fix", something like:
> 
> Hi Adrien, Charles,
> 
> I can't see this patch, any chance that it doesn't hit the mail list? Is
> there a patchwork link for patch?

Ah, I probably only got it because I was also a recipient. Charles, have you
subscribed to dev at dpdk.org?

> > 
> >  net/mlx4: fix Rx after mbuf allocation failure
> > 
> > And since it's a fix:
> > 
> >  Fixes: acac55f16412 ("mlx4: use MOFED 3.0 fast verbs interface for Rx operations")
> >  Cc: stable at dpdk.org
> > 
> > Please also make sure the commit log is formatted according to the
> > submission guidelines (50 chars max for subject line, 75 chars for the rest
> > (except for the Fixes line), yada yada - see check-git-log.sh).
> > 
> >> ---
> >>  drivers/net/mlx4/mlx4.c |    3 +++
> >>  1 file changed, 3 insertions(+)
> >>
> >> diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c index aff9155..59d26fe 100644
> >> --- a/drivers/net/mlx4/mlx4.c
> >> +++ b/drivers/net/mlx4/mlx4.c
> >> @@ -3169,6 +3169,9 @@ struct txq_mp2mr_mbuf_check_data {
> >>  			/* Increase out of memory counters. */
> >>  			++rxq->stats.rx_nombuf;
> >>  			++rxq->priv->dev->data->rx_mbuf_alloc_failed;
> >> +
> > 
> > Another nit here, the above blank line is unnecessary.
> > 
> >> +			/* Add SGE to array for repost. */
> >> +			sges[i] = elt->sge;
> >>  			goto repost;
> >>  		}
> >>  
> >> --
> >> 1.7.9.5
> >>
> > 
> > Otherwise,
> > 
> > Acked-by: Adrien Mazarguil <adrien.mazarguil at 6wind.com>
> > 
> 

-- 
Adrien Mazarguil
6WIND


More information about the dev mailing list