mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-23 20:53:53 +08:00
iwlagn: properly wait for PAN disable
Previously I hacked this with an msleep(300) which was fine since we never had longer PAN time slots, but now that we will have them I need to fix that. Use the new notification wait support to properly wait for the WIPAN deactivation complete signal from the ucode. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
7194207cee
commit
311dce71b6
@ -52,10 +52,14 @@ static int iwlagn_disable_pan(struct iwl_priv *priv,
|
||||
struct iwl_rxon_context *ctx,
|
||||
struct iwl_rxon_cmd *send)
|
||||
{
|
||||
struct iwl_notification_wait disable_wait;
|
||||
__le32 old_filter = send->filter_flags;
|
||||
u8 old_dev_type = send->dev_type;
|
||||
int ret;
|
||||
|
||||
iwlagn_init_notification_wait(priv, &disable_wait, NULL,
|
||||
REPLY_WIPAN_DEACTIVATION_COMPLETE);
|
||||
|
||||
send->filter_flags &= ~RXON_FILTER_ASSOC_MSK;
|
||||
send->dev_type = RXON_DEV_TYPE_P2P;
|
||||
ret = iwl_send_cmd_pdu(priv, ctx->rxon_cmd, sizeof(*send), send);
|
||||
@ -63,11 +67,16 @@ static int iwlagn_disable_pan(struct iwl_priv *priv,
|
||||
send->filter_flags = old_filter;
|
||||
send->dev_type = old_dev_type;
|
||||
|
||||
if (ret)
|
||||
if (ret) {
|
||||
IWL_ERR(priv, "Error disabling PAN (%d)\n", ret);
|
||||
iwlagn_remove_notification(priv, &disable_wait);
|
||||
} else {
|
||||
signed long wait_res;
|
||||
|
||||
/* FIXME: WAIT FOR PAN DISABLE */
|
||||
msleep(300);
|
||||
wait_res = iwlagn_wait_notification(priv, &disable_wait, HZ);
|
||||
if (wait_res == 0)
|
||||
IWL_ERR(priv, "Timed out waiting for PAN disable\n");
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -189,6 +189,7 @@ enum {
|
||||
REPLY_WIPAN_WEPKEY = 0xb8, /* use REPLY_WEPKEY structure */
|
||||
REPLY_WIPAN_P2P_CHANNEL_SWITCH = 0xb9,
|
||||
REPLY_WIPAN_NOA_NOTIFICATION = 0xbc,
|
||||
REPLY_WIPAN_DEACTIVATION_COMPLETE = 0xbd,
|
||||
|
||||
REPLY_MAX = 0xff
|
||||
};
|
||||
|
@ -108,6 +108,7 @@ const char *get_cmd_string(u8 cmd)
|
||||
IWL_CMD(REPLY_WIPAN_WEPKEY);
|
||||
IWL_CMD(REPLY_WIPAN_P2P_CHANNEL_SWITCH);
|
||||
IWL_CMD(REPLY_WIPAN_NOA_NOTIFICATION);
|
||||
IWL_CMD(REPLY_WIPAN_DEACTIVATION_COMPLETE);
|
||||
default:
|
||||
return "UNKNOWN";
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user