PERFORCE change 114517 for review

Sam Leffler sam at FreeBSD.org
Wed Feb 14 23:01:26 UTC 2007


http://perforce.freebsd.org/chv.cgi?CH=114517

Change 114517 by sam at sam_ebb on 2007/02/14 23:01:14

	Introduce IEEE80211_NONQOS_TID as the index in the tx/rx
	sequence number arrays for non-QoS traffic and define it
	to be the last entry.  This insures we don't collide with
	QoS usage though the spec says you're not allowed to mix
	QoS and non-QoS traffic.
	Obtained from:	Atheros

Affected files ...

.. //depot/projects/wifi/sys/net80211/ieee80211_input.c#85 edit
.. //depot/projects/wifi/sys/net80211/ieee80211_ioctl.c#66 edit
.. //depot/projects/wifi/sys/net80211/ieee80211_node.c#81 edit
.. //depot/projects/wifi/sys/net80211/ieee80211_node.h#40 edit
.. //depot/projects/wifi/sys/net80211/ieee80211_output.c#64 edit

Differences ...

==== //depot/projects/wifi/sys/net80211/ieee80211_input.c#85 (text+ko) ====

@@ -232,7 +232,7 @@
 					ic->ic_wme.wme_hipri_traffic++;
 				tid++;
 			} else
-				tid = 0;
+				tid = IEEE80211_NONQOS_TID;
 			rxseq = le16toh(*(u_int16_t *)wh->i_seq);
 			if ((wh->i_fc[1] & IEEE80211_FC1_RETRY) &&
 			    SEQ_LEQ(rxseq, ni->ni_rxseqs[tid])) {

==== //depot/projects/wifi/sys/net80211/ieee80211_ioctl.c#66 (text+ko) ====

@@ -590,8 +590,8 @@
 		memcpy(si->isi_txseqs, ni->ni_txseqs, sizeof(ni->ni_txseqs));
 		memcpy(si->isi_rxseqs, ni->ni_rxseqs, sizeof(ni->ni_rxseqs));
 	} else {
-		si->isi_txseqs[0] = ni->ni_txseqs[0];
-		si->isi_rxseqs[0] = ni->ni_rxseqs[0];
+		si->isi_txseqs[0] = ni->ni_txseqs[IEEE80211_NONQOS_TID];
+		si->isi_rxseqs[0] = ni->ni_rxseqs[IEEE80211_NONQOS_TID];
 	}
 	/* NB: leave all cases in case we relax ni_associd == 0 check */
 	if (ieee80211_node_is_authorized(ni))

==== //depot/projects/wifi/sys/net80211/ieee80211_node.c#81 (text+ko) ====

@@ -1584,9 +1584,9 @@
 	printf("\tassocid 0x%x txpower %u vlan %u\n",
 		ni->ni_associd, ni->ni_txpower, ni->ni_vlan);
 	printf("\ttxseq %u rxseq %u fragno %u rxfragstamp %u\n",
-		ni->ni_txseqs[0],
-		ni->ni_rxseqs[0] >> IEEE80211_SEQ_SEQ_SHIFT,
-		ni->ni_rxseqs[0] & IEEE80211_SEQ_FRAG_MASK,
+		ni->ni_txseqs[IEEE80211_NONQOS_TID],
+		ni->ni_rxseqs[IEEE80211_NONQOS_TID] >> IEEE80211_SEQ_SEQ_SHIFT,
+		ni->ni_rxseqs[IEEE80211_NONQOS_TID] & IEEE80211_SEQ_FRAG_MASK,
 		ni->ni_rxfragstamp);
 	printf("\trstamp %u rssi %d noise %d intval %u capinfo 0x%x\n",
 		ni->ni_rstamp, ni->ni_rssi, ni->ni_noise,

==== //depot/projects/wifi/sys/net80211/ieee80211_node.h#40 (text+ko) ====

@@ -119,6 +119,7 @@
 	u_int8_t		*ni_rsn_ie;	/* captured RSN ie */
 	u_int8_t		*ni_wme_ie;	/* captured WME ie */
 	u_int8_t		*ni_ath_ie;	/* captured Atheros ie */
+#define	IEEE80211_NONQOS_TID	16		/* index for non-QoS sta */
 	u_int16_t		ni_txseqs[17];	/* tx seq per-tid */
 	u_int16_t		ni_rxseqs[17];	/* rx seq previous per-tid*/
 	u_int32_t		ni_rxfragstamp;	/* time stamp of last rx frag */

==== //depot/projects/wifi/sys/net80211/ieee80211_output.c#64 (text+ko) ====

@@ -143,8 +143,8 @@
 	*(u_int16_t *)&wh->i_dur[0] = 0;
 	/* NB: use non-QoS tid */
 	*(u_int16_t *)&wh->i_seq[0] =
-	    htole16(ni->ni_txseqs[0] << IEEE80211_SEQ_SEQ_SHIFT);
-	ni->ni_txseqs[0]++;
+	    htole16(ni->ni_txseqs[IEEE80211_NONQOS_TID] << IEEE80211_SEQ_SEQ_SHIFT);
+	ni->ni_txseqs[IEEE80211_NONQOS_TID]++;
 #undef WH4
 }
 
@@ -807,8 +807,8 @@
 		ni->ni_txseqs[tid]++;
 	} else {
 		*(u_int16_t *)wh->i_seq =
-		    htole16(ni->ni_txseqs[0] << IEEE80211_SEQ_SEQ_SHIFT);
-		ni->ni_txseqs[0]++;
+		    htole16(ni->ni_txseqs[IEEE80211_NONQOS_TID] << IEEE80211_SEQ_SEQ_SHIFT);
+		ni->ni_txseqs[IEEE80211_NONQOS_TID]++;
 	}
 	/* check if xmit fragmentation is required */
 	txfrag = (m->m_pkthdr.len > ic->ic_fragthreshold &&


More information about the p4-projects mailing list