On 12 November 2014 07:26, David Ward <david.ward@xxxxxxxxxx> wrote: [...] > +static void iwlagn_mac_sta_rc_update(struct ieee80211_hw *hw, > + struct ieee80211_vif *vif, > + struct ieee80211_sta *sta, u32 changed) > +{ > + struct iwl_priv *priv = IWL_MAC80211_GET_DVM(hw); > + > + if (!(changed & IEEE80211_RC_SUPP_RATES_CHANGED)) > + return; > + > + /* Update rate scaling */ > + IWL_DEBUG_INFO(priv, > + "Updating rate scaling for station %pM\n", > + sta->addr); > + iwl_rs_rate_init(priv, sta, iwl_sta_id(sta)); sta_rc_update() must be atomic. I'm not really familiar with iwl that much but it seems to me iwl_rs_rate_init() -> iwl_send_lq_cmd(..., 0, true) can sleep, no? Michał -- 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