From: bruno randolf <bruno@thinktube.com>
To: linux-wireless@vger.kernel.org
Subject: atheros hardware needs padding for QoS data
Date: Fri, 12 Oct 2007 19:46:29 +0900 [thread overview]
Message-ID: <200710121946.30024.bruno@thinktube.com> (raw)
hello!
it seems the atheros hardware needs a padding to 4 byte boundaries after the
801.11 header when it sends QoS frames and it will add such a padding
automatically when it receives QoS data frames.
in my case this made the ath5k driver associate with an QoS enabled AP (same
type of card with the madwifi driver in default config) fine, but i could not
get any ARP requests thru - since the padding was missing there were 2 bytes
lost in the packet received on the AP side, so no further communication...
this need for padding is also reflected in the madwifi code and this comment:
/*
* Indicate we need the 802.11 header padded to a
* 32-bit boundary for 4-address and QoS frames.
*/
i created the following simple hack, to see if the problem really is the
missing padding. it just adds the padding all the time, so it will only work
with QoS enabled APs, but it makes me able to communicate with my QoS AP.
i didn't see how mac80211 would allow to solve this elegantly at this time.
are there any other drivers with a similar kind of padding requirement? how
could that be implemented cleanly?
luis, does this hack fix your problem with DHCP too?
bruno
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 064924c..bb11e63 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -1019,6 +1019,8 @@ ieee80211_rx_h_data(struct ieee80211_txrx_data *rx)
return TXRX_DROP;
hdrlen = ieee80211_get_hdrlen(fc);
+ if ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA)
+ hdrlen = hdrlen + 2;
/* convert IEEE 802.11 header + possible LLC headers into Ethernet
* header
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 957ec3c..6be9b95 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -1405,7 +1405,7 @@ int ieee80211_subif_start_xmit(struct sk_buff *skb,
if (sta) {
if (sta->flags & WLAN_STA_WME) {
fc |= IEEE80211_STYPE_QOS_DATA;
- hdrlen += 2;
+ hdrlen += 4; //2;
}
sta_info_put(sta);
}
next reply other threads:[~2007-10-12 10:46 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-10-12 10:46 bruno randolf [this message]
2007-10-12 11:58 ` atheros hardware needs padding for QoS data Johannes Berg
2007-10-12 13:09 ` Johannes Berg
2007-10-15 3:41 ` bruno randolf
2007-10-15 7:34 ` [PATCH] " bruno randolf
2007-10-15 8:31 ` Johannes Berg
2007-10-15 12:30 ` [PATCH] ath5k: atheros hardware needs header padding bruno randolf
2007-10-15 8:47 ` atheros hardware needs padding for QoS data Johannes Berg
2007-10-15 9:00 ` bruno randolf
2007-10-15 9:06 ` Johannes Berg
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=200710121946.30024.bruno@thinktube.com \
--to=bruno@thinktube.com \
--cc=linux-wireless@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).