[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1310379390.22731.2.camel@lb-tlvb-eilong.il.broadcom.com>
Date: Mon, 11 Jul 2011 13:16:30 +0300
From: "Eilon Greenstein" <eilong@...adcom.com>
To: Michał Mirosław <mirq-linux@...e.qmqm.pl>
cc: "netdev@...r.kernel.org" <netdev@...r.kernel.org>,
"Hartley Sweeten" <hsweeten@...ionengravers.com>,
"Michael Chan" <mchan@...adcom.com>,
"Guo-Fu Tseng" <cooldavid@...ldavid.org>,
"Realtek linux nic maintainers" <nic_swsd@...ltek.com>,
"Francois Romieu" <romieu@...zoreil.com>,
"Stephen Hemminger" <shemminger@...ux-foundation.org>,
"Matthew Carlson" <mcarlson@...adcom.com>,
"Jon Mason" <jdmason@...zu.us>
Subject: Re: [PATCH v2 46/46] net: mark drivers that drop packets from
rx queue head under memory pressure
On Mon, 2011-07-11 at 03:04 -0700, Michał Mirosław wrote:
> On Mon, Jul 11, 2011 at 09:47:08AM +0300, Eilon Greenstein wrote:
> > On Sun, 2011-07-10 at 17:52 -0700, Michał Mirosław wrote:
> > > Signed-off-by: Michał Mirosław <mirq-linux@...e.qmqm.pl>
> > > ---
> >
> > > diff --git a/drivers/net/bnx2x/bnx2x_cmn.c b/drivers/net/bnx2x/bnx2x_cmn.c
> > > index 4f9164c..a6da01a 100644
> > > --- a/drivers/net/bnx2x/bnx2x_cmn.c
> > > +++ b/drivers/net/bnx2x/bnx2x_cmn.c
> > > @@ -673,6 +673,9 @@ int bnx2x_rx_int(struct bnx2x_fastpath *fp, int budget)
> > > goto reuse_rx;
> > > }
> > >
> > > +#warning drops packets from rx queue head on memory pressure
> > > +#warning (like dev_skb_finish_rx_dma_refill() users)
> > > +
> >
> > We have the dropless_fc module parameter that can be configured if the
> > user prefers pausing on host memory pressure - the problem with that
> > feature is that it is enough that one of the ring runs out of memory and
> > the entire port is stopped. When running with 16 rings, this can lead to
> > serious throughput degradation - this is why it is kept as a user
> > configurable option.
>
> From the code it look like dropless_fc just enables sending of pause
> frames. If that's disabled, then what happens when one queue runs out
> of free rx buffers?
>
Actually, I was too fast before and did not read it all through. After I
did, I saw that Dave already replied...
The dropless_fc is not really related to this case. It is about the
driver not keeping up with the FW/HW and not about the driver failing to
allocate a buffer (well, not directly - if that will happen with the
suggested patch we will run out of space on the ring). If the ring is
full, the FW will drop the packet. But if the FW is not fast enough and
the internal chip buffer is getting full - the HW will send pause. So
when pause is enabled, without dropless_fc packets will still be dropped
if the host is too slow but not if the chip is too slow (when exceeding
the chip max PPS with small packets). When dropless_fc is set, packet
will not be dropped but in multi-ring scenario we are likely to be under
utilizing the link in case some (possibly only one) ring on one CPU is
not keeping up while the other rings (on other CPUs) still have room and
possibly idling.
Regards,
Eilon
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists