summaryrefslogtreecommitdiffstats
path: root/sys/net80211
diff options
context:
space:
mode:
authorbschmidt <bschmidt@FreeBSD.org>2010-08-14 20:12:10 +0000
committerbschmidt <bschmidt@FreeBSD.org>2010-08-14 20:12:10 +0000
commit267bcceb3d9d51963daee114cc9bf9489dea3825 (patch)
tree91ed3ee979937a33ff768793756b4e3080f66e14 /sys/net80211
parent50862398d57767264019513ed29d01032aff7037 (diff)
downloadFreeBSD-src-267bcceb3d9d51963daee114cc9bf9489dea3825.zip
FreeBSD-src-267bcceb3d9d51963daee114cc9bf9489dea3825.tar.gz
Introduce IEEE80211_C_RATECTL, drivers which use the ratectl framework
should set this capability. MFC after: 2 weeks
Diffstat (limited to 'sys/net80211')
-rw-r--r--sys/net80211/ieee80211.c3
-rw-r--r--sys/net80211/ieee80211_node.c6
-rw-r--r--sys/net80211/ieee80211_sta.c3
-rw-r--r--sys/net80211/ieee80211_var.h3
4 files changed, 10 insertions, 5 deletions
diff --git a/sys/net80211/ieee80211.c b/sys/net80211/ieee80211.c
index 97ff7c2..6848824 100644
--- a/sys/net80211/ieee80211.c
+++ b/sys/net80211/ieee80211.c
@@ -487,7 +487,8 @@ ieee80211_vap_setup(struct ieee80211com *ic, struct ieee80211vap *vap,
ieee80211_regdomain_vattach(vap);
ieee80211_radiotap_vattach(vap);
- ieee80211_ratectl_set(vap, IEEE80211_RATECTL_AMRR);
+ if (vap->iv_caps & IEEE80211_C_RATECTL)
+ ieee80211_ratectl_set(vap, IEEE80211_RATECTL_AMRR);
return 0;
}
diff --git a/sys/net80211/ieee80211_node.c b/sys/net80211/ieee80211_node.c
index 2c1acff..e3c2769 100644
--- a/sys/net80211/ieee80211_node.c
+++ b/sys/net80211/ieee80211_node.c
@@ -817,7 +817,8 @@ ieee80211_sta_join(struct ieee80211vap *vap, struct ieee80211_channel *chan,
if (ieee80211_iserp_rateset(&ni->ni_rates))
ni->ni_flags |= IEEE80211_NODE_ERP;
ieee80211_node_setuptxparms(ni);
- ieee80211_ratectl_node_init(ni);
+ if (vap->iv_caps & IEEE80211_C_RATECTL)
+ ieee80211_ratectl_node_init(ni);
return ieee80211_sta_join1(ieee80211_ref_node(ni));
}
@@ -1037,7 +1038,8 @@ node_free(struct ieee80211_node *ni)
{
struct ieee80211com *ic = ni->ni_ic;
- ieee80211_ratectl_node_deinit(ni);
+ if (ni->ni_vap->iv_caps & IEEE80211_C_RATECTL)
+ ieee80211_ratectl_node_deinit(ni);
ic->ic_node_cleanup(ni);
ieee80211_ies_cleanup(&ni->ni_ies);
ieee80211_psq_cleanup(&ni->ni_psq);
diff --git a/sys/net80211/ieee80211_sta.c b/sys/net80211/ieee80211_sta.c
index f93c3ed..5764fa0 100644
--- a/sys/net80211/ieee80211_sta.c
+++ b/sys/net80211/ieee80211_sta.c
@@ -1597,7 +1597,8 @@ sta_recv_mgmt(struct ieee80211_node *ni, struct mbuf *m0,
IEEE80211_F_JOIN | IEEE80211_F_DOBRS);
ieee80211_setup_basic_htrates(ni, htinfo);
ieee80211_node_setuptxparms(ni);
- ieee80211_ratectl_node_init(ni);
+ if (vap->iv_caps & IEEE80211_C_RATECTL)
+ ieee80211_ratectl_node_init(ni);
} else {
#ifdef IEEE80211_SUPPORT_SUPERG
if (IEEE80211_ATH_CAP(vap, ni, IEEE80211_NODE_ATH))
diff --git a/sys/net80211/ieee80211_var.h b/sys/net80211/ieee80211_var.h
index eea8dbe..c80ee9e 100644
--- a/sys/net80211/ieee80211_var.h
+++ b/sys/net80211/ieee80211_var.h
@@ -601,7 +601,8 @@ MALLOC_DECLARE(M_80211_VAP);
#define IEEE80211_C_MONITOR 0x00010000 /* CAPABILITY: monitor mode */
#define IEEE80211_C_DFS 0x00020000 /* CAPABILITY: DFS/radar avail*/
#define IEEE80211_C_MBSS 0x00040000 /* CAPABILITY: MBSS available */
-/* 0x7c0000 available */
+#define IEEE80211_C_RATECTL 0x00080000 /* CAPABILITY: use ratectl */
+/* 0x700000 available */
#define IEEE80211_C_WPA1 0x00800000 /* CAPABILITY: WPA1 avail */
#define IEEE80211_C_WPA2 0x01000000 /* CAPABILITY: WPA2 avail */
#define IEEE80211_C_WPA 0x01800000 /* CAPABILITY: WPA1+WPA2 avail*/
OpenPOWER on IntegriCloud