On Mon, Jun 3, 2013 at 4:25 PM, Thomas Pedersen <thomas@xxxxxxxxxxx> wrote: > Fixes yet another deadlock on calling sta_info_flush() > with the sdata_lock() held. Should make it easier to > reason about locking in the future, since the sdata_lock() > is now held on all mesh work. > > Signed-off-by: Thomas Pedersen <thomas@xxxxxxxxxxx> > --- [...] > +static void mesh_bss_info_changed(struct ieee80211_sub_if_data *sdata) > +{ > + struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; > +#define TEST_CHANGED_BIT(bit) \ > + test_and_clear_bit(bit, &ifmsh->mbss_changed) > + > + u32 changed = TEST_CHANGED_BIT(BSS_CHANGED_BEACON) | > + TEST_CHANGED_BIT(BSS_CHANGED_HT) | > + TEST_CHANGED_BIT(BSS_CHANGED_BASIC_RATES) | > + TEST_CHANGED_BIT(BSS_CHANGED_BEACON_INT); > +#undef TEST_CHANGED_BIT Uhhh we should read all the bits here. Will fix and resubmit as v2. -- Thomas -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html