From: Michael Buesch <mb@bu3sch.de>
To: "Simon Barber" <simon@devicescape.com>
Cc: "Jiri Benc" <jbenc@suse.cz>,
linville@tuxdriver.com, netdev@vger.kernel.org
Subject: Re: [PATCH] d80211: add ieee80211_stop_queues()
Date: Thu, 24 Aug 2006 00:07:23 +0200 [thread overview]
Message-ID: <200608240007.23798.mb@bu3sch.de> (raw)
In-Reply-To: <C86180A8C204554D8A3323D8F6B0A29F0165B5F1@dhost002-46.dex002.intermedia.net>
On Wednesday 23 August 2006 23:12, Simon Barber wrote:
> We already do have intelligent qdiscs - via TC. Anyone using htb for
> rate pacing, will achieve better control (less jitter) if the DMA queue
> latency is kept down.
>
> One very important issue for 802.11 is the software rate control. At a
> certain point in time the rate control algorithm may determine it's time
> to start transmitting frames at a much lower rate - now all the frames
> already in the DMA queue will be transmitted at the old higher rate -
> and hence will suffer a lower probability of being received correctly.
> If the number of frames in the DMA queue can be kept down then the rate
> change happens faster. Obviously the limiting factor is keeping the DMA
> queue full enough that the hardware is not starved in the worst case of
> softirq latency. This is a time based limit.
Yes, that makes sense.
What about the following:
We don't remove the ieee80211_stop/wake_queue() mechanism, as it's
simply used to protect the hard bounds of the ring.
I think determining the ring latency might be possible without changing
the API or even changing the low level driver.
We have the ieee80211_tx_status() callback. We must simply
assume any packet that's gone through hw->tx() but not yet
got back through ieee80211_tx_status() is on the device queue.
And I think that's a valid assumption.
So accounting can be done before calling hw->tx()
and in ieee80211_tx_status().
At ieee80211_tx_status() time we have all needed information.
The frame length (skb), the transmission rate from the tx_control
array in the status report. We have that information in hw->tx(),
too, of course. So we can calculate the time (latency) the
current ring state has in O(1) time.
--
Greetings Michael.
prev parent reply other threads:[~2006-08-23 22:07 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-08-23 11:44 [PATCH] d80211: add ieee80211_stop_queues() Michael Buesch
2006-08-23 19:30 ` Simon Barber
2006-08-23 19:45 ` Michael Buesch
2006-08-23 19:54 ` Simon Barber
2006-08-23 20:04 ` Michael Buesch
2006-08-23 20:10 ` Simon Barber
2006-08-23 20:20 ` Michael Buesch
2006-08-23 20:32 ` Simon Barber
2006-08-23 20:57 ` Michael Buesch
2006-08-23 21:12 ` Simon Barber
2006-08-23 22:07 ` Michael Buesch [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=200608240007.23798.mb@bu3sch.de \
--to=mb@bu3sch.de \
--cc=jbenc@suse.cz \
--cc=linville@tuxdriver.com \
--cc=netdev@vger.kernel.org \
--cc=simon@devicescape.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 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).