2013-07-01 09:34:07

by Harvey Yang

[permalink] [raw]
Subject: [PATCH 1/1] mwifiex: add tx info to skb when forming mgmt frame

From: Huawei Yang <[email protected]>

In function 'mwifiex_write_data_complete' it need tx info to find the mwifiex_private to updates statistics and wake up tx queues. Or we may trigger tx queues timeout when transmitting lots of mgmt frames burstly.

Signed-off-by: Huawei Yang <[email protected]>
---
drivers/net/wireless/mwifiex/cfg80211.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/drivers/net/wireless/mwifiex/cfg80211.c b/drivers/net/wireless/mwifiex/cfg80211.c
index e42b266..e8655f9 100644
--- a/drivers/net/wireless/mwifiex/cfg80211.c
+++ b/drivers/net/wireless/mwifiex/cfg80211.c
@@ -166,6 +166,10 @@ mwifiex_form_mgmt_frame(struct sk_buff *skb, const u8 *buf, size_t len)
memcpy(skb_put(skb, len - sizeof(struct ieee80211_hdr_3addr)),
buf + sizeof(struct ieee80211_hdr_3addr),
len - sizeof(struct ieee80211_hdr_3addr));
+
+ tx_info = MWIFIEX_SKB_TXCB(skb);
+ tx_info->bss_num = priv->bss_num;
+ tx_info->bss_type = priv->bss_type;

skb->priority = LOW_PRIO_TID;
do_gettimeofday(&tv);
--
1.7.10.4



2013-07-01 19:34:19

by Bing Zhao

[permalink] [raw]
Subject: RE: [PATCH 1/1] mwifiex: add tx info to skb when forming mgmt frame

Hi Harvey,

Thanks for your patch.

> From: Huawei Yang <[email protected]>
>
> In function 'mwifiex_write_data_complete' it need tx info to find the mwifiex_private to updates
> statistics and wake up tx queues. Or we may trigger tx queues timeout when transmitting lots of mgmt
> frames burstly.

Please shorten the commit log to less than 68 characters per line.

>
> Signed-off-by: Huawei Yang <[email protected]>
> ---
> drivers/net/wireless/mwifiex/cfg80211.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/net/wireless/mwifiex/cfg80211.c b/drivers/net/wireless/mwifiex/cfg80211.c
> index e42b266..e8655f9 100644
> --- a/drivers/net/wireless/mwifiex/cfg80211.c
> +++ b/drivers/net/wireless/mwifiex/cfg80211.c
> @@ -166,6 +166,10 @@ mwifiex_form_mgmt_frame(struct sk_buff *skb, const u8 *buf, size_t len)
> memcpy(skb_put(skb, len - sizeof(struct ieee80211_hdr_3addr)),
> buf + sizeof(struct ieee80211_hdr_3addr),
> len - sizeof(struct ieee80211_hdr_3addr));
> +
> + tx_info = MWIFIEX_SKB_TXCB(skb);
> + tx_info->bss_num = priv->bss_num;
> + tx_info->bss_type = priv->bss_type;

This code doesn't compile because both tx_info and priv are undefined in this function.
Perhaps you meant to add it in mwifiex_cfg80211_mgmt_tx() instead?

@@ -216,6 +216,10 @@ mwifiex_cfg80211_mgmt_tx(struct wiphy *wiphy, struct wirele
return -ENOMEM;
}

+ tx_info = MWIFIEX_SKB_TXCB(skb);
+ tx_info->bss_num = priv->bss_num;
+ tx_info->bss_type = priv->bss_type;
+
mwifiex_form_mgmt_frame(skb, buf, len);
mwifiex_queue_tx_pkt(priv, skb);

>
> skb->priority = LOW_PRIO_TID;
> do_gettimeofday(&tv);

Thanks,
Bing