diff mbox

[v2] mwifiex: add tdls uapsd support module parameter

Message ID 1500548753-26752-1-git-send-email-huxinming820@gmail.com (mailing list archive)
State Rejected
Delegated to: Kalle Valo
Headers show

Commit Message

Xinming Hu July 20, 2017, 11:05 a.m. UTC
From: Xinming Hu <huxm@marvell.com>

An issue about tdls uapsd was fixed in latest firmware, this
patch add module parameter to control tdls uapsd support,
which is default disabled, could be a workaround to the
old firmware. At the same time, it is optional to enable
this feature in specific case.

Signed-off-by: Xinming Hu <huxm@marvell.com>
Signed-off-by: Cathy Luo <cluo@marvell.com>
---
v2: add more comments for disable tdls_uapsd. (Brian)
---
 drivers/net/wireless/marvell/mwifiex/init.c    | 5 +++++
 drivers/net/wireless/marvell/mwifiex/main.h    | 1 +
 drivers/net/wireless/marvell/mwifiex/sta_cmd.c | 8 +++++---
 3 files changed, 11 insertions(+), 3 deletions(-)

Comments

Xinming Hu July 21, 2017, 10:01 a.m. UTC | #1
Hi,

Please drop this patch, as there is a replace version already.


> -----Original Message-----

> From: Xinming Hu [mailto:huxinming820@gmail.com]

> Sent: 2017年7月20日 19:06

> To: Linux Wireless

> Cc: Kalle Valo; Brian Norris; Dmitry Torokhov; rajatja@google.com; Zhiyuan

> Yang; Tim Song; Cathy Luo; Xinming Hu

> Subject: [PATCH v2] mwifiex: add tdls uapsd support module parameter

> 

> From: Xinming Hu <huxm@marvell.com>

> 

> An issue about tdls uapsd was fixed in latest firmware, this patch add module

> parameter to control tdls uapsd support, which is default disabled, could be a

> workaround to the old firmware. At the same time, it is optional to enable this

> feature in specific case.

> 

> Signed-off-by: Xinming Hu <huxm@marvell.com>

> Signed-off-by: Cathy Luo <cluo@marvell.com>

> ---

> v2: add more comments for disable tdls_uapsd. (Brian)

> ---

>  drivers/net/wireless/marvell/mwifiex/init.c    | 5 +++++

>  drivers/net/wireless/marvell/mwifiex/main.h    | 1 +

>  drivers/net/wireless/marvell/mwifiex/sta_cmd.c | 8 +++++---

>  3 files changed, 11 insertions(+), 3 deletions(-)

> 

> diff --git a/drivers/net/wireless/marvell/mwifiex/init.c

> b/drivers/net/wireless/marvell/mwifiex/init.c

> index 3ecb59f..2cc8e54 100644

> --- a/drivers/net/wireless/marvell/mwifiex/init.c

> +++ b/drivers/net/wireless/marvell/mwifiex/init.c

> @@ -25,6 +25,10 @@

>  #include "wmm.h"

>  #include "11n.h"

> 

> +static bool tdls_uapsd;

> +module_param(tdls_uapsd, bool, 0000);

> +MODULE_PARM_DESC(tdls_uapsd, "tdls uapsd support enable:1, disable:0");

> +

>  /*

>   * This function adds a BSS priority table to the table list.

>   *

> @@ -154,6 +158,7 @@ int mwifiex_init_priv(struct mwifiex_private *priv)

>  	priv->del_list_idx = 0;

>  	priv->hs2_enabled = false;

>  	priv->check_tdls_tx = false;

> +	priv->tdls_uapsd_support = tdls_uapsd;

>  	memcpy(priv->tos_to_tid_inv, tos_to_tid_inv, MAX_NUM_TID);

> 

>  	mwifiex_init_11h_params(priv);

> diff --git a/drivers/net/wireless/marvell/mwifiex/main.h

> b/drivers/net/wireless/marvell/mwifiex/main.h

> index f8cf307..ef5eac72 100644

> --- a/drivers/net/wireless/marvell/mwifiex/main.h

> +++ b/drivers/net/wireless/marvell/mwifiex/main.h

> @@ -660,6 +660,7 @@ struct mwifiex_private {

>  	u8 check_tdls_tx;

>  	struct timer_list auto_tdls_timer;

>  	bool auto_tdls_timer_active;

> +	u8 tdls_uapsd_support;

>  	struct idr ack_status_frames;

>  	/* spin lock for ack status */

>  	spinlock_t ack_status_lock;

> diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c

> b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c

> index 534d94a..d5da565 100644

> --- a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c

> +++ b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c

> @@ -1789,9 +1789,11 @@ static int mwifiex_cmd_chan_region_cfg(struct

> mwifiex_private *priv,

>  		put_unaligned_le16(params->capability, pos);

>  		config_len += sizeof(params->capability);

> 

> -		qos_info = params->uapsd_queues | (params->max_sp << 5);

> -		wmm_qos_info = (struct mwifiex_ie_types_qos_info *)(pos +

> -								    config_len);

> +		if (priv->tdls_uapsd_support)

> +			qos_info = params->uapsd_queues | (params->max_sp << 5);

> +		else

> +			qos_info = 0;

> +		wmm_qos_info = (void *)(pos + config_len);

>  		wmm_qos_info->header.type = cpu_to_le16(WLAN_EID_QOS_CAPA);

>  		wmm_qos_info->header.len = cpu_to_le16(sizeof(qos_info));

>  		wmm_qos_info->qos_info = qos_info;

> --

> 1.9.1
diff mbox

Patch

diff --git a/drivers/net/wireless/marvell/mwifiex/init.c b/drivers/net/wireless/marvell/mwifiex/init.c
index 3ecb59f..2cc8e54 100644
--- a/drivers/net/wireless/marvell/mwifiex/init.c
+++ b/drivers/net/wireless/marvell/mwifiex/init.c
@@ -25,6 +25,10 @@ 
 #include "wmm.h"
 #include "11n.h"
 
+static bool tdls_uapsd;
+module_param(tdls_uapsd, bool, 0000);
+MODULE_PARM_DESC(tdls_uapsd, "tdls uapsd support enable:1, disable:0");
+
 /*
  * This function adds a BSS priority table to the table list.
  *
@@ -154,6 +158,7 @@  int mwifiex_init_priv(struct mwifiex_private *priv)
 	priv->del_list_idx = 0;
 	priv->hs2_enabled = false;
 	priv->check_tdls_tx = false;
+	priv->tdls_uapsd_support = tdls_uapsd;
 	memcpy(priv->tos_to_tid_inv, tos_to_tid_inv, MAX_NUM_TID);
 
 	mwifiex_init_11h_params(priv);
diff --git a/drivers/net/wireless/marvell/mwifiex/main.h b/drivers/net/wireless/marvell/mwifiex/main.h
index f8cf307..ef5eac72 100644
--- a/drivers/net/wireless/marvell/mwifiex/main.h
+++ b/drivers/net/wireless/marvell/mwifiex/main.h
@@ -660,6 +660,7 @@  struct mwifiex_private {
 	u8 check_tdls_tx;
 	struct timer_list auto_tdls_timer;
 	bool auto_tdls_timer_active;
+	u8 tdls_uapsd_support;
 	struct idr ack_status_frames;
 	/* spin lock for ack status */
 	spinlock_t ack_status_lock;
diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c
index 534d94a..d5da565 100644
--- a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c
+++ b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c
@@ -1789,9 +1789,11 @@  static int mwifiex_cmd_chan_region_cfg(struct mwifiex_private *priv,
 		put_unaligned_le16(params->capability, pos);
 		config_len += sizeof(params->capability);
 
-		qos_info = params->uapsd_queues | (params->max_sp << 5);
-		wmm_qos_info = (struct mwifiex_ie_types_qos_info *)(pos +
-								    config_len);
+		if (priv->tdls_uapsd_support)
+			qos_info = params->uapsd_queues | (params->max_sp << 5);
+		else
+			qos_info = 0;
+		wmm_qos_info = (void *)(pos + config_len);
 		wmm_qos_info->header.type = cpu_to_le16(WLAN_EID_QOS_CAPA);
 		wmm_qos_info->header.len = cpu_to_le16(sizeof(qos_info));
 		wmm_qos_info->qos_info = qos_info;