Changeset 99

Show
Ignore:
Timestamp:
03/23/03 08:17:27 (6 years ago)
Author:
sam
Message:

o correct node unref that should be a node free
o defer locking in ieee80211_free_node until we know the refcnt is zero
o remove bogus unref before free when timing out inactive nodes
o remove extraneous pointer null (unref does it for us)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • cvs-import/trunk/wlan/if_ieee80211subr.c

    r98 r99  
    13431343ieee80211_free_node(struct ieee80211com *ic, struct ieee80211_node *ni) 
    13441344{ 
    1345         write_lock_bh(&ic->ic_nodelock); 
    1346         if (atomic_dec_and_test(&ni->ni_refcnt)) 
     1345        if (atomic_dec_and_test(&ni->ni_refcnt)) { 
     1346               write_lock_bh(&ic->ic_nodelock); 
    13471347                _ieee80211_free_node(ic, ni); 
    1348         write_unlock_bh(&ic->ic_nodelock); 
     1348                write_unlock_bh(&ic->ic_nodelock); 
     1349        } 
    13491350} 
    13501351 
     
    13821383                    IEEE80211_FC0_SUBTYPE_DEAUTH, 
    13831384                    IEEE80211_REASON_AUTH_EXPIRE); 
    1384                 atomic_dec(&ni->ni_refcnt); 
    13851385                _ieee80211_free_node(ic, ni); 
    13861386                ni = nextbs; 
     
    23322332                                    dev->name, 
    23332333                                    ether_sprintf(ni->ni_macaddr), reason)); 
    2334                         ieee80211_unref_node(&ni); 
     2334                        ieee80211_free_node(&ni); 
    23352335                } 
    23362336                break; 
     
    24662466                                ni->ni_fails++; 
    24672467                                ieee80211_unref_node(&ni); 
    2468                                 ni = NULL;              /* guard against use */ 
    24692468                        } 
    24702469                        ieee80211_begin_scan(dev, &ic->ic_bss);