Message ID | 20200822144048.3961875-1-john@phrozen.org (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Kalle Valo |
Headers | show |
Series | ath11k: dont enable bss color collision detection on non-transmitting BSS | expand |
Hi John, I love your patch! Yet something to improve: [auto build test ERROR on ath6kl/ath-next] [also build test ERROR on v5.9-rc1 next-20200821] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/John-Crispin/ath11k-dont-enable-bss-color-collision-detection-on-non-transmitting-BSS/20200822-224145 base: https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git ath-next config: m68k-allmodconfig (attached as .config) compiler: m68k-linux-gcc (GCC) 9.3.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=m68k If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): In file included from include/asm-generic/bug.h:5, from arch/m68k/include/asm/bug.h:32, from include/linux/bug.h:5, from include/net/mac80211.h:16, from drivers/net/wireless/ath/ath11k/mac.c:6: include/linux/scatterlist.h: In function 'sg_set_buf': arch/m68k/include/asm/page_mm.h:169:49: warning: ordered comparison of pointer with null pointer [-Wextra] 169 | #define virt_addr_valid(kaddr) ((void *)(kaddr) >= (void *)PAGE_OFFSET && (void *)(kaddr) < high_memory) | ^~ include/linux/compiler.h:78:42: note: in definition of macro 'unlikely' 78 | # define unlikely(x) __builtin_expect(!!(x), 0) | ^ include/linux/scatterlist.h:143:2: note: in expansion of macro 'BUG_ON' 143 | BUG_ON(!virt_addr_valid(buf)); | ^~~~~~ include/linux/scatterlist.h:143:10: note: in expansion of macro 'virt_addr_valid' 143 | BUG_ON(!virt_addr_valid(buf)); | ^~~~~~~~~~~~~~~ drivers/net/wireless/ath/ath11k/mac.c: In function 'ath11k_mac_op_bss_info_changed': >> drivers/net/wireless/ath/ath11k/mac.c:2083:16: error: 'struct ieee80211_vif' has no member named 'multiple_bssid' 2083 | !arvif->vif->multiple_bssid.non_transmitted ? | ^~ # https://github.com/0day-ci/linux/commit/d4e470ff25713316c36087602c3ba595eae84ae2 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review John-Crispin/ath11k-dont-enable-bss-color-collision-detection-on-non-transmitting-BSS/20200822-224145 git checkout d4e470ff25713316c36087602c3ba595eae84ae2 vim +2083 drivers/net/wireless/ath/ath11k/mac.c 1841 1842 static void ath11k_mac_op_bss_info_changed(struct ieee80211_hw *hw, 1843 struct ieee80211_vif *vif, 1844 struct ieee80211_bss_conf *info, 1845 u32 changed) 1846 { 1847 struct ath11k *ar = hw->priv; 1848 struct ath11k_vif *arvif = ath11k_vif_to_arvif(vif); 1849 struct cfg80211_chan_def def; 1850 u32 param_id, param_value; 1851 enum nl80211_band band; 1852 u32 vdev_param; 1853 int mcast_rate; 1854 u32 preamble; 1855 u16 hw_value; 1856 u16 bitrate; 1857 int ret = 0; 1858 u8 rateidx; 1859 u32 rate; 1860 1861 mutex_lock(&ar->conf_mutex); 1862 1863 if (changed & BSS_CHANGED_BEACON_INT) { 1864 arvif->beacon_interval = info->beacon_int; 1865 1866 param_id = WMI_VDEV_PARAM_BEACON_INTERVAL; 1867 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, 1868 param_id, 1869 arvif->beacon_interval); 1870 if (ret) 1871 ath11k_warn(ar->ab, "Failed to set beacon interval for VDEV: %d\n", 1872 arvif->vdev_id); 1873 else 1874 ath11k_dbg(ar->ab, ATH11K_DBG_MAC, 1875 "Beacon interval: %d set for VDEV: %d\n", 1876 arvif->beacon_interval, arvif->vdev_id); 1877 } 1878 1879 if (changed & BSS_CHANGED_BEACON) { 1880 param_id = WMI_PDEV_PARAM_BEACON_TX_MODE; 1881 param_value = WMI_BEACON_STAGGERED_MODE; 1882 ret = ath11k_wmi_pdev_set_param(ar, param_id, 1883 param_value, ar->pdev->pdev_id); 1884 if (ret) 1885 ath11k_warn(ar->ab, "Failed to set beacon mode for VDEV: %d\n", 1886 arvif->vdev_id); 1887 else 1888 ath11k_dbg(ar->ab, ATH11K_DBG_MAC, 1889 "Set staggered beacon mode for VDEV: %d\n", 1890 arvif->vdev_id); 1891 1892 ret = ath11k_mac_setup_bcn_tmpl(arvif); 1893 if (ret) 1894 ath11k_warn(ar->ab, "failed to update bcn template: %d\n", 1895 ret); 1896 1897 if (vif->bss_conf.he_support) { 1898 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, 1899 WMI_VDEV_PARAM_BA_MODE, 1900 WMI_BA_MODE_BUFFER_SIZE_256); 1901 if (ret) 1902 ath11k_warn(ar->ab, 1903 "failed to set BA BUFFER SIZE 256 for vdev: %d\n", 1904 arvif->vdev_id); 1905 else 1906 ath11k_dbg(ar->ab, ATH11K_DBG_MAC, 1907 "Set BA BUFFER SIZE 256 for VDEV: %d\n", 1908 arvif->vdev_id); 1909 } 1910 } 1911 1912 if (changed & (BSS_CHANGED_BEACON_INFO | BSS_CHANGED_BEACON)) { 1913 arvif->dtim_period = info->dtim_period; 1914 1915 param_id = WMI_VDEV_PARAM_DTIM_PERIOD; 1916 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, 1917 param_id, 1918 arvif->dtim_period); 1919 1920 if (ret) 1921 ath11k_warn(ar->ab, "Failed to set dtim period for VDEV %d: %i\n", 1922 arvif->vdev_id, ret); 1923 else 1924 ath11k_dbg(ar->ab, ATH11K_DBG_MAC, 1925 "DTIM period: %d set for VDEV: %d\n", 1926 arvif->dtim_period, arvif->vdev_id); 1927 } 1928 1929 if (changed & BSS_CHANGED_SSID && 1930 vif->type == NL80211_IFTYPE_AP) { 1931 arvif->u.ap.ssid_len = info->ssid_len; 1932 if (info->ssid_len) 1933 memcpy(arvif->u.ap.ssid, info->ssid, info->ssid_len); 1934 arvif->u.ap.hidden_ssid = info->hidden_ssid; 1935 } 1936 1937 if (changed & BSS_CHANGED_BSSID && !is_zero_ether_addr(info->bssid)) 1938 ether_addr_copy(arvif->bssid, info->bssid); 1939 1940 if (changed & BSS_CHANGED_BEACON_ENABLED) 1941 ath11k_control_beaconing(arvif, info); 1942 1943 if (changed & BSS_CHANGED_ERP_CTS_PROT) { 1944 u32 cts_prot; 1945 1946 cts_prot = !!(info->use_cts_prot); 1947 param_id = WMI_VDEV_PARAM_PROTECTION_MODE; 1948 1949 if (arvif->is_started) { 1950 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, 1951 param_id, cts_prot); 1952 if (ret) 1953 ath11k_warn(ar->ab, "Failed to set CTS prot for VDEV: %d\n", 1954 arvif->vdev_id); 1955 else 1956 ath11k_dbg(ar->ab, ATH11K_DBG_MAC, "Set CTS prot: %d for VDEV: %d\n", 1957 cts_prot, arvif->vdev_id); 1958 } else { 1959 ath11k_dbg(ar->ab, ATH11K_DBG_MAC, "defer protection mode setup, vdev is not ready yet\n"); 1960 } 1961 } 1962 1963 if (changed & BSS_CHANGED_ERP_SLOT) { 1964 u32 slottime; 1965 1966 if (info->use_short_slot) 1967 slottime = WMI_VDEV_SLOT_TIME_SHORT; /* 9us */ 1968 1969 else 1970 slottime = WMI_VDEV_SLOT_TIME_LONG; /* 20us */ 1971 1972 param_id = WMI_VDEV_PARAM_SLOT_TIME; 1973 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, 1974 param_id, slottime); 1975 if (ret) 1976 ath11k_warn(ar->ab, "Failed to set erp slot for VDEV: %d\n", 1977 arvif->vdev_id); 1978 else 1979 ath11k_dbg(ar->ab, ATH11K_DBG_MAC, 1980 "Set slottime: %d for VDEV: %d\n", 1981 slottime, arvif->vdev_id); 1982 } 1983 1984 if (changed & BSS_CHANGED_ERP_PREAMBLE) { 1985 u32 preamble; 1986 1987 if (info->use_short_preamble) 1988 preamble = WMI_VDEV_PREAMBLE_SHORT; 1989 else 1990 preamble = WMI_VDEV_PREAMBLE_LONG; 1991 1992 param_id = WMI_VDEV_PARAM_PREAMBLE; 1993 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, 1994 param_id, preamble); 1995 if (ret) 1996 ath11k_warn(ar->ab, "Failed to set preamble for VDEV: %d\n", 1997 arvif->vdev_id); 1998 else 1999 ath11k_dbg(ar->ab, ATH11K_DBG_MAC, 2000 "Set preamble: %d for VDEV: %d\n", 2001 preamble, arvif->vdev_id); 2002 } 2003 2004 if (changed & BSS_CHANGED_ASSOC) { 2005 if (info->assoc) 2006 ath11k_bss_assoc(hw, vif, info); 2007 else 2008 ath11k_bss_disassoc(hw, vif); 2009 } 2010 2011 if (changed & BSS_CHANGED_TXPOWER) { 2012 ath11k_dbg(ar->ab, ATH11K_DBG_MAC, "mac vdev_id %i txpower %d\n", 2013 arvif->vdev_id, info->txpower); 2014 2015 arvif->txpower = info->txpower; 2016 ath11k_mac_txpower_recalc(ar); 2017 } 2018 2019 if (changed & BSS_CHANGED_MCAST_RATE && 2020 !ath11k_mac_vif_chan(arvif->vif, &def)) { 2021 band = def.chan->band; 2022 mcast_rate = vif->bss_conf.mcast_rate[band]; 2023 2024 if (mcast_rate > 0) 2025 rateidx = mcast_rate - 1; 2026 else 2027 rateidx = ffs(vif->bss_conf.basic_rates) - 1; 2028 2029 if (ar->pdev->cap.supported_bands & WMI_HOST_WLAN_5G_CAP) 2030 rateidx += ATH11K_MAC_FIRST_OFDM_RATE_IDX; 2031 2032 bitrate = ath11k_legacy_rates[rateidx].bitrate; 2033 hw_value = ath11k_legacy_rates[rateidx].hw_value; 2034 2035 if (ath11k_mac_bitrate_is_cck(bitrate)) 2036 preamble = WMI_RATE_PREAMBLE_CCK; 2037 else 2038 preamble = WMI_RATE_PREAMBLE_OFDM; 2039 2040 rate = ATH11K_HW_RATE_CODE(hw_value, 0, preamble); 2041 2042 ath11k_dbg(ar->ab, ATH11K_DBG_MAC, 2043 "mac vdev %d mcast_rate %x\n", 2044 arvif->vdev_id, rate); 2045 2046 vdev_param = WMI_VDEV_PARAM_MCAST_DATA_RATE; 2047 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, 2048 vdev_param, rate); 2049 if (ret) 2050 ath11k_warn(ar->ab, 2051 "failed to set mcast rate on vdev %i: %d\n", 2052 arvif->vdev_id, ret); 2053 2054 vdev_param = WMI_VDEV_PARAM_BCAST_DATA_RATE; 2055 ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id, 2056 vdev_param, rate); 2057 if (ret) 2058 ath11k_warn(ar->ab, 2059 "failed to set bcast rate on vdev %i: %d\n", 2060 arvif->vdev_id, ret); 2061 } 2062 2063 if (changed & BSS_CHANGED_BASIC_RATES && 2064 !ath11k_mac_vif_chan(arvif->vif, &def)) 2065 ath11k_recalculate_mgmt_rate(ar, vif, &def); 2066 2067 if (changed & BSS_CHANGED_TWT) { 2068 if (info->twt_requester || info->twt_responder) 2069 ath11k_wmi_send_twt_enable_cmd(ar, ar->pdev->pdev_id); 2070 else 2071 ath11k_wmi_send_twt_disable_cmd(ar, ar->pdev->pdev_id); 2072 } 2073 2074 if (changed & BSS_CHANGED_HE_OBSS_PD) 2075 ath11k_wmi_send_obss_spr_cmd(ar, arvif->vdev_id, 2076 &info->he_obss_pd); 2077 2078 if (changed & BSS_CHANGED_HE_BSS_COLOR) { 2079 if (vif->type == NL80211_IFTYPE_AP) { 2080 ret = ath11k_wmi_send_obss_color_collision_cfg_cmd( 2081 ar, arvif->vdev_id, info->he_bss_color.color, 2082 ATH11K_BSS_COLOR_COLLISION_DETECTION_AP_PERIOD_MS, > 2083 !arvif->vif->multiple_bssid.non_transmitted ? 2084 info->he_bss_color.enabled : 0); 2085 if (ret) 2086 ath11k_warn(ar->ab, "failed to set bss color collision on vdev %i: %d\n", 2087 arvif->vdev_id, ret); 2088 } else if (vif->type == NL80211_IFTYPE_STATION) { 2089 ret = ath11k_wmi_send_bss_color_change_enable_cmd(ar, 2090 arvif->vdev_id, 2091 1); 2092 if (ret) 2093 ath11k_warn(ar->ab, "failed to enable bss color change on vdev %i: %d\n", 2094 arvif->vdev_id, ret); 2095 ret = ath11k_wmi_send_obss_color_collision_cfg_cmd( 2096 ar, arvif->vdev_id, 0, 2097 ATH11K_BSS_COLOR_COLLISION_DETECTION_STA_PERIOD_MS, 1); 2098 if (ret) 2099 ath11k_warn(ar->ab, "failed to set bss color collision on vdev %i: %d\n", 2100 arvif->vdev_id, ret); 2101 } 2102 } 2103 2104 mutex_unlock(&ar->conf_mutex); 2105 } 2106 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
John Crispin <john@phrozen.org> wrote: > A none transmitting BSS color collision detection should not be enabled. > > This patch depends on the BSS coloring and multiple bssid series. > > Signed-off-by: John Crispin <john@phrozen.org> Tested-on missing, on what hardware and firmware did you test this?
diff --git a/drivers/net/wireless/ath/ath11k/mac.c b/drivers/net/wireless/ath/ath11k/mac.c index 06cd61c5c681..c50e653df535 100644 --- a/drivers/net/wireless/ath/ath11k/mac.c +++ b/drivers/net/wireless/ath/ath11k/mac.c @@ -2119,7 +2119,8 @@ static void ath11k_mac_op_bss_info_changed(struct ieee80211_hw *hw, ret = ath11k_wmi_send_obss_color_collision_cfg_cmd( ar, arvif->vdev_id, info->he_bss_color.color, ATH11K_BSS_COLOR_COLLISION_DETECTION_AP_PERIOD_MS, - info->he_bss_color.enabled); + !arvif->vif->multiple_bssid.non_transmitted ? + info->he_bss_color.enabled : 0); if (ret) ath11k_warn(ar->ab, "failed to set bss color collision on vdev %i: %d\n", arvif->vdev_id, ret);
A none transmitting BSS color collision detection should not be enabled. This patch depends on the BSS coloring and multiple bssid series. Signed-off-by: John Crispin <john@phrozen.org> --- drivers/net/wireless/ath/ath11k/mac.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)