On Fri, 2008-10-31 at 10:58 -0700, John W. Linville wrote: > __ieee80211_tasklet_handler -> __ieee80211_rx -> > __ieee80211_rx_handle_packet -> ieee80211_invoke_rx_handlers -> > ieee80211_rx_h_decrypt -> ieee80211_crypto_tkip_decrypt -> > ieee80211_tkip_decrypt_data -> iwl4965_mac_update_tkip_key -> > iwl_scan_cancel_timeout -> msleep > > Ooops! > > Avoid the sleep by changing iwl_scan_cancel_timeout with > iwl_scan_cancel and simply returning on failure if the scan persists. > This will cause hardware decryption to fail and we'll handle a few more > frames with software decryption. > > Signed-off-by: John W. Linville <linville@xxxxxxxxxxxxx> > --- > drivers/net/wireless/iwlwifi/iwl-agn.c | 7 ++++++- > 1 files changed, 6 insertions(+), 1 deletions(-) > > diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c > index 89450e3..5cca7bf 100644 > --- a/drivers/net/wireless/iwlwifi/iwl-agn.c > +++ b/drivers/net/wireless/iwlwifi/iwl-agn.c > @@ -3247,7 +3247,12 @@ static void iwl4965_mac_update_tkip_key(struct ieee80211_hw *hw, > return; > } > > - iwl_scan_cancel_timeout(priv, 100); > + if (iwl_scan_cancel(priv)) { > + /* cancel scan failed, just live w/ bad key and rely > + briefly on SW decrpyption */ > + IWL_DEBUG_MAC80211("leave - failed to cancel scan\n"); > + return; > + } Thanks for adding the debugging. The small typo is still there (in the comments ... "decrpyption"). Could you please change it when you merge this patch? Acked-by: Reinette Chatre <reinette.chatre@xxxxxxxxx> Reinette -- 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