svn commit: r205513 - head/sys/net80211

Rui Paulo rpaulo at FreeBSD.org
Tue Mar 23 12:03:09 UTC 2010


Author: rpaulo
Date: Tue Mar 23 12:03:09 2010
New Revision: 205513
URL: http://svn.freebsd.org/changeset/base/205513

Log:
  Add a new field for extended HT capabilities.
  
  Submitted by:	Alexander Egorenkov <egorenar at gmail.com>
  MFC after:	2 weeks
  Sponsored by:	iXsystems, inc.

Modified:
  head/sys/net80211/ieee80211.c
  head/sys/net80211/ieee80211_ht.c
  head/sys/net80211/ieee80211_var.h

Modified: head/sys/net80211/ieee80211.c
==============================================================================
--- head/sys/net80211/ieee80211.c	Tue Mar 23 11:33:08 2010	(r205512)
+++ head/sys/net80211/ieee80211.c	Tue Mar 23 12:03:09 2010	(r205513)
@@ -404,6 +404,7 @@ ieee80211_vap_setup(struct ieee80211com 
 	vap->iv_flags_ven = ic->ic_flags_ven;
 	vap->iv_caps = ic->ic_caps &~ IEEE80211_C_OPMODE;
 	vap->iv_htcaps = ic->ic_htcaps;
+	vap->iv_htextcaps = ic->ic_htextcaps;
 	vap->iv_opmode = opmode;
 	vap->iv_caps |= ieee80211_opcap[opmode];
 	switch (opmode) {

Modified: head/sys/net80211/ieee80211_ht.c
==============================================================================
--- head/sys/net80211/ieee80211_ht.c	Tue Mar 23 11:33:08 2010	(r205512)
+++ head/sys/net80211/ieee80211_ht.c	Tue Mar 23 12:03:09 2010	(r205513)
@@ -2346,7 +2346,7 @@ ieee80211_add_htcap_body(uint8_t *frm, s
 	frm += 2;				\
 } while (0)
 	struct ieee80211vap *vap = ni->ni_vap;
-	uint16_t caps;
+	uint16_t caps, extcaps;
 	int rxmax, density;
 
 	/* HT capabilities */
@@ -2404,8 +2404,17 @@ ieee80211_add_htcap_body(uint8_t *frm, s
 	 */
 	ieee80211_set_htrates(frm, &ieee80211_rateset_11n);
 
-	frm += sizeof(struct ieee80211_ie_htcap) -
+	frm += __offsetof(struct ieee80211_ie_htcap, hc_extcap) -
 		__offsetof(struct ieee80211_ie_htcap, hc_mcsset);
+
+	/* HT extended capabilities */
+	extcaps = vap->iv_htextcaps & 0xffff;
+
+	ADDSHORT(frm, extcaps);
+
+	frm += sizeof(struct ieee80211_ie_htcap) -
+		__offsetof(struct ieee80211_ie_htcap, hc_txbf);
+
 	return frm;
 #undef ADDSHORT
 }

Modified: head/sys/net80211/ieee80211_var.h
==============================================================================
--- head/sys/net80211/ieee80211_var.h	Tue Mar 23 11:33:08 2010	(r205512)
+++ head/sys/net80211/ieee80211_var.h	Tue Mar 23 12:03:09 2010	(r205513)
@@ -137,6 +137,7 @@ struct ieee80211com {
 	uint32_t		ic_flags_ven;	/* vendor state flags */
 	uint32_t		ic_caps;	/* capabilities */
 	uint32_t		ic_htcaps;	/* HT capabilities */
+	uint32_t		ic_htextcaps;	/* HT extended capabilities */
 	uint32_t		ic_cryptocaps;	/* crypto capabilities */
 	uint8_t			ic_modecaps[2];	/* set of mode capabilities */
 	uint8_t			ic_promisc;	/* vap's needing promisc mode */
@@ -313,7 +314,8 @@ struct ieee80211com {
 				    int batimeout, int baseqctl);
 	void			(*ic_ampdu_rx_stop)(struct ieee80211_node *,
 				    struct ieee80211_rx_ampdu *);
-	uint64_t		ic_spare[8];
+	uint64_t		ic_spare[7];
+	uint32_t		ic_spare2;
 };
 
 struct ieee80211_aclator;
@@ -340,6 +342,7 @@ struct ieee80211vap {
 	uint32_t		iv_flags_ven;	/* vendor state flags */
 	uint32_t		iv_caps;	/* capabilities */
 	uint32_t		iv_htcaps;	/* HT capabilities */
+	uint32_t		iv_htextcaps;	/* HT extended capabilities */
 	enum ieee80211_opmode	iv_opmode;	/* operation mode */
 	enum ieee80211_state	iv_state;	/* state machine state */
 	enum ieee80211_state	iv_nstate;	/* pending state */


More information about the svn-src-head mailing list