svn commit: r184286 - head/sys/net80211

Sam Leffler sam at FreeBSD.org
Sat Oct 25 17:55:39 PDT 2008


Author: sam
Date: Sun Oct 26 00:55:38 2008
New Revision: 184286
URL: http://svn.freebsd.org/changeset/base/184286

Log:
  introduce M_ENCAP flag to mark packets encapsulated w/ an 802.11 header

Modified:
  head/sys/net80211/ieee80211_freebsd.h
  head/sys/net80211/ieee80211_output.c

Modified: head/sys/net80211/ieee80211_freebsd.h
==============================================================================
--- head/sys/net80211/ieee80211_freebsd.h	Sun Oct 26 00:52:26 2008	(r184285)
+++ head/sys/net80211/ieee80211_freebsd.h	Sun Oct 26 00:55:38 2008	(r184286)
@@ -239,6 +239,7 @@ void	ieee80211_vap_destroy(struct ieee80
 struct mbuf *ieee80211_getmgtframe(uint8_t **frm, int headroom, int pktlen);
 
 /* tx path usage */
+#define	M_ENCAP		M_PROTO1		/* 802.11 encap done */
 #define	M_WDS		M_PROTO2		/* WDS frame */
 #define	M_EAPOL		M_PROTO3		/* PAE/EAPOL frame */
 #define	M_PWR_SAV	M_PROTO4		/* bypass PS handling */
@@ -247,7 +248,7 @@ struct mbuf *ieee80211_getmgtframe(uint8
 #define	M_TXCB		M_PROTO7		/* do tx complete callback */
 #define	M_AMPDU_MPDU	M_PROTO8		/* ok for A-MPDU aggregation */
 #define	M_80211_TX \
-	(M_WDS|M_EAPOL|M_PWR_SAV|M_MORE_DATA|M_FF|M_TXCB|M_AMPDU_MPDU)
+	(M_ENCAP|M_WDS|M_EAPOL|M_PWR_SAV|M_MORE_DATA|M_FF|M_TXCB|M_AMPDU_MPDU)
 
 /* rx path usage */
 #define	M_AMPDU		M_PROTO1		/* A-MPDU subframe */

Modified: head/sys/net80211/ieee80211_output.c
==============================================================================
--- head/sys/net80211/ieee80211_output.c	Sun Oct 26 00:52:26 2008	(r184285)
+++ head/sys/net80211/ieee80211_output.c	Sun Oct 26 00:55:38 2008	(r184286)
@@ -507,6 +507,7 @@ ieee80211_mgmt_output(struct ieee80211_n
 		    "encrypting frame (%s)", __func__);
 		wh->i_fc[1] |= IEEE80211_FC1_WEP;
 	}
+	m->m_flags |= M_ENCAP;		/* mark encapsulated */
 
 	KASSERT(type != IEEE80211_FC0_SUBTYPE_PROBE_RESP, ("probe response?"));
 	M_WME_SETAC(m, params->ibp_pri);
@@ -614,6 +615,7 @@ ieee80211_send_nulldata(struct ieee80211
 			wh->i_fc[1] |= IEEE80211_FC1_PWR_MGT;
 	}
 	m->m_len = m->m_pkthdr.len = hdrlen;
+	m->m_flags |= M_ENCAP;		/* mark encapsulated */
 
 	M_WME_SETAC(m, WME_AC_BE);
 
@@ -1151,6 +1153,8 @@ ieee80211_encap(struct ieee80211_node *n
 	    key != NULL ? key->wk_cipher->ic_header : 0, vap->iv_fragthreshold))
 		goto bad;
 
+	m->m_flags |= M_ENCAP;		/* mark encapsulated */
+
 	IEEE80211_NODE_STAT(ni, tx_data);
 	if (IEEE80211_IS_MULTICAST(wh->i_addr1))
 		IEEE80211_NODE_STAT(ni, tx_mcast);
@@ -1770,6 +1774,7 @@ ieee80211_send_probereq(struct ieee80211
 	     IEEE80211_FC0_TYPE_MGT | IEEE80211_FC0_SUBTYPE_PROBE_REQ,
 	     IEEE80211_NONQOS_TID, sa, da, bssid);
 	/* XXX power management? */
+	m->m_flags |= M_ENCAP;		/* mark encapsulated */
 
 	M_WME_SETAC(m, WME_AC_BE);
 
@@ -2359,6 +2364,7 @@ ieee80211_send_proberesp(struct ieee8021
 	     IEEE80211_FC0_TYPE_MGT | IEEE80211_FC0_SUBTYPE_PROBE_RESP,
 	     IEEE80211_NONQOS_TID, vap->iv_myaddr, da, bss->ni_bssid);
 	/* XXX power management? */
+	m->m_flags |= M_ENCAP;		/* mark encapsulated */
 
 	M_WME_SETAC(m, WME_AC_BE);
 


More information about the svn-src-head mailing list