[Madwifi-cvs] madwifi/net80211 ieee80211_node.c,1.8,1.9 ieee80211_var.h,1.4,1.5 version.h,1.7,1.8
Status: Beta
Brought to you by:
otaku
From: Sam L. <sam...@us...> - 2004-10-20 19:39:47
|
Update of /cvsroot/madwifi/madwifi/net80211 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20916/net80211 Modified Files: ieee80211_node.c ieee80211_var.h version.h Log Message: Change node memory management api to add a cleanup method that is invoked separately from free. Change the ath driver to use cleanup instead of free. This fixes a problem where driver-private node state was not being cleanup up when operating in station mode. Obtained from: FreeBSD Index: ieee80211_var.h =================================================================== RCS file: /cvsroot/madwifi/madwifi/net80211/ieee80211_var.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** ieee80211_var.h 18 Aug 2004 01:17:22 -0000 1.4 --- ieee80211_var.h 20 Oct 2004 19:39:35 -0000 1.5 *************** *** 252,255 **** --- 252,257 ---- void (*ic_node_free)(struct ieee80211com *, struct ieee80211_node *); + void (*ic_node_cleanup)(struct ieee80211com *, + struct ieee80211_node *); void (*ic_node_copy)(struct ieee80211com *, struct ieee80211_node *, Index: ieee80211_node.c =================================================================== RCS file: /cvsroot/madwifi/madwifi/net80211/ieee80211_node.c,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** ieee80211_node.c 14 Sep 2004 02:06:06 -0000 1.8 --- ieee80211_node.c 20 Oct 2004 19:39:35 -0000 1.9 *************** *** 54,58 **** static struct ieee80211_node *ieee80211_node_alloc(struct ieee80211com *); static void node_cleanup(struct ieee80211com *, struct ieee80211_node *); ! static void ieee80211_node_free(struct ieee80211com *, struct ieee80211_node *); static void ieee80211_node_copy(struct ieee80211com *, struct ieee80211_node *, const struct ieee80211_node *); --- 54,58 ---- static struct ieee80211_node *ieee80211_node_alloc(struct ieee80211com *); static void node_cleanup(struct ieee80211com *, struct ieee80211_node *); ! static void node_free(struct ieee80211com *, struct ieee80211_node *); static void ieee80211_node_copy(struct ieee80211com *, struct ieee80211_node *, const struct ieee80211_node *); *************** *** 75,79 **** TAILQ_INIT(&ic->ic_node); ic->ic_node_alloc = ieee80211_node_alloc; ! ic->ic_node_free = ieee80211_node_free; ic->ic_node_copy = ieee80211_node_copy; ic->ic_node_getrssi = ieee80211_node_getrssi; --- 75,80 ---- TAILQ_INIT(&ic->ic_node); ic->ic_node_alloc = ieee80211_node_alloc; ! ic->ic_node_free = node_free; ! ic->ic_node_cleanup = node_cleanup; ic->ic_node_copy = ieee80211_node_copy; ic->ic_node_getrssi = ieee80211_node_getrssi; *************** *** 104,108 **** struct ieee80211_rsnparms *rsn; ! ni = (*ic->ic_node_alloc)(ic); KASSERT(ni != NULL, ("unable to setup inital BSS node")); /* --- 105,109 ---- struct ieee80211_rsnparms *rsn; ! ni = ic->ic_node_alloc(ic); KASSERT(ni != NULL, ("unable to setup inital BSS node")); /* *************** *** 155,159 **** if (ic->ic_bss != NULL) { ! (*ic->ic_node_free)(ic, ic->ic_bss); ic->ic_bss = NULL; } --- 156,160 ---- if (ic->ic_bss != NULL) { ! ic->ic_node_free(ic, ic->ic_bss); ic->ic_bss = NULL; } *************** *** 531,535 **** /* XXX leak existing state in ic_bss? */ ! (*ic->ic_node_copy)(ic, ic->ic_bss, selbs); /* * Set the erp state (mostly the slot time) to deal with --- 532,536 ---- /* XXX leak existing state in ic_bss? */ ! ic->ic_node_copy(ic, ic->ic_bss, selbs); /* * Set the erp state (mostly the slot time) to deal with *************** *** 571,575 **** { ! node_cleanup(ic, ni); ieee80211_notify_node_leave(ic, ni); } --- 572,576 ---- { ! ic->ic_node_cleanup(ic, ni); ieee80211_notify_node_leave(ic, ni); } *************** *** 618,624 **** static void ! ieee80211_node_free(struct ieee80211com *ic, struct ieee80211_node *ni) { ! node_cleanup(ic, ni); FREE(ni, M_80211_NODE); } --- 619,625 ---- static void ! node_free(struct ieee80211com *ic, struct ieee80211_node *ni) { ! ic->ic_node_cleanup(ic, ni); FREE(ni, M_80211_NODE); } *************** *** 639,643 **** int i; ! node_cleanup(ic, dst); *dst = *src; dst->ni_challenge = NULL; --- 640,644 ---- int i; ! ic->ic_node_cleanup(ic, dst); *dst = *src; dst->ni_challenge = NULL; *************** *** 690,694 **** ieee80211_alloc_node(struct ieee80211com *ic, u_int8_t *macaddr) { ! struct ieee80211_node *ni = (*ic->ic_node_alloc)(ic); if (ni != NULL) ieee80211_setup_node(ic, ni, macaddr); --- 691,695 ---- ieee80211_alloc_node(struct ieee80211com *ic, u_int8_t *macaddr) { ! struct ieee80211_node *ni = ic->ic_node_alloc(ic); if (ni != NULL) ieee80211_setup_node(ic, ni, macaddr); *************** *** 701,705 **** ieee80211_dup_bss(struct ieee80211com *ic, u_int8_t *macaddr) { ! struct ieee80211_node *ni = (*ic->ic_node_alloc)(ic); if (ni != NULL) { ieee80211_setup_node(ic, ni, macaddr); --- 702,706 ---- ieee80211_dup_bss(struct ieee80211com *ic, u_int8_t *macaddr) { ! struct ieee80211_node *ni = ic->ic_node_alloc(ic); if (ni != NULL) { ieee80211_setup_node(ic, ni, macaddr); *************** *** 862,866 **** (*ic->ic_set_tim)(ic, ni->ni_associd, 0); } ! (*ic->ic_node_free)(ic, ni); } --- 863,867 ---- (*ic->ic_set_tim)(ic, ni->ni_associd, 0); } ! ic->ic_node_free(ic, ni); } *************** *** 900,904 **** if (ic->ic_bss != NULL) ! node_cleanup(ic, ic->ic_bss); /* for station mode */ } --- 901,905 ---- if (ic->ic_bss != NULL) ! ic->ic_node_cleanup(ic, ic->ic_bss); /* for station mode */ } *************** *** 1223,1226 **** /* notify driver */ if (ic->ic_updateslot != NULL) ! (*ic->ic_updateslot)(ic->ic_dev); } --- 1224,1227 ---- /* notify driver */ if (ic->ic_updateslot != NULL) ! ic->ic_updateslot(ic->ic_dev); } Index: version.h =================================================================== RCS file: /cvsroot/madwifi/madwifi/net80211/version.h,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** version.h 8 Oct 2004 19:22:14 -0000 1.7 --- version.h 20 Oct 2004 19:39:35 -0000 1.8 *************** *** 36,38 **** * $Id$ */ ! #define WLAN_VERSION "0.8.4.3" --- 36,38 ---- * $Id$ */ ! #define WLAN_VERSION "0.8.4.4" |