From: Patrick McHardy <kaber@trash.net>
To: David Kimdon <david.kimdon@devicescape.com>
Cc: netdev@vger.kernel.org,
"John W. Linville" <linville@tuxdriver.com>,
Jiri Benc <jbenc@suse.cz>
Subject: Re: [patch] d80211: use pfifo_qdisc_ops rather than d80211-specific qdisc
Date: Thu, 26 Oct 2006 03:21:10 +0200 [thread overview]
Message-ID: <45400D86.70406@trash.net> (raw)
In-Reply-To: <453FF357.6060007@trash.net>
Patrick McHardy wrote:
> David Kimdon wrote:
>
>>wme.c needs a generic fifo qdisc for each hardware queue. Switch
>>wme.c to use the generic fifo qdisc in net/sched/sch_fifo.c. This allows
>>removal of net/d80211/fifo_qdisc.c which isn't particularily tied to
>>IEEE 802.11 in any way.
>>
>>-#define CHILD_QDISC_OPS pfifo_qdisc_ops
>>-
>> static inline int WLAN_FC_IS_QOS_DATA(u16 fc)
>> {
>> return (fc & 0x8C) == 0x88;
>>@@ -433,7 +431,7 @@ static int wme_qdiscop_init(struct Qdisc
>> /* create child queues */
>> for (i = 0; i < queues; i++) {
>> skb_queue_head_init(&q->requeued[i]);
>>- q->queues[i] = qdisc_create_dflt(qd->dev, &CHILD_QDISC_OPS);
>>+ q->queues[i] = qdisc_create_dflt(qd->dev, &pfifo_qdisc_ops);
>> if (q->queues[i] == 0) {
>> q->queues[i] = &noop_qdisc;
>> printk(KERN_ERR "%s child qdisc %i creation failed", dev->name, i);
>>Index: wireless-dev/net/d80211/Kconfig
>>===================================================================
>>--- wireless-dev.orig/net/d80211/Kconfig
>>+++ wireless-dev/net/d80211/Kconfig
>>@@ -3,6 +3,7 @@ config D80211
>> select CRYPTO
>> select CRYPTO_ARC4
>> select CRYPTO_AES
>>+ select NET_SCHED
>
>
>
> pfifo_fast is available even without CONFIG_NET_SCHED, maybe
> thats a better choice to avoid unnecessary bloat.
BTW, I noticed a few bugs while looking at the qdisc handling in
wireless-dev:
- wme_qdiscop_enqueue doesn't increment q.qlen for packets queued
to q->requeued[], which might cause upper layer code to stop
dequeueing if q.qlen reaches zero.
- classify_1d doesn't care about tc_classify return values.
tc_classify may decide to steal packets, drop them, etc. In case
of stolen packets this causes use-after-free, otherwise just
malfunctions.
- classify_1d returns res.class if it is != -1, which can never happen
(except with an empty classifier list because of the explicit
initialization, but you should check the return code) since ->get()
and ->bind_tcf() both return 0 for invalid classes and the classid
otherwise. There's also an off-by-one, classids start at one, so it
should return res.class - 1 (or better res.classid - 1, which is
meant to be a numerical identifier).
- wme_discop_destroy leaks classifier module references and memory
when destroying classifiers, it should use tcf_destroy()
Considering that it is possibly and may be desirable to attach a
different qdisc than the built-in multiband qdisc, it might also
make sense to split the 80211 specific classification in a seperate
classifier module to allow simple classification of management traffic
with other qdiscs.
next prev parent reply other threads:[~2006-10-26 1:21 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-10-25 22:04 [patch] d80211: use pfifo_qdisc_ops rather than d80211-specific qdisc David Kimdon
2006-10-25 23:29 ` Patrick McHardy
2006-10-26 1:21 ` Patrick McHardy [this message]
2006-10-26 2:38 ` Jeff Garzik
2006-10-26 3:37 ` Simon Barber
2006-10-26 5:04 ` Jeff Garzik
2006-10-26 5:15 ` Simon Barber
2006-11-01 10:28 ` Jiri Benc
2006-11-01 14:20 ` John W. Linville
2006-11-01 18:31 ` James Ketrenos
2006-11-02 0:30 ` Jeff Garzik
2006-11-02 1:48 ` d80211 merge (was Re: [patch] d80211: use pfifo_qdisc_ops rather than d80211-specific qdisc) James Ketrenos
2006-11-02 2:55 ` Jeff Garzik
2006-11-02 8:49 ` cfg80211/nl80211/WE (was: Re: d80211 merge) Johannes Berg
2006-11-02 8:59 ` cfg80211/nl80211/WE Jeff Garzik
2006-11-02 10:56 ` cfg80211/nl80211/WE (was: Re: d80211 merge) Christoph Hellwig
2006-11-02 12:03 ` Johannes Berg
2006-11-02 12:16 ` [patch] d80211: use pfifo_qdisc_ops rather than d80211-specific qdisc Christoph Hellwig
2006-11-02 14:05 ` Jiri Benc
2006-11-02 14:18 ` Christoph Hellwig
2006-11-02 14:32 ` Johannes Berg
2006-11-02 14:41 ` Jochen Friedrich
2006-11-02 14:45 ` Christoph Hellwig
2006-11-02 15:02 ` Johannes Berg
2006-11-02 16:38 ` Simon Barber
2006-11-02 15:42 ` Jiri Benc
2006-11-02 16:09 ` Sven-Haegar Koch
2006-11-02 18:38 ` Jiri Benc
2006-11-02 20:58 ` Dan Williams
2006-11-02 21:27 ` Simon Barber
2006-11-02 22:48 ` Stephen Hemminger
2006-11-02 23:15 ` Luis R. Rodriguez
2006-11-02 14:22 ` Johannes Berg
2006-11-02 16:33 ` [patch] d80211: use pfifo_qdisc_ops rather thand80211-specific qdisc Simon Barber
2006-11-02 16:43 ` Johannes Berg
2006-11-02 22:34 ` Stephen Hemminger
2006-11-02 22:56 ` Johannes Berg
2006-11-03 19:23 ` [patch] d80211: use pfifo_qdisc_ops rather thand80211-specificqdisc Simon Barber
2006-11-03 19:29 ` Simon Barber
2006-11-03 19:39 ` John W. Linville
2006-11-03 23:07 ` Johannes Berg
2006-11-04 2:20 ` [patch] d80211: use pfifo_qdisc_ops ratherthand80211-specificqdisc Simon Barber
2006-11-02 14:06 ` [patch] d80211: use pfifo_qdisc_ops rather than d80211-specific qdisc John W. Linville
2006-10-26 1:34 ` Simon Barber
2006-10-26 1:49 ` Patrick McHardy
2006-10-26 3:17 ` Simon Barber
2006-10-26 2:04 ` Patrick McHardy
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=45400D86.70406@trash.net \
--to=kaber@trash.net \
--cc=david.kimdon@devicescape.com \
--cc=jbenc@suse.cz \
--cc=linville@tuxdriver.com \
--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).