diff options
author | Samuel Ortiz <samuel.ortiz@intel.com> | 2009-06-15 15:59:51 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-07-10 14:57:51 -0400 |
commit | a70742f167424bab794ca74b9e99b598b358bb7d (patch) | |
tree | 28db2ea700e844beb7ce18ace345fcf3797c22bc /drivers/net/wireless/iwmc3200wifi/rx.c | |
parent | 0c5553b1392dea5ba5ad678790367c1275ed1172 (diff) |
iwmc3200wifi: handling wifi_if_ntfy responses
When we're calling iwm_send_wifi_if_cmd() with the resp flag set, we're
currently waiting on the mlme queue, waiting for some flags here and there to
show up.
This patch adds a wifi_ntfy bitmap, and when we're sending a wifi_if command
expecting an answers, we wait synchronously for it to show up, on a dedicated
queue. The wifi_ntfy bit is set when we receive the corresponding answer.
Signed-off-by: Samuel Ortiz <samuel.ortiz@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/iwmc3200wifi/rx.c')
-rw-r--r-- | drivers/net/wireless/iwmc3200wifi/rx.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/net/wireless/iwmc3200wifi/rx.c b/drivers/net/wireless/iwmc3200wifi/rx.c index d73cf96c6dc6..49a8be7c5396 100644 --- a/drivers/net/wireless/iwmc3200wifi/rx.c +++ b/drivers/net/wireless/iwmc3200wifi/rx.c | |||
@@ -993,12 +993,17 @@ static int iwm_ntf_wifi_if_wrapper(struct iwm_priv *iwm, u8 *buf, | |||
993 | (struct iwm_umac_wifi_if *)cmd->buf.payload; | 993 | (struct iwm_umac_wifi_if *)cmd->buf.payload; |
994 | 994 | ||
995 | IWM_DBG_NTF(iwm, DBG, "WIFI_IF_WRAPPER cmd is delivered to UMAC: " | 995 | IWM_DBG_NTF(iwm, DBG, "WIFI_IF_WRAPPER cmd is delivered to UMAC: " |
996 | "oid is %d\n", hdr->oid); | 996 | "oid is 0x%x\n", hdr->oid); |
997 | |||
998 | if (hdr->oid <= WIFI_IF_NTFY_MAX) { | ||
999 | set_bit(hdr->oid, &iwm->wifi_ntfy[0]); | ||
1000 | wake_up_interruptible(&iwm->wifi_ntfy_queue); | ||
1001 | } else | ||
1002 | return -EINVAL; | ||
997 | 1003 | ||
998 | switch (hdr->oid) { | 1004 | switch (hdr->oid) { |
999 | case UMAC_WIFI_IF_CMD_SET_PROFILE: | 1005 | case UMAC_WIFI_IF_CMD_SET_PROFILE: |
1000 | iwm->umac_profile_active = 1; | 1006 | iwm->umac_profile_active = 1; |
1001 | wake_up_interruptible(&iwm->mlme_queue); | ||
1002 | break; | 1007 | break; |
1003 | default: | 1008 | default: |
1004 | break; | 1009 | break; |