> 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? > > Yes - good point. ��.n��������+%������w��{.n�����{���zW����ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f