diff mbox

ath10k: advertize hardware packet loss mechanism

Message ID 20160906070841.4266-1-rmanohar@qti.qualcomm.com (mailing list archive)
State Not Applicable
Delegated to: Kalle Valo
Headers show

Commit Message

Rajkumar Manoharan Sept. 6, 2016, 7:08 a.m. UTC
Indicate hardware (or firmware) supports that CQM packet-loss report
will be generated based on station kickout algorithm. As of now mac80211
tracks connection loss by missing msdu counts (50) whereas ath10k
firmware tracks them by missing ppdus (+ BAR tries). While firmware is
trying to adapt its rate table, mac80211 might send out low_ack event to
hostapd. This is causing frequent connect and disconnect iteration under
noisy environment or when station is roaming around.

Signed-off-by: Rajkumar Manoharan <rmanohar@qti.qualcomm.com>
---
 drivers/net/wireless/ath/ath10k/mac.c | 1 +
 1 file changed, 1 insertion(+)

Comments

kernel test robot Sept. 6, 2016, 8:18 a.m. UTC | #1
Hi Rajkumar,

[auto build test ERROR on ath6kl/ath-next]
[also build test ERROR on v4.8-rc5 next-20160906]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
[Suggest to use git(>=2.9.0) format-patch --base=<commit> (or --base=auto for convenience) to record what (public, well-known) commit your patch series was built on]
[Check https://git-scm.com/docs/git-format-patch for more information]

url:    https://github.com/0day-ci/linux/commits/Rajkumar-Manoharan/ath10k-advertize-hardware-packet-loss-mechanism/20160906-151148
base:   https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git ath-next
config: i386-randconfig-x008-201636 (attached as .config)
compiler: gcc-6 (Debian 6.1.1-9) 6.1.1 20160705
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All error/warnings (new ones prefixed by >>):

   In file included from drivers/net/wireless/ath/ath10k/mac.h:21:0,
                    from drivers/net/wireless/ath/ath10k/mac.c:18:
   drivers/net/wireless/ath/ath10k/mac.c: In function 'ath10k_mac_register':
>> include/net/mac80211.h:2206:57: error: 'IEEE80211_HW_REPORTS_LOW_ACK' undeclared (first use in this function)
    #define ieee80211_hw_set(hw, flg) _ieee80211_hw_set(hw, IEEE80211_HW_##flg)
                                                            ^
>> drivers/net/wireless/ath/ath10k/mac.c:7884:2: note: in expansion of macro 'ieee80211_hw_set'
     ieee80211_hw_set(ar->hw, REPORTS_LOW_ACK);
     ^~~~~~~~~~~~~~~~
   include/net/mac80211.h:2206:57: note: each undeclared identifier is reported only once for each function it appears in
    #define ieee80211_hw_set(hw, flg) _ieee80211_hw_set(hw, IEEE80211_HW_##flg)
                                                            ^
>> drivers/net/wireless/ath/ath10k/mac.c:7884:2: note: in expansion of macro 'ieee80211_hw_set'
     ieee80211_hw_set(ar->hw, REPORTS_LOW_ACK);
     ^~~~~~~~~~~~~~~~

vim +/ieee80211_hw_set +7884 drivers/net/wireless/ath/ath10k/mac.c

  7868				BIT(NL80211_IFTYPE_P2P_GO);
  7869	
  7870		ieee80211_hw_set(ar->hw, SIGNAL_DBM);
  7871		ieee80211_hw_set(ar->hw, SUPPORTS_PS);
  7872		ieee80211_hw_set(ar->hw, SUPPORTS_DYNAMIC_PS);
  7873		ieee80211_hw_set(ar->hw, MFP_CAPABLE);
  7874		ieee80211_hw_set(ar->hw, REPORTS_TX_ACK_STATUS);
  7875		ieee80211_hw_set(ar->hw, HAS_RATE_CONTROL);
  7876		ieee80211_hw_set(ar->hw, AP_LINK_PS);
  7877		ieee80211_hw_set(ar->hw, SPECTRUM_MGMT);
  7878		ieee80211_hw_set(ar->hw, SUPPORT_FAST_XMIT);
  7879		ieee80211_hw_set(ar->hw, CONNECTION_MONITOR);
  7880		ieee80211_hw_set(ar->hw, SUPPORTS_PER_STA_GTK);
  7881		ieee80211_hw_set(ar->hw, WANT_MONITOR_VIF);
  7882		ieee80211_hw_set(ar->hw, CHANCTX_STA_CSA);
  7883		ieee80211_hw_set(ar->hw, QUEUE_CONTROL);
> 7884		ieee80211_hw_set(ar->hw, REPORTS_LOW_ACK);
  7885	
  7886		if (!test_bit(ATH10K_FLAG_RAW_MODE, &ar->dev_flags))
  7887			ieee80211_hw_set(ar->hw, SW_CRYPTO_CONTROL);
  7888	
  7889		ar->hw->wiphy->features |= NL80211_FEATURE_STATIC_SMPS;
  7890		ar->hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN;
  7891	
  7892		if (ar->ht_cap_info & WMI_HT_CAP_DYNAMIC_SMPS)

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
Kalle Valo Sept. 9, 2016, 12:27 p.m. UTC | #2
kbuild test robot <lkp@intel.com> writes:

> Hi Rajkumar,
>
> [auto build test ERROR on ath6kl/ath-next]
> [also build test ERROR on v4.8-rc5 next-20160906]
> [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
> [Suggest to use git(>=2.9.0) format-patch --base=<commit> (or --base=auto for convenience) to record what (public, well-known) commit your patch series was built on]
> [Check https://git-scm.com/docs/git-format-patch for more information]
>
> url:    https://github.com/0day-ci/linux/commits/Rajkumar-Manoharan/ath10k-advertize-hardware-packet-loss-mechanism/20160906-151148
> base:   https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git ath-next
> config: i386-randconfig-x008-201636 (attached as .config)
> compiler: gcc-6 (Debian 6.1.1-9) 6.1.1 20160705
> reproduce:
>         # save the attached .config to linux build tree
>         make ARCH=i386 
>
> All error/warnings (new ones prefixed by >>):
>
>    In file included from drivers/net/wireless/ath/ath10k/mac.h:21:0,
>                     from drivers/net/wireless/ath/ath10k/mac.c:18:
>    drivers/net/wireless/ath/ath10k/mac.c: In function 'ath10k_mac_register':
>>> include/net/mac80211.h:2206:57: error: 'IEEE80211_HW_REPORTS_LOW_ACK' undeclared (first use in this function)
>     #define ieee80211_hw_set(hw, flg) _ieee80211_hw_set(hw, IEEE80211_HW_##flg)
>                                                             ^
>>> drivers/net/wireless/ath/ath10k/mac.c:7884:2: note: in expansion of macro 'ieee80211_hw_set'
>      ieee80211_hw_set(ar->hw, REPORTS_LOW_ACK);
>      ^~~~~~~~~~~~~~~~
>    include/net/mac80211.h:2206:57: note: each undeclared identifier is reported only once for each function it appears in
>     #define ieee80211_hw_set(hw, flg) _ieee80211_hw_set(hw, IEEE80211_HW_##flg)
>                                                             ^
>>> drivers/net/wireless/ath/ath10k/mac.c:7884:2: note: in expansion of macro 'ieee80211_hw_set'
>      ieee80211_hw_set(ar->hw, REPORTS_LOW_ACK);
>      ^~~~~~~~~~~~~~~~

This is expected as this depends on a mac80211 patch which is not
applied yet.
Kalle Valo Sept. 28, 2016, 10:11 a.m. UTC | #3
Rajkumar Manoharan <rmanohar@qti.qualcomm.com> wrote:
> Indicate hardware (or firmware) supports that CQM packet-loss report
> will be generated based on station kickout algorithm. As of now mac80211
> tracks connection loss by missing msdu counts (50) whereas ath10k
> firmware tracks them by missing ppdus (+ BAR tries). While firmware is
> trying to adapt its rate table, mac80211 might send out low_ack event to
> hostapd. This is causing frequent connect and disconnect iteration under
> noisy environment or when station is roaming around.
> 
> Signed-off-by: Rajkumar Manoharan <rmanohar@qti.qualcomm.com>

(Note to myself in patchwork)

Depends on:

e8a24cd4b872 mac80211: allow driver to handle packet-loss mechanism

Is in net-next currently.
Kalle Valo Nov. 23, 2016, 1:53 p.m. UTC | #4
Rajkumar Manoharan <rmanohar@qti.qualcomm.com> wrote:
> Indicate hardware (or firmware) supports that CQM packet-loss report
> will be generated based on station kickout algorithm. As of now mac80211
> tracks connection loss by missing msdu counts (50) whereas ath10k
> firmware tracks them by missing ppdus (+ BAR tries). While firmware is
> trying to adapt its rate table, mac80211 might send out low_ack event to
> hostapd. This is causing frequent connect and disconnect iteration under
> noisy environment or when station is roaming around.
> 
> Signed-off-by: Rajkumar Manoharan <rmanohar@qti.qualcomm.com>

Patch applied to ath-next branch of ath.git, thanks.

ff32eeb86aa1 ath10k: advertize hardware packet loss mechanism
diff mbox

Patch

diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index 79525f769db6..bae7662e7207 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -7865,6 +7865,7 @@  int ath10k_mac_register(struct ath10k *ar)
 	ieee80211_hw_set(ar->hw, WANT_MONITOR_VIF);
 	ieee80211_hw_set(ar->hw, CHANCTX_STA_CSA);
 	ieee80211_hw_set(ar->hw, QUEUE_CONTROL);
+	ieee80211_hw_set(ar->hw, REPORTS_LOW_ACK);
 
 	if (!test_bit(ATH10K_FLAG_RAW_MODE, &ar->dev_flags))
 		ieee80211_hw_set(ar->hw, SW_CRYPTO_CONTROL);