From: Larry Finger <Larry.Finger@lwfinger.net>
To: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com>
Cc: br1@einfach.org, ht6100@gmail.com, linux-wireless@vger.kernel.org
Subject: Re: pending queue depth in ieee80211_local data structure
Date: Thu, 18 Mar 2010 07:56:15 -0500 [thread overview]
Message-ID: <4BA222EF.2020901@lwfinger.net> (raw)
In-Reply-To: <f74418681003180435v3b762257q89c636d834897a5f@mail.gmail.com>
On 03/18/2010 06:35 AM, Lorenzo Bianconi wrote:
> Hi all,
>
> I pasted the first version of the patch where I missed to unlock the
> spinlock in the ieee80211_tx().
> This is the last version of the patch.
Probably not.
> Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com>
>
> --- a/net/mac80211/ieee80211_i.h
> +++ b/net/mac80211/ieee80211_i.h
> @@ -708,6 +708,8 @@
> struct work_struct sta_finish_work;
> int sta_generation;
>
> + /* Pending buffer dimension */
> + #define PENDING_BUF 512
> struct sk_buff_head pending[IEEE80211_MAX_QUEUES];
> struct tasklet_struct tx_pending_tasklet;
>
> --- a/net/mac80211/tx.c
> +++ b/net/mac80211/tx.c
> @@ -1449,14 +1449,18 @@
> skb = tx.skb;
>
> spin_lock_irqsave(&local->queue_stop_reason_lock, flags);
> -
> +
The new line here has trailing white space. I wondered why you were changing one
blank line for another. You should use scripts/checkpatch to verify your patch.
That script would have caught this.
> if (local->queue_stop_reasons[queue] ||
> !skb_queue_empty(&local->pending[queue])) {
> /*
> - * if queue is stopped, queue up frames for later
> - * transmission from the tasklet
> + * if queue is stopped and there is enough space in the queue,
> + * queue up frames for later transmission from the tasklet
> */
> - do {
> + if (skb_queue_len(&local->pending[queue]) >= PENDING_BUF) {
> + spin_unlock_irqrestore(&local->queue_stop_reason_lock,
> + flags);
> + goto drop;
> + } do {
> next = skb->next;
> skb->next = NULL;
> if (unlikely(txpending))
> @@ -2074,8 +2078,12 @@
> flags);
>
> txok = ieee80211_tx_pending_skb(local, skb);
> - if (!txok)
> - __skb_queue_head(&local->pending[i], skb);
> + if (!txok) {
> + if (skb_queue_len(&local->pending[i]) < PENDING_BUF)
> + __skb_queue_head(&local->pending[i], skb);
> + else
> + kfree_skb(skb);
> + }
> spin_lock_irqsave(&local->queue_stop_reason_lock,
> flags);
> if (!txok)
> --- a/net/mac80211/util.c
> +++ b/net/mac80211/util.c
> @@ -383,7 +383,10 @@
>
> spin_lock_irqsave(&local->queue_stop_reason_lock, flags);
> __ieee80211_stop_queue(hw, queue, IEEE80211_QUEUE_STOP_REASON_SKB_ADD);
> - __skb_queue_tail(&local->pending[queue], skb);
> + if (skb_queue_len(&local->pending[queue]) < PENDING_BUF)
> + __skb_queue_tail(&local->pending[queue], skb);
> + else
> + kfree_skb(skb);
> __ieee80211_wake_queue(hw, queue, IEEE80211_QUEUE_STOP_REASON_SKB_ADD);
> spin_unlock_irqrestore(&local->queue_stop_reason_lock, flags);
> }
> @@ -409,9 +412,12 @@
> continue;
> }
>
> - ret++;
> queue = skb_get_queue_mapping(skb);
> - __skb_queue_tail(&local->pending[queue], skb);
> + if (skb_queue_len(&local->pending[queue]) < PENDING_BUF) {
> + ret++;
> + __skb_queue_tail(&local->pending[queue], skb);
> + } else
> + kfree_skb(skb);
> }
>
> for (i = 0; i < hw->queues; i++)
John Linville's efforts as the wireless maintainer are made easier when everyone
follows the guidelines in Documentation/SubmittingPatches. For instance, this
patch should have been submitted with the subject "[PATCH V2] mac80211: Revise
pending queue depth in ieee80211_local data structure", or some such title. At
the beginning of the submission, you should describe the problem following the
guidelines mentioned above. This section is followed by the "Signed-off-by:"
line with a line consisting of "---". Everything above this line becomes part of
the official record if/when the patch is accepted. In this case, the quoting of
previous emails and the inclusion of the previous patch is inappropriate. Below
the ---, you can include additional information such as how this version differs
from previous submissions, and any instructions to John.
I have not reviewed the content of this patch - only the problem with the white
space caught my eye.
Larry
prev parent reply other threads:[~2010-03-18 12:56 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-18 10:12 pending queue depth in ieee80211_local data structure Lorenzo Bianconi
2010-03-18 10:44 ` Bruno Randolf
2010-03-18 11:35 ` Lorenzo Bianconi
2010-03-18 12:56 ` Larry Finger [this message]
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=4BA222EF.2020901@lwfinger.net \
--to=larry.finger@lwfinger.net \
--cc=br1@einfach.org \
--cc=ht6100@gmail.com \
--cc=linux-wireless@vger.kernel.org \
--cc=lorenzo.bianconi83@gmail.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.