From owner-p4-projects@FreeBSD.ORG Wed Feb 14 23:01:26 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9E1A416A409; Wed, 14 Feb 2007 23:01:26 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 6F93D16A406 for ; Wed, 14 Feb 2007 23:01:26 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 5FBA713C474 for ; Wed, 14 Feb 2007 23:01:26 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id l1EN1QwX024028 for ; Wed, 14 Feb 2007 23:01:26 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id l1EN1Q43024013 for perforce@freebsd.org; Wed, 14 Feb 2007 23:01:26 GMT (envelope-from sam@freebsd.org) Date: Wed, 14 Feb 2007 23:01:26 GMT Message-Id: <200702142301.l1EN1Q43024013@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Cc: Subject: PERFORCE change 114517 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 14 Feb 2007 23:01:26 -0000 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 &&