ieee80211_node.c (184279) | ieee80211_node.c (184288) |
---|---|
1/*- 2 * Copyright (c) 2001 Atsushi Onoe 3 * Copyright (c) 2002-2008 Sam Leffler, Errno Consulting 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 11 unchanged lines hidden (view full) --- 20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 */ 26 27#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 2001 Atsushi Onoe 3 * Copyright (c) 2002-2008 Sam Leffler, Errno Consulting 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 11 unchanged lines hidden (view full) --- 20 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 21 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 */ 26 27#include <sys/cdefs.h> |
28__FBSDID("$FreeBSD: head/sys/net80211/ieee80211_node.c 184279 2008-10-25 23:44:25Z sam $"); | 28__FBSDID("$FreeBSD: head/sys/net80211/ieee80211_node.c 184288 2008-10-26 01:04:46Z sam $"); |
29 30#include "opt_wlan.h" 31 32#include <sys/param.h> 33#include <sys/systm.h> 34#include <sys/mbuf.h> 35#include <sys/malloc.h> 36#include <sys/kernel.h> --- 862 unchanged lines hidden (view full) --- 899 * should always be removed from the table so not found but 900 * do it just in case. 901 */ 902 ni->ni_flags &= ~IEEE80211_NODE_AREF; 903 904 /* 905 * Drain power save queue and, if needed, clear TIM. 906 */ | 29 30#include "opt_wlan.h" 31 32#include <sys/param.h> 33#include <sys/systm.h> 34#include <sys/mbuf.h> 35#include <sys/malloc.h> 36#include <sys/kernel.h> --- 862 unchanged lines hidden (view full) --- 899 * should always be removed from the table so not found but 900 * do it just in case. 901 */ 902 ni->ni_flags &= ~IEEE80211_NODE_AREF; 903 904 /* 905 * Drain power save queue and, if needed, clear TIM. 906 */ |
907 if (ieee80211_node_saveq_drain(ni) != 0 && vap->iv_set_tim != NULL) | 907 if (ieee80211_node_psq_drain(ni) != 0 && vap->iv_set_tim != NULL) |
908 vap->iv_set_tim(ni, 0); 909 910 ni->ni_associd = 0; 911 if (ni->ni_challenge != NULL) { 912 FREE(ni->ni_challenge, M_80211_NODE); 913 ni->ni_challenge = NULL; 914 } 915 /* --- 22 unchanged lines hidden (view full) --- 938 939static void 940node_free(struct ieee80211_node *ni) 941{ 942 struct ieee80211com *ic = ni->ni_ic; 943 944 ic->ic_node_cleanup(ni); 945 ieee80211_ies_cleanup(&ni->ni_ies); | 908 vap->iv_set_tim(ni, 0); 909 910 ni->ni_associd = 0; 911 if (ni->ni_challenge != NULL) { 912 FREE(ni->ni_challenge, M_80211_NODE); 913 ni->ni_challenge = NULL; 914 } 915 /* --- 22 unchanged lines hidden (view full) --- 938 939static void 940node_free(struct ieee80211_node *ni) 941{ 942 struct ieee80211com *ic = ni->ni_ic; 943 944 ic->ic_node_cleanup(ni); 945 ieee80211_ies_cleanup(&ni->ni_ies); |
946 IEEE80211_NODE_SAVEQ_DESTROY(ni); | 946 ieee80211_psq_cleanup(&ni->ni_psq); |
947 IEEE80211_NODE_WDSQ_DESTROY(ni); 948 FREE(ni, M_80211_NODE); 949} 950 951static void 952node_age(struct ieee80211_node *ni) 953{ 954 struct ieee80211vap *vap = ni->ni_vap; 955#if 0 956 IEEE80211_NODE_LOCK_ASSERT(&ic->ic_sta); 957#endif 958 /* 959 * Age frames on the power save queue. 960 */ | 947 IEEE80211_NODE_WDSQ_DESTROY(ni); 948 FREE(ni, M_80211_NODE); 949} 950 951static void 952node_age(struct ieee80211_node *ni) 953{ 954 struct ieee80211vap *vap = ni->ni_vap; 955#if 0 956 IEEE80211_NODE_LOCK_ASSERT(&ic->ic_sta); 957#endif 958 /* 959 * Age frames on the power save queue. 960 */ |
961 if (ieee80211_node_saveq_age(ni) != 0 && 962 IEEE80211_NODE_SAVEQ_QLEN(ni) == 0 && 963 vap->iv_set_tim != NULL) | 961 if (ieee80211_node_psq_age(ni) != 0 && 962 ni->ni_psq.psq_len == 0 && vap->iv_set_tim != NULL) |
964 vap->iv_set_tim(ni, 0); 965 /* 966 * Age frames on the wds pending queue. 967 */ 968 if (IEEE80211_NODE_WDSQ_QLEN(ni) != 0) 969 ieee80211_node_wdsq_age(ni); 970 /* 971 * Age out HT resources (e.g. frames on the --- 54 unchanged lines hidden (view full) --- 1026 ni->ni_authmode = IEEE80211_AUTH_OPEN; 1027 ni->ni_txpower = ic->ic_txpowlimit; /* max power */ 1028 ni->ni_txparms = &vap->iv_txparms[ieee80211_chan2mode(ic->ic_curchan)]; 1029 ieee80211_crypto_resetkey(vap, &ni->ni_ucastkey, IEEE80211_KEYIX_NONE); 1030 ni->ni_avgrssi = IEEE80211_RSSI_DUMMY_MARKER; 1031 ni->ni_inact_reload = nt->nt_inact_init; 1032 ni->ni_inact = ni->ni_inact_reload; 1033 ni->ni_ath_defkeyix = 0x7fff; | 963 vap->iv_set_tim(ni, 0); 964 /* 965 * Age frames on the wds pending queue. 966 */ 967 if (IEEE80211_NODE_WDSQ_QLEN(ni) != 0) 968 ieee80211_node_wdsq_age(ni); 969 /* 970 * Age out HT resources (e.g. frames on the --- 54 unchanged lines hidden (view full) --- 1025 ni->ni_authmode = IEEE80211_AUTH_OPEN; 1026 ni->ni_txpower = ic->ic_txpowlimit; /* max power */ 1027 ni->ni_txparms = &vap->iv_txparms[ieee80211_chan2mode(ic->ic_curchan)]; 1028 ieee80211_crypto_resetkey(vap, &ni->ni_ucastkey, IEEE80211_KEYIX_NONE); 1029 ni->ni_avgrssi = IEEE80211_RSSI_DUMMY_MARKER; 1030 ni->ni_inact_reload = nt->nt_inact_init; 1031 ni->ni_inact = ni->ni_inact_reload; 1032 ni->ni_ath_defkeyix = 0x7fff; |
1034 IEEE80211_NODE_SAVEQ_INIT(ni, "unknown"); | 1033 ieee80211_psq_init(&ni->ni_psq, "unknown"); |
1035 IEEE80211_NODE_WDSQ_INIT(ni, "unknown"); 1036 1037 IEEE80211_NODE_LOCK(nt); 1038 TAILQ_INSERT_TAIL(&nt->nt_node, ni, ni_list); 1039 LIST_INSERT_HEAD(&nt->nt_hash[hash], ni, ni_hash); 1040 ni->ni_table = nt; 1041 ni->ni_vap = vap; 1042 ni->ni_ic = ic; --- 33 unchanged lines hidden (view full) --- 1076 IEEE80211_ADDR_COPY(ni->ni_bssid, bss->ni_bssid); 1077 ieee80211_node_initref(ni); /* mark referenced */ 1078 /* NB: required by ieee80211_fix_rate */ 1079 ieee80211_node_set_chan(ni, bss->ni_chan); 1080 ieee80211_crypto_resetkey(vap, &ni->ni_ucastkey, 1081 IEEE80211_KEYIX_NONE); 1082 ni->ni_txpower = bss->ni_txpower; 1083 /* XXX optimize away */ | 1034 IEEE80211_NODE_WDSQ_INIT(ni, "unknown"); 1035 1036 IEEE80211_NODE_LOCK(nt); 1037 TAILQ_INSERT_TAIL(&nt->nt_node, ni, ni_list); 1038 LIST_INSERT_HEAD(&nt->nt_hash[hash], ni, ni_hash); 1039 ni->ni_table = nt; 1040 ni->ni_vap = vap; 1041 ni->ni_ic = ic; --- 33 unchanged lines hidden (view full) --- 1075 IEEE80211_ADDR_COPY(ni->ni_bssid, bss->ni_bssid); 1076 ieee80211_node_initref(ni); /* mark referenced */ 1077 /* NB: required by ieee80211_fix_rate */ 1078 ieee80211_node_set_chan(ni, bss->ni_chan); 1079 ieee80211_crypto_resetkey(vap, &ni->ni_ucastkey, 1080 IEEE80211_KEYIX_NONE); 1081 ni->ni_txpower = bss->ni_txpower; 1082 /* XXX optimize away */ |
1084 IEEE80211_NODE_SAVEQ_INIT(ni, "unknown"); | 1083 ieee80211_psq_init(&ni->ni_psq, "unknown"); |
1085 IEEE80211_NODE_WDSQ_INIT(ni, "unknown"); 1086 } else { 1087 /* XXX msg */ 1088 vap->iv_stats.is_rx_nodealloc++; 1089 } 1090 return ni; 1091} 1092 --- 1487 unchanged lines hidden --- | 1084 IEEE80211_NODE_WDSQ_INIT(ni, "unknown"); 1085 } else { 1086 /* XXX msg */ 1087 vap->iv_stats.is_rx_nodealloc++; 1088 } 1089 return ni; 1090} 1091 --- 1487 unchanged lines hidden --- |