>Number: 176201
>Category: kern
>Synopsis: 11n station includes unrelated ht params into ASSOC_REQ packet
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible:freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sun Feb 17 00:10:01 UTC 2013
>Closed-Date:
>Last-Modified:
>Originator: PseudoCylon
>Release:9.1-PRERELEASE
>Organization:
>Environment:
9.1-RELEASE #5: Sun Feb 3 16:22:34 MST 2013 root@mb0:/usr/obj/usr/src/sys/U300
amd64
>Description:
When an 11n capable station try to associate with an AP, the station does not
include maximum Rx size and ampdu density set by the driver into an association
request packet. So that, the AP might generate ampdu packets bigger than the
station can handle.
Detailed discussion can be found here.
http://lists.freebsd.org/pipermail/freebsd-wireless/2013-February/002878.html
>How-To-Repeat:
1) Set up an 11n station.
2) Capture an ASSOC_REQ packet sent by the station.
3) Read HT params in the packet.
>Fix:
In a brief testing, attached patch fixed the issue. But, need to be checked the
patch doesn't break anything.
Patch attached with submission follows:
diff --git a/sys/net80211/ieee80211_ht.c b/sys/net80211/ieee80211_ht.c
index 495c949..9fc5a45 100644
--- a/sys/net80211/ieee80211_ht.c
+++ b/sys/net80211/ieee80211_ht.c
@@ -2652,9 +2652,6 @@ ieee80211_add_htcap_body(uint8_t *frm, struct
ieee80211_node *ni)
caps |= IEEE80211_HTCAP_CHWIDTH40;
else
caps &= ~IEEE80211_HTCAP_CHWIDTH40;
- /* use advertised setting (XXX locally constraint) */
- rxmax = MS(ni->ni_htparam, IEEE80211_HTCAP_MAXRXAMPDU);
- density = MS(ni->ni_htparam, IEEE80211_HTCAP_MPDUDENSITY);
/*
* NB: Hardware might support HT40 on some but not all
@@ -2672,9 +2669,11 @@ ieee80211_add_htcap_body(uint8_t *frm, struct
ieee80211_node *ni)
caps |= IEEE80211_HTCAP_CHWIDTH40;
else
caps &= ~IEEE80211_HTCAP_CHWIDTH40;
- rxmax = vap->iv_ampdu_rxmax;
- density = vap->iv_ampdu_density;
}
+
+ rxmax = vap->iv_ampdu_rxmax;
+ density = vap->iv_ampdu_density;
+
/* adjust short GI based on channel and config */
if ((vap->iv_flags_ht & IEEE80211_FHT_SHORTGI20) == 0)
caps &= ~IEEE80211_HTCAP_SHORTGI20;
>Release-Note:
>Audit-Trail:
>Unformatted:
___
freebsd-bugs@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-bugs
To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"