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