Search Linux Wireless

Re: [PATCH 4/4] ath10k: Add support to configure TID specific configuration

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Tamizh,

> Signed-off-by: Tamizh chelvam <tamizhr@xxxxxxxxxxxxxx>
> ---
>  drivers/net/wireless/ath/ath10k/core.h |  23 ++++
>  drivers/net/wireless/ath/ath10k/mac.c  | 240 +++++++++++++++++++++++++++++----
>  drivers/net/wireless/ath/ath10k/wmi.c  |   6 +-
>  drivers/net/wireless/ath/ath10k/wmi.h  |   1 +
>  4 files changed, 245 insertions(+), 25 deletions(-)

...

> +static int ath10k_mac_op_set_tid_conf(struct ieee80211_hw *hw,
> +                                     struct ieee80211_vif *vif,
> +                                     struct ieee80211_sta *sta,
> +                                     struct ieee80211_tid_conf *tid_conf,
> +                                     u8 changed)
> +{
> +       int ret;
> +       struct ath10k *ar = hw->priv;
> +       struct ath10k_vif *arvif = (void *)vif->drv_priv;
> +       struct ath10k_mac_iter_tid_config data = {};
> +       struct wmi_per_peer_per_tid_cfg_arg arg = {};
> +       struct ath10k_sta *arsta;
> +
> +       if (!(changed & TID_RETRY_CONF_CHANGED) &&
> +           !(changed & TID_AGGR_CONF_CHANGED))
> +               return 0;
> +
> +       mutex_lock(&ar->conf_mutex);
> +       arg.vdev_id = arvif->vdev_id;
> +       arg.tid = tid_conf->tid;
> +
> +       if (sta) {
> +               arsta = (struct ath10k_sta *)sta->drv_priv;
> +               ether_addr_copy(arg.peer_macaddr.addr, sta->addr);
> +
> +               if (changed & TID_RETRY_CONF_CHANGED) {
> +                       if (tid_conf->retry_long ==
> +                           arsta->retry_count[arg.tid]) {
> +                               ret = 0;
> +                               goto exit;
> +                       }
> +
> +                       if (tid_conf->retry_long == -1) {
> +                               if (arvif->retry_count[arg.tid])
> +                                       arg.retry_count =
> +                                               arvif->retry_count[arg.tid];
> +                               else
> +                                       arg.retry_count =
> +                                               ATH10K_MAX_RETRY_COUNT;
> +                       } else {
> +                               arg.retry_count = tid_conf->retry_long;
> +                       }
> +               }
> +               if (changed & TID_AGGR_CONF_CHANGED) {
> +                       if (tid_conf->aggr)
> +                               arg.aggr_control =
> +                                       WMI_TID_CONFIG_AGGR_CONTROL_ENABLE;
> +                       else
> +                               arg.aggr_control =
> +                                       WMI_TID_CONFIG_AGGR_CONTROL_DISABLE;
> +               }
> +
> +               ret = ath10k_wmi_set_per_peer_per_tid_cfg(ar, &arg);
> +               if (!ret) {
> +                       /* Store the configured parameters in success case */
> +                       if (changed & TID_RETRY_CONF_CHANGED)
> +                               arsta->retry_count[arg.tid] =
> +                                                       tid_conf->retry_long;
> +                       if (changed & TID_AGGR_CONF_CHANGED)
> +                               arsta->aggr_ctrl[arg.tid] = arg.aggr_control;
> +               }
> +
> +               goto exit;
> +       }
> +
> +       ret = 0;
> +
> +       if (changed & TID_RETRY_CONF_CHANGED)
> +               arvif->retry_count[tid_conf->tid] = tid_conf->retry_long;

Shouldn't it use default ATH10K_MAX_RETRY_COUNT value when
incoming retry_long value is -1 ?

Regards,
Sergey




[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux