Project

General

Profile

Bug #2458 ยป ath_lock.diff

Johannes.Hofmann, 11/22/2012 01:27 PM

View differences:

sys/dev/netif/ath/ath/if_ath.c
static void ath_init(void *);
static void ath_stop_locked(struct ifnet *);
static void ath_stop(struct ifnet *);
static void ath_start_locked(struct ifnet *);
static void ath_start(struct ifnet *);
static int ath_reset(struct ifnet *);
static int ath_reset_vap(struct ieee80211vap *, u_long);
......
* Allocate tx+rx descriptors and populate the lists.
*/
wlan_assert_serialized();
wlan_serialize_exit();
error = ath_desc_alloc(sc);
wlan_serialize_enter();
if (error != 0) {
if_printf(ifp, "failed to allocate descriptors: %d\n", error);
goto bad;
......
}
ath_hal_intrset(ah, sc->sc_imask);
ath_start(ifp); /* restart xmit */
ath_start_locked(ifp); /* restart xmit */
return 0;
}
......
}
static void
ath_start(struct ifnet *ifp)
ath_start_locked(struct ifnet *ifp)
{
struct ath_softc *sc = ifp->if_softc;
struct ieee80211_node *ni;
......
}
}
static void
ath_start(struct ifnet *ifp)
{
wlan_serialize_enter();
ath_start_locked(ifp);
wlan_serialize_exit();
}
static int
ath_media_change(struct ifnet *ifp)
{
......
ieee80211_ff_age_all(ic, 100);
#endif
if (!ifq_is_empty(&ifp->if_snd))
ath_start(ifp);
ath_start_locked(ifp);
}
wlan_serialize_exit();
#undef PA2DESC
......
if (sc->sc_softled)
ath_led_event(sc, sc->sc_txrix);
ath_start(ifp);
ath_start_locked(ifp);
wlan_serialize_exit();
}
......
if (sc->sc_softled)
ath_led_event(sc, sc->sc_txrix);
ath_start(ifp);
ath_start_locked(ifp);
wlan_serialize_exit();
}
......
if (sc->sc_softled)
ath_led_event(sc, sc->sc_txrix);
ath_start(ifp);
ath_start_locked(ifp);
wlan_serialize_exit();
}
    (1-1/1)