diff options
author | rpaulo <rpaulo@FreeBSD.org> | 2010-03-18 11:06:38 +0000 |
---|---|---|
committer | rpaulo <rpaulo@FreeBSD.org> | 2010-03-18 11:06:38 +0000 |
commit | 1afdf5764e23446aae43fcbc2a8d90d1142caf2c (patch) | |
tree | bab574d05eb7a162ad95d8f073269744c881e2f5 /sys/net80211/ieee80211_mesh.c | |
parent | abd6b4ebb704c554021e3532c567b55508cb9862 (diff) | |
download | FreeBSD-src-1afdf5764e23446aae43fcbc2a8d90d1142caf2c.zip FreeBSD-src-1afdf5764e23446aae43fcbc2a8d90d1142caf2c.tar.gz |
Fix a couple of bugs with 802.11n:
o Process the BAR frame on the adhoc, mesh and sta modes
o Fix the format of the ADDBA reply frame
o Fix references to the spec section numbers
Also, print the all the MCS rates in bootverbose.
Sponsored by: iXsystems, Inc.
Obtained from: //depot/user/rpaulo/80211n/...
Diffstat (limited to 'sys/net80211/ieee80211_mesh.c')
-rw-r--r-- | sys/net80211/ieee80211_mesh.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/sys/net80211/ieee80211_mesh.c b/sys/net80211/ieee80211_mesh.c index 417337b..1086113 100644 --- a/sys/net80211/ieee80211_mesh.c +++ b/sys/net80211/ieee80211_mesh.c @@ -82,6 +82,7 @@ static void mesh_forward(struct ieee80211vap *, struct mbuf *, static int mesh_input(struct ieee80211_node *, struct mbuf *, int, int); static void mesh_recv_mgmt(struct ieee80211_node *, struct mbuf *, int, int, int); +static void mesh_recv_ctl(struct ieee80211_node *, struct mbuf *, int); static void mesh_peer_timeout_setup(struct ieee80211_node *); static void mesh_peer_timeout_backoff(struct ieee80211_node *); static void mesh_peer_timeout_cb(void *); @@ -520,6 +521,7 @@ mesh_vattach(struct ieee80211vap *vap) vap->iv_input = mesh_input; vap->iv_opdetach = mesh_vdetach; vap->iv_recv_mgmt = mesh_recv_mgmt; + vap->iv_recv_ctl = mesh_recv_ctl; ms = malloc(sizeof(struct ieee80211_mesh_state), M_80211_VAP, M_NOWAIT | M_ZERO); if (ms == NULL) { @@ -1535,6 +1537,17 @@ mesh_recv_mgmt(struct ieee80211_node *ni, struct mbuf *m0, int subtype, } } +static void +mesh_recv_ctl(struct ieee80211_node *ni, struct mbuf *m, int subtype) +{ + + switch (subtype) { + case IEEE80211_FC0_SUBTYPE_BAR: + ieee80211_recv_bar(ni, m); + break; + } +} + /* * Parse meshpeering action ie's for open+confirm frames; the * important bits are returned in the supplied structure. |