aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAvinash Patil <patila@marvell.com>2014-05-22 01:02:30 -0400
committerJohn W. Linville <linville@tuxdriver.com>2014-05-22 14:04:37 -0400
commit71e17ee57cde7e30ef0acd765f73e21295c867fd (patch)
tree63d0565cc842173823550974a0bb915df1973b79
parentc1078bc98a3543b218c060f5d34f0c6f2beaeb88 (diff)
mwifiex: set TDLS flags for AMSDU packets
This patch fixes an issue where AMSDU packets for TDLS link would flow over infra link. This happened because we were missing setting TDLS flag in TxPD on AMSDU packets. Signed-off-by: Avinash Patil <patila@marvell.com> Signed-off-by: Bing Zhao <bzhao@marvell.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/net/wireless/mwifiex/11n_aggr.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/net/wireless/mwifiex/11n_aggr.c b/drivers/net/wireless/mwifiex/11n_aggr.c
index 860dfe71cf96..5b32106182f8 100644
--- a/drivers/net/wireless/mwifiex/11n_aggr.c
+++ b/drivers/net/wireless/mwifiex/11n_aggr.c
@@ -100,6 +100,7 @@ mwifiex_11n_form_amsdu_txpd(struct mwifiex_private *priv,
100 struct sk_buff *skb) 100 struct sk_buff *skb)
101{ 101{
102 struct txpd *local_tx_pd; 102 struct txpd *local_tx_pd;
103 struct mwifiex_txinfo *tx_info = MWIFIEX_SKB_TXCB(skb);
103 104
104 skb_push(skb, sizeof(*local_tx_pd)); 105 skb_push(skb, sizeof(*local_tx_pd));
105 106
@@ -118,6 +119,9 @@ mwifiex_11n_form_amsdu_txpd(struct mwifiex_private *priv,
118 local_tx_pd->tx_pkt_length = cpu_to_le16(skb->len - 119 local_tx_pd->tx_pkt_length = cpu_to_le16(skb->len -
119 sizeof(*local_tx_pd)); 120 sizeof(*local_tx_pd));
120 121
122 if (tx_info->flags & MWIFIEX_BUF_FLAG_TDLS_PKT)
123 local_tx_pd->flags |= MWIFIEX_TXPD_FLAGS_TDLS_PACKET;
124
121 if (local_tx_pd->tx_control == 0) 125 if (local_tx_pd->tx_control == 0)
122 /* TxCtrl set by user or default */ 126 /* TxCtrl set by user or default */
123 local_tx_pd->tx_control = cpu_to_le32(priv->pkt_tx_ctrl); 127 local_tx_pd->tx_control = cpu_to_le32(priv->pkt_tx_ctrl);
@@ -183,6 +187,9 @@ mwifiex_11n_aggregate_pkt(struct mwifiex_private *priv,
183 187
184 tx_info_aggr->bss_type = tx_info_src->bss_type; 188 tx_info_aggr->bss_type = tx_info_src->bss_type;
185 tx_info_aggr->bss_num = tx_info_src->bss_num; 189 tx_info_aggr->bss_num = tx_info_src->bss_num;
190
191 if (tx_info_src->flags & MWIFIEX_BUF_FLAG_TDLS_PKT)
192 tx_info_aggr->flags |= MWIFIEX_BUF_FLAG_TDLS_PKT;
186 skb_aggr->priority = skb_src->priority; 193 skb_aggr->priority = skb_src->priority;
187 194
188 do_gettimeofday(&tv); 195 do_gettimeofday(&tv);