diff options
Diffstat (limited to 'drivers/net/wireless/mwifiex/uap_event.c')
| -rw-r--r-- | drivers/net/wireless/mwifiex/uap_event.c | 48 |
1 files changed, 47 insertions, 1 deletions
diff --git a/drivers/net/wireless/mwifiex/uap_event.c b/drivers/net/wireless/mwifiex/uap_event.c index f31086cdf937..f4794cdc36d2 100644 --- a/drivers/net/wireless/mwifiex/uap_event.c +++ b/drivers/net/wireless/mwifiex/uap_event.c | |||
| @@ -68,7 +68,6 @@ int mwifiex_process_uap_event(struct mwifiex_private *priv) | |||
| 68 | len = ETH_ALEN; | 68 | len = ETH_ALEN; |
| 69 | 69 | ||
| 70 | if (len != -1) { | 70 | if (len != -1) { |
| 71 | sinfo.filled = STATION_INFO_ASSOC_REQ_IES; | ||
| 72 | sinfo.assoc_req_ies = &event->data[len]; | 71 | sinfo.assoc_req_ies = &event->data[len]; |
| 73 | len = (u8 *)sinfo.assoc_req_ies - | 72 | len = (u8 *)sinfo.assoc_req_ies - |
| 74 | (u8 *)&event->frame_control; | 73 | (u8 *)&event->frame_control; |
| @@ -179,6 +178,53 @@ int mwifiex_process_uap_event(struct mwifiex_private *priv) | |||
| 179 | dev_dbg(adapter->dev, "event: TX_STATUS Report\n"); | 178 | dev_dbg(adapter->dev, "event: TX_STATUS Report\n"); |
| 180 | mwifiex_parse_tx_status_event(priv, adapter->event_body); | 179 | mwifiex_parse_tx_status_event(priv, adapter->event_body); |
| 181 | break; | 180 | break; |
| 181 | case EVENT_PS_SLEEP: | ||
| 182 | dev_dbg(adapter->dev, "info: EVENT: SLEEP\n"); | ||
| 183 | |||
| 184 | adapter->ps_state = PS_STATE_PRE_SLEEP; | ||
| 185 | |||
| 186 | mwifiex_check_ps_cond(adapter); | ||
| 187 | break; | ||
| 188 | |||
| 189 | case EVENT_PS_AWAKE: | ||
| 190 | dev_dbg(adapter->dev, "info: EVENT: AWAKE\n"); | ||
| 191 | if (!adapter->pps_uapsd_mode && | ||
| 192 | priv->media_connected && adapter->sleep_period.period) { | ||
| 193 | adapter->pps_uapsd_mode = true; | ||
| 194 | dev_dbg(adapter->dev, | ||
| 195 | "event: PPS/UAPSD mode activated\n"); | ||
| 196 | } | ||
| 197 | adapter->tx_lock_flag = false; | ||
| 198 | if (adapter->pps_uapsd_mode && adapter->gen_null_pkt) { | ||
| 199 | if (mwifiex_check_last_packet_indication(priv)) { | ||
| 200 | if (adapter->data_sent) { | ||
| 201 | adapter->ps_state = PS_STATE_AWAKE; | ||
| 202 | adapter->pm_wakeup_card_req = false; | ||
| 203 | adapter->pm_wakeup_fw_try = false; | ||
| 204 | break; | ||
| 205 | } | ||
| 206 | if (!mwifiex_send_null_packet | ||
| 207 | (priv, | ||
| 208 | MWIFIEX_TxPD_POWER_MGMT_NULL_PACKET | | ||
| 209 | MWIFIEX_TxPD_POWER_MGMT_LAST_PACKET)) | ||
| 210 | adapter->ps_state = | ||
| 211 | PS_STATE_SLEEP; | ||
| 212 | return 0; | ||
| 213 | } | ||
| 214 | } | ||
| 215 | adapter->ps_state = PS_STATE_AWAKE; | ||
| 216 | adapter->pm_wakeup_card_req = false; | ||
| 217 | adapter->pm_wakeup_fw_try = false; | ||
| 218 | break; | ||
| 219 | |||
| 220 | case EVENT_CHANNEL_REPORT_RDY: | ||
| 221 | dev_dbg(adapter->dev, "event: Channel Report\n"); | ||
| 222 | mwifiex_11h_handle_chanrpt_ready(priv, adapter->event_skb); | ||
| 223 | break; | ||
| 224 | case EVENT_RADAR_DETECTED: | ||
| 225 | dev_dbg(adapter->dev, "event: Radar detected\n"); | ||
| 226 | mwifiex_11h_handle_radar_detected(priv, adapter->event_skb); | ||
| 227 | break; | ||
| 182 | default: | 228 | default: |
| 183 | dev_dbg(adapter->dev, "event: unknown event id: %#x\n", | 229 | dev_dbg(adapter->dev, "event: unknown event id: %#x\n", |
| 184 | eventcause); | 230 | eventcause); |
