[PATCH ath-next 2/2] wifi: ath11k: keep the BSS color while it is disabled

From: Andrei-Alexandru Bleortu

Date: Sun Oct 04 2026 - 07:27:10 EST


While the BSS Color Disabled subfield is 1, an HE STA shall keep
advertising its nonzero BSS color in the TXVECTOR of the HE PPDUs it
transmits (IEEE Std 802.11-2024, 26.11.4). hostapd disables the color
while it counts down to a color change, and ath11k then set the vdev's
BSS color parameter to "disabled" with color 0.

Keep the color in the parameter and add the disabled flag to it.

Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.9.0.1-02146-QCAHKSWPL_SILICONZ-1

Assisted-by: LLM
Signed-off-by: Andrei-Alexandru Bleortu <me@xxxxxxxxxxxx>
---
drivers/net/wireless/ath/ath11k/mac.c | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/drivers/net/wireless/ath/ath11k/mac.c b/drivers/net/wireless/ath/ath11k/mac.c
index 183796ce1c..58d222a888 100644
--- a/drivers/net/wireless/ath/ath11k/mac.c
+++ b/drivers/net/wireless/ath/ath11k/mac.c
@@ -3812,12 +3812,14 @@ static void ath11k_mac_op_bss_info_changed(struct ieee80211_hw *hw,
ath11k_warn(ar->ab, "failed to set bss color collision on vdev %i: %d\n",
arvif->vdev_id, ret);

+ /* A disabled color stays in the PPDUs the AP transmits
+ * (IEEE Std 802.11-2024, 26.11.4)
+ */
param_id = WMI_VDEV_PARAM_BSS_COLOR;
- if (info->he_bss_color.enabled)
- param_value = info->he_bss_color.color <<
- IEEE80211_HE_OPERATION_BSS_COLOR_OFFSET;
- else
- param_value = IEEE80211_HE_OPERATION_BSS_COLOR_DISABLED;
+ param_value = info->he_bss_color.color <<
+ IEEE80211_HE_OPERATION_BSS_COLOR_OFFSET;
+ if (!info->he_bss_color.enabled)
+ param_value |= IEEE80211_HE_OPERATION_BSS_COLOR_DISABLED;

ret = ath11k_wmi_vdev_set_param_cmd(ar, arvif->vdev_id,
param_id,
--
2.47.3