Hi,

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


> -----Original Message-----
> From: Xinming Hu [mailto:[email protected]]
> Sent: 2017年7月20日 19:06
> To: Linux Wireless
> Cc: Kalle Valo; Brian Norris; Dmitry Torokhov; [email protected]; Zhiyuan
> Yang; Tim Song; Cathy Luo; Xinming Hu
> Subject: [PATCH v2] mwifiex: add tdls uapsd support module parameter
> 
> From: Xinming Hu <[email protected]>
> 
> 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 <[email protected]>
> Signed-off-by: Cathy Luo <[email protected]>
> ---
> 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

Reply via email to