From: David Miller <davem@davemloft.net>
To: jarkao2@gmail.com
Cc: jussi.kivilinna@mbnet.fi, kaber@trash.net, netdev@vger.kernel.org
Subject: Re: qdisc_enqueue, NET_XMIT_SUCCESS and kfree_skb
Date: Thu, 07 Aug 2008 03:45:45 -0700 (PDT) [thread overview]
Message-ID: <20080807.034545.202633862.davem@davemloft.net> (raw)
In-Reply-To: <20080807103130.GA12654@ff.dom.local>
From: Jarek Poplawski <jarkao2@gmail.com>
Date: Thu, 7 Aug 2008 10:31:30 +0000
> On Thu, Aug 07, 2008 at 03:10:58AM -0700, David Miller wrote:
> > From: Jarek Poplawski <jarkao2@gmail.com>
> > Date: Thu, 7 Aug 2008 10:09:10 +0000
> ...
> > > After some checking it looks mostly OK to me, but one thing: in
> > > sch_gred gred_drop() calls qdisc_drop(), so now it needs kfree_skb().
> > > BTW, maybe it would be nicer to add __qdisc_drop() for these new
> > > things?
> >
> > qdisc_drop() sets the new __NET_XMIT_KFREE bit, but sch_gred wants to
> > return NET_XMIT_CN, so I OR'd in the __NET_XMIT_KFREE bit there.
>
> Hmm... I'm not sure we're thinking about the same function?
Indeed, you're right.
I've added the kfree_skb() call to gred_drop() in my local tree.
Thanks!
BTW, speaking of ->requeue(), I think we could easily eliminate
that thing. It only exists because we allow drivers to kick things
back to us via ->hard_start_xmit() return values.
There are two cases:
1) NETDEV_TX_LOCKED... thanks to the bogon named LLTX
2) NETDEV_TX_BUSY, which is pretty much a bug
%99.999 of the cases that return NETDEV_TX_BUSY are error
conditions in the driver which log a message and we could
just as validly drop the packet for this case
But anyways, LLTX isn't dying tomorrow as much as we'd like it go
away.
But we could cache the SKB instead of requeueing it, just like how
we handle the ->gso_skb right now.
In fact it seems we can just reuse the ->gso_skb Qdisc member for
this purpose.
Then all of the ->requeue() code and resulting complexity can just
go away.
next prev parent reply other threads:[~2008-08-07 12:40 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-07-31 17:14 [PATCH] net_sched: Add qdisc __NET_XMIT_STOLEN flag Jarek Poplawski
2008-08-01 6:15 ` Patrick McHardy
2008-08-01 7:58 ` Jarek Poplawski
2008-08-01 10:19 ` [PATCH] net_sched: Add qdisc __NET_XMIT_BYPASS flag Jarek Poplawski
2008-08-04 1:25 ` David Miller
2008-08-04 6:28 ` [PATCH take 2] " Jarek Poplawski
2008-08-04 6:42 ` David Miller
2008-08-04 6:51 ` Jarek Poplawski
2008-08-04 8:55 ` [PATCH 1/2 respin] net_sched: Add qdisc __NET_XMIT_STOLEN flag Jarek Poplawski
2008-08-05 5:38 ` David Miller
2008-08-04 8:57 ` [PATCH 2/2 respin] net_sched: Add qdisc __NET_XMIT_BYPASS flag Jarek Poplawski
2008-08-05 6:14 ` David Miller
2008-08-05 6:34 ` Jarek Poplawski
2008-08-05 6:31 ` David Miller
2008-08-05 6:47 ` Jarek Poplawski
2008-08-04 18:35 ` [PATCH take 2] " Jussi Kivilinna
2008-08-04 21:03 ` Jarek Poplawski
2008-08-05 12:43 ` Jussi Kivilinna
2008-08-05 15:50 ` Jarek Poplawski
2008-08-06 19:42 ` qdisc_enqueue, NET_XMIT_SUCCESS and kfree_skb (Was: Re: [PATCH take 2] net_sched: Add qdisc __NET_XMIT_BYPASS flag) Jussi Kivilinna
2008-08-06 21:52 ` Jarek Poplawski
2008-08-07 3:26 ` qdisc_enqueue, NET_XMIT_SUCCESS and kfree_skb David Miller
2008-08-07 5:09 ` David Miller
2008-08-07 6:24 ` Jarek Poplawski
2008-08-07 10:09 ` Jarek Poplawski
2008-08-07 10:10 ` David Miller
2008-08-07 10:31 ` Jarek Poplawski
2008-08-07 10:45 ` David Miller [this message]
2008-08-07 11:39 ` Jarek Poplawski
2008-08-07 11:36 ` Jussi Kivilinna
2008-08-07 12:05 ` Jarek Poplawski
2008-08-18 6:52 ` David Miller
2008-08-19 12:50 ` Herbert Xu
2008-08-19 13:08 ` Patrick McHardy
2008-08-19 13:11 ` Herbert Xu
2008-08-19 13:20 ` Patrick McHardy
2008-08-19 13:42 ` Herbert Xu
2008-08-19 20:10 ` Denys Fedoryshchenko
2008-08-19 20:21 ` Jarek Poplawski
2008-08-19 20:26 ` David Miller
2008-08-07 11:40 ` qdisc_enqueue, NET_XMIT_SUCCESS and kfree_skb (Was: Re: [PATCH take 2] net_sched: Add qdisc __NET_XMIT_BYPASS flag) Jussi Kivilinna
2008-08-07 12:23 ` Jarek Poplawski
2008-08-05 21:22 ` [PATCH take 2] net_sched: Add qdisc __NET_XMIT_BYPASS flag David Miller
2008-08-04 6:48 ` [PATCH take 3] " Jarek Poplawski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080807.034545.202633862.davem@davemloft.net \
--to=davem@davemloft.net \
--cc=jarkao2@gmail.com \
--cc=jussi.kivilinna@mbnet.fi \
--cc=kaber@trash.net \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).