[PATCHv2 3/4] ath10k: Add new api to support TID specific configuration

Kalle Valo kvalo at codeaurora.org
Mon Aug 17 10:19:34 EDT 2020


Tamizh Chelvam <tamizhr at codeaurora.org> wrote:

> This patch add ops for set_tid_config to support TID
> specific configuration. Station specific TID configuration
> will have more priority than vif specific TID configuration.
> WMI_SERVICE_PEER_TID_CONFIGS_SUPPORT service flag introduced
> to notify host for TID config support. And RTS_CTS extended tid
> configuration support advertised through the service flag
> WMI_10_4_SERVICE_EXT_PEER_TID_CONFIGS_SUPPORT.
> 
> TID specific noack configuration requires
> aggregation should be disabled and rate for the data TID packets
> should be basic rates. So, if the TID already configured
> with noack policy then driver will ignore the aggregation
> or TX rate related configuration for the same data TID.
> 
> In TX rate configuration should be applied with highest
> preamble configuration(HT rates should not be applied
> for the station which supports vht rates).
> 
> Tested-on: QCA9984 hw1.0 PCI 10.4-3.9.0.2-00021
> 
> Signed-off-by: Tamizh Chelvam <tamizhr at codeaurora.org>
> Signed-off-by: Kalle Valo <kvalo at codeaurora.org>

There few checkpatch warnings which I fixed and also I did some whitespace
changes to improve readability. Others were trivial but please check carefully
this change and let me know if it's ok:

--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -7089,6 +7089,7 @@ static void ath10k_sta_tid_cfg_wk(struct work_struct *wk)
        bool config_apply;
        int ret, i;
        u32 changed;
+       u8 nss;
 
        arsta = container_of(wk, struct ath10k_sta, tid_config_wk);
        sta = container_of((void *)arsta, struct ieee80211_sta, drv_priv);
@@ -7138,9 +7139,12 @@ static void ath10k_sta_tid_cfg_wk(struct work_struct *wk)
 
                if (changed & (BIT(NL80211_TID_CONFIG_ATTR_TX_RATE) |
                    BIT(NL80211_TID_CONFIG_ATTR_TX_RATE_TYPE))) {
-                       if (arvif->rate_ctrl[i] > WMI_TID_CONFIG_RATE_CONTROL_AUTO &&
-                           ath10k_mac_validate_rate_mask(ar, sta, arvif->rate_code[i],
-                                                         ATH10K_HW_NSS(arvif->rate_code[i]))) {
+                       nss = ATH10K_HW_NSS(arvif->rate_code[i]);
+                       ret = ath10k_mac_validate_rate_mask(ar, sta,
+                                                           arvif->rate_code[i],
+                                                           nss);
+                       if (ret &&
+                           arvif->rate_ctrl[i] > WMI_TID_CONFIG_RATE_CONTROL_AUTO) {
                                arg.rate_ctrl = 0;
                                arg.rcode_flags = 0;
                        }

-- 
https://patchwork.kernel.org/patch/11643787/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches




More information about the ath10k mailing list