wlan - Bug fixes for recent work
authorMatthew Dillon <dillon@apollo.backplane.com>
Wed, 8 Sep 2010 07:18:04 +0000 (00:18 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Wed, 8 Sep 2010 07:18:04 +0000 (00:18 -0700)
* handoff (if in "ap" mode) serializer adjustments.

* interface deletion serializer adjustments.

sys/netproto/802_11/wlan/ieee80211_dragonfly.c

index 3e615eb..0a8495d 100644 (file)
@@ -152,7 +152,9 @@ wlan_clone_destroy(struct ifnet *ifp)
        struct ieee80211vap *vap = ifp->if_softc;
        struct ieee80211com *ic = vap->iv_ic;
 
+       wlan_serialize_enter(); /* WARNING must be global serializer */
        ic->ic_vap_delete(vap);
+       wlan_serialize_exit();
 }
 
 const char *wlan_last_enter_func;
@@ -801,6 +803,8 @@ ieee80211_handoff(struct ifnet *dst_ifp, struct mbuf *m)
         struct mbuf *m0;
 
        /* We may be sending a fragment so traverse the mbuf */
+       wlan_assert_serialized();
+       wlan_serialize_exit();
        for (; m; m = m0) {
                struct altq_pktattr pktattr;
 
@@ -812,6 +816,7 @@ ieee80211_handoff(struct ifnet *dst_ifp, struct mbuf *m)
 
                ifq_dispatch(dst_ifp, m, &pktattr);
        }
+       wlan_serialize_enter();
 
        return (0);
 }