aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwmc3200wifi/rx.c
diff options
context:
space:
mode:
authorSamuel Ortiz <samuel.ortiz@intel.com>2009-06-15 15:59:51 -0400
committerJohn W. Linville <linville@tuxdriver.com>2009-07-10 14:57:51 -0400
commita70742f167424bab794ca74b9e99b598b358bb7d (patch)
tree28db2ea700e844beb7ce18ace345fcf3797c22bc /drivers/net/wireless/iwmc3200wifi/rx.c
parent0c5553b1392dea5ba5ad678790367c1275ed1172 (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.c9
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;