diff options
author | Stone Piao <piaoyun@marvell.com> | 2012-09-25 23:23:32 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-09-28 13:54:03 -0400 |
commit | e39faa73ef14f67d11d1ed19e398964c4ecebbb9 (patch) | |
tree | 15ca2d7448a975cfdc1bcd357eaacf96fd99d380 /drivers/net/wireless/mwifiex/wmm.c | |
parent | a8aa69dca7f754c9a2b524c90fda0209187ae9d7 (diff) |
mwifiex: implement cfg80211 mgmt_tx handler
Implement mgmt_tx in cfg80211 ops through data path.
Advertise probe resp offload and skip to send probe resp in AP
or GO mode.
Signed-off-by: Stone Piao <piaoyun@marvell.com>
Signed-off-by: Yogesh Ashok Powar <yogeshp@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/wmm.c')
-rw-r--r-- | drivers/net/wireless/mwifiex/wmm.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/net/wireless/mwifiex/wmm.c b/drivers/net/wireless/mwifiex/wmm.c index 07a45407d3b4..600d8194610e 100644 --- a/drivers/net/wireless/mwifiex/wmm.c +++ b/drivers/net/wireless/mwifiex/wmm.c | |||
@@ -648,7 +648,7 @@ mwifiex_wmm_add_buf_txqueue(struct mwifiex_private *priv, | |||
648 | u8 ra[ETH_ALEN], tid_down; | 648 | u8 ra[ETH_ALEN], tid_down; |
649 | unsigned long flags; | 649 | unsigned long flags; |
650 | 650 | ||
651 | if (!priv->media_connected) { | 651 | if (!priv->media_connected && !mwifiex_is_skb_mgmt_frame(skb)) { |
652 | dev_dbg(adapter->dev, "data: drop packet in disconnect\n"); | 652 | dev_dbg(adapter->dev, "data: drop packet in disconnect\n"); |
653 | mwifiex_write_data_complete(adapter, skb, -1); | 653 | mwifiex_write_data_complete(adapter, skb, -1); |
654 | return; | 654 | return; |
@@ -663,7 +663,8 @@ mwifiex_wmm_add_buf_txqueue(struct mwifiex_private *priv, | |||
663 | /* In case of infra as we have already created the list during | 663 | /* In case of infra as we have already created the list during |
664 | association we just don't have to call get_queue_raptr, we will | 664 | association we just don't have to call get_queue_raptr, we will |
665 | have only 1 raptr for a tid in case of infra */ | 665 | have only 1 raptr for a tid in case of infra */ |
666 | if (!mwifiex_queuing_ra_based(priv)) { | 666 | if (!mwifiex_queuing_ra_based(priv) && |
667 | !mwifiex_is_skb_mgmt_frame(skb)) { | ||
667 | if (!list_empty(&priv->wmm.tid_tbl_ptr[tid_down].ra_list)) | 668 | if (!list_empty(&priv->wmm.tid_tbl_ptr[tid_down].ra_list)) |
668 | ra_list = list_first_entry( | 669 | ra_list = list_first_entry( |
669 | &priv->wmm.tid_tbl_ptr[tid_down].ra_list, | 670 | &priv->wmm.tid_tbl_ptr[tid_down].ra_list, |
@@ -672,7 +673,7 @@ mwifiex_wmm_add_buf_txqueue(struct mwifiex_private *priv, | |||
672 | ra_list = NULL; | 673 | ra_list = NULL; |
673 | } else { | 674 | } else { |
674 | memcpy(ra, skb->data, ETH_ALEN); | 675 | memcpy(ra, skb->data, ETH_ALEN); |
675 | if (ra[0] & 0x01) | 676 | if (ra[0] & 0x01 || mwifiex_is_skb_mgmt_frame(skb)) |
676 | memset(ra, 0xff, ETH_ALEN); | 677 | memset(ra, 0xff, ETH_ALEN); |
677 | ra_list = mwifiex_wmm_get_queue_raptr(priv, tid_down, ra); | 678 | ra_list = mwifiex_wmm_get_queue_raptr(priv, tid_down, ra); |
678 | } | 679 | } |