diff options
author | Avinash Patil <patila@marvell.com> | 2012-08-03 18:06:10 -0700 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-08-06 15:12:55 -0400 |
commit | 5a009adf32d28bacc02da2ddeb69765848266ce1 (patch) | |
tree | ed1b97a0f917c0de4e394e46edfb5f01ddf6bf1f /drivers/net/wireless/mwifiex/uap_event.c | |
parent | d1cf3b958cb6940cb4e0a71697458035dad9e5b9 (diff) | |
download | op-kernel-dev-5a009adf32d28bacc02da2ddeb69765848266ce1.zip op-kernel-dev-5a009adf32d28bacc02da2ddeb69765848266ce1.tar.gz |
mwifiex: add 11n Block Ack support for uAP
This patch adds support for handling BA request and BA setup
events for AP interface.
RA list is marked as either 11n enabled or disabled from station's
capabilities in association request. BA setup is initiated only
after some specific number of packets for particular RA list are
transmitted.
Signed-off-by: Avinash Patil <patila@marvell.com>
Signed-off-by: Kiran Divekar <dkiran@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/mwifiex/uap_event.c')
-rw-r--r-- | drivers/net/wireless/mwifiex/uap_event.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/net/wireless/mwifiex/uap_event.c b/drivers/net/wireless/mwifiex/uap_event.c index 6270c80..a10bd95 100644 --- a/drivers/net/wireless/mwifiex/uap_event.c +++ b/drivers/net/wireless/mwifiex/uap_event.c @@ -19,6 +19,7 @@ #include "decl.h" #include "main.h" +#include "11n.h" /* * This function will return the pointer to station entry in station list @@ -168,6 +169,7 @@ int mwifiex_process_uap_event(struct mwifiex_private *priv) struct mwifiex_assoc_event *event; struct mwifiex_sta_node *node; u8 *deauth_mac; + struct host_cmd_ds_11n_batimeout *ba_timeout; switch (eventcause) { case EVENT_UAP_STA_ASSOC: @@ -255,6 +257,25 @@ int mwifiex_process_uap_event(struct mwifiex_private *priv) adapter->tx_buf_size); } break; + case EVENT_ADDBA: + dev_dbg(adapter->dev, "event: ADDBA Request\n"); + if (priv->media_connected) + mwifiex_send_cmd_async(priv, HostCmd_CMD_11N_ADDBA_RSP, + HostCmd_ACT_GEN_SET, 0, + adapter->event_body); + break; + case EVENT_DELBA: + dev_dbg(adapter->dev, "event: DELBA Request\n"); + if (priv->media_connected) + mwifiex_11n_delete_ba_stream(priv, adapter->event_body); + break; + case EVENT_BA_STREAM_TIEMOUT: + dev_dbg(adapter->dev, "event: BA Stream timeout\n"); + if (priv->media_connected) { + ba_timeout = (void *)adapter->event_body; + mwifiex_11n_ba_stream_timeout(priv, ba_timeout); + } + break; default: dev_dbg(adapter->dev, "event: unknown event id: %#x\n", eventcause); |