Date: Wed, 14 Feb 2007 23:01:26 GMT From: Sam Leffler <sam@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 114517 for review Message-ID: <200702142301.l1EN1Q43024013@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=114517 Change 114517 by sam@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 &&
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200702142301.l1EN1Q43024013>