[Madwifi-cvs] madwifi/net80211 ieee80211_linux.h,1.8,1.9 ieee80211_node.c,1.15,1.16 ieee80211_output
Status: Beta
Brought to you by:
otaku
From: Bruno R. <br...@us...> - 2005-10-18 09:25:15
|
Update of /cvsroot/madwifi/madwifi/net80211 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16723/net80211 Modified Files: ieee80211_linux.h ieee80211_node.c ieee80211_output.c ieee80211_proto.c Log Message: - fix beacon locking: need to use spin_lock_irqsave/spin_unlock_irqrestore because beacons are sent from interrupt context patch by Paul Stewart Index: ieee80211_linux.h =================================================================== RCS file: /cvsroot/madwifi/madwifi/net80211/ieee80211_linux.h,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** ieee80211_linux.h 13 Jul 2005 16:01:05 -0000 1.8 --- ieee80211_linux.h 18 Oct 2005 09:25:06 -0000 1.9 *************** *** 37,44 **** spin_lock_init(&(_ic)->ic_beaconlock) #define IEEE80211_BEACON_LOCK_DESTROY(_ic) /* not necessary */ ! #define IEEE80211_BEACON_LOCK(_ic) spin_lock_bh(&(_ic)->ic_beaconlock) ! #define IEEE80211_BEACON_UNLOCK(_ic) spin_unlock_bh(&(_ic)->ic_beaconlock) ! #define IEEE80211_BEACON_LOCK_BH(_ic) spin_lock_bh(&(_ic)->ic_beaconlock) ! #define IEEE80211_BEACON_UNLOCK_BH(_ic) spin_unlock_bh(&(_ic)->ic_beaconlock) /* NB: beware, *_is_locked() are boguly defined for UP+!PREEMPT */ #if defined(CONFIG_SMP) || defined(CONFIG_PREEMPT) --- 37,42 ---- spin_lock_init(&(_ic)->ic_beaconlock) #define IEEE80211_BEACON_LOCK_DESTROY(_ic) /* not necessary */ ! #define IEEE80211_BEACON_LOCK(_ic, flags) spin_lock_irqsave(&(_ic)->ic_beaconlock, flags) ! #define IEEE80211_BEACON_UNLOCK(_ic, flags) spin_unlock_irqrestore(&(_ic)->ic_beaconlock, flags) /* NB: beware, *_is_locked() are boguly defined for UP+!PREEMPT */ #if defined(CONFIG_SMP) || defined(CONFIG_PREEMPT) Index: ieee80211_proto.c =================================================================== RCS file: /cvsroot/madwifi/madwifi/net80211/ieee80211_proto.c,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** ieee80211_proto.c 17 Oct 2005 13:01:08 -0000 1.11 --- ieee80211_proto.c 18 Oct 2005 09:25:06 -0000 1.12 *************** *** 827,835 **** ieee80211_wme_updateparams(struct ieee80211com *ic) { ! if (ic->ic_caps & IEEE80211_C_WME) { ! IEEE80211_BEACON_LOCK(ic); ieee80211_wme_updateparams_locked(ic); ! IEEE80211_BEACON_UNLOCK(ic); } } --- 827,835 ---- ieee80211_wme_updateparams(struct ieee80211com *ic) { ! unsigned long flags; if (ic->ic_caps & IEEE80211_C_WME) { ! IEEE80211_BEACON_LOCK(ic, flags); ieee80211_wme_updateparams_locked(ic); ! IEEE80211_BEACON_UNLOCK(ic, flags); } } Index: ieee80211_output.c =================================================================== RCS file: /cvsroot/madwifi/madwifi/net80211/ieee80211_output.c,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** ieee80211_output.c 18 Oct 2005 09:08:42 -0000 1.16 --- ieee80211_output.c 18 Oct 2005 09:25:06 -0000 1.17 *************** *** 1483,1488 **** int len_changed = 0; u_int16_t capinfo; ! IEEE80211_BEACON_LOCK(ic); /* XXX faster to recalculate entirely or just changes? */ if (ic->ic_opmode == IEEE80211_M_IBSS) --- 1483,1489 ---- int len_changed = 0; u_int16_t capinfo; + unsigned long flags; ! IEEE80211_BEACON_LOCK(ic, flags); /* XXX faster to recalculate entirely or just changes? */ if (ic->ic_opmode == IEEE80211_M_IBSS) *************** *** 1610,1614 **** tie->tim_bitctl &= ~1; } ! IEEE80211_BEACON_UNLOCK(ic); return len_changed; --- 1611,1615 ---- tie->tim_bitctl &= ~1; } ! IEEE80211_BEACON_UNLOCK(ic, flags); return len_changed; Index: ieee80211_node.c =================================================================== RCS file: /cvsroot/madwifi/madwifi/net80211/ieee80211_node.c,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** ieee80211_node.c 17 Oct 2005 13:01:08 -0000 1.15 --- ieee80211_node.c 18 Oct 2005 09:25:06 -0000 1.16 *************** *** 1990,1993 **** --- 1990,1994 ---- struct ieee80211com *ic = ni->ni_ic; u_int16_t aid; + unsigned long flags; KASSERT(ic->ic_opmode == IEEE80211_M_HOSTAP || *************** *** 1999,2003 **** ("bogus aid %u, max %u", aid, ic->ic_max_aid)); ! IEEE80211_BEACON_LOCK(ic); if (set != (isset(ic->ic_tim_bitmap, aid) != 0)) { if (set) { --- 2000,2004 ---- ("bogus aid %u, max %u", aid, ic->ic_max_aid)); ! IEEE80211_BEACON_LOCK(ic, flags); if (set != (isset(ic->ic_tim_bitmap, aid) != 0)) { if (set) { *************** *** 2010,2014 **** ic->ic_flags |= IEEE80211_F_TIMUPDATE; } ! IEEE80211_BEACON_UNLOCK(ic); } EXPORT_SYMBOL(ieee80211_set_tim); --- 2011,2015 ---- ic->ic_flags |= IEEE80211_F_TIMUPDATE; } ! IEEE80211_BEACON_UNLOCK(ic, flags); } EXPORT_SYMBOL(ieee80211_set_tim); |