Commit 4044b237 authored by Michael-CY Lee's avatar Michael-CY Lee Committed by Johannes Berg

wifi: mac80211: do not check BSS color collision in certain cases

Do not check BSS color collision in following cases
1. already under a color change
2. color change is disabled
Signed-off-by: default avatarMichael-CY Lee <michael-cy.lee@mediatek.com>
Link: https://patch.msgid.link/20240705074346.11228-1-michael-cy.lee@mediatek.comSigned-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 7cd44563
...@@ -3358,6 +3358,7 @@ static void ...@@ -3358,6 +3358,7 @@ static void
ieee80211_rx_check_bss_color_collision(struct ieee80211_rx_data *rx) ieee80211_rx_check_bss_color_collision(struct ieee80211_rx_data *rx)
{ {
struct ieee80211_mgmt *mgmt = (void *)rx->skb->data; struct ieee80211_mgmt *mgmt = (void *)rx->skb->data;
struct ieee80211_bss_conf *bss_conf;
const struct element *ie; const struct element *ie;
size_t baselen; size_t baselen;
...@@ -3368,7 +3369,9 @@ ieee80211_rx_check_bss_color_collision(struct ieee80211_rx_data *rx) ...@@ -3368,7 +3369,9 @@ ieee80211_rx_check_bss_color_collision(struct ieee80211_rx_data *rx)
if (ieee80211_hw_check(&rx->local->hw, DETECTS_COLOR_COLLISION)) if (ieee80211_hw_check(&rx->local->hw, DETECTS_COLOR_COLLISION))
return; return;
if (rx->link->conf->csa_active) bss_conf = rx->link->conf;
if (bss_conf->csa_active || bss_conf->color_change_active ||
!bss_conf->he_bss_color.enabled)
return; return;
baselen = mgmt->u.beacon.variable - rx->skb->data; baselen = mgmt->u.beacon.variable - rx->skb->data;
...@@ -3380,7 +3383,6 @@ ieee80211_rx_check_bss_color_collision(struct ieee80211_rx_data *rx) ...@@ -3380,7 +3383,6 @@ ieee80211_rx_check_bss_color_collision(struct ieee80211_rx_data *rx)
rx->skb->len - baselen); rx->skb->len - baselen);
if (ie && ie->datalen >= sizeof(struct ieee80211_he_operation) && if (ie && ie->datalen >= sizeof(struct ieee80211_he_operation) &&
ie->datalen >= ieee80211_he_oper_size(ie->data + 1)) { ie->datalen >= ieee80211_he_oper_size(ie->data + 1)) {
struct ieee80211_bss_conf *bss_conf = rx->link->conf;
const struct ieee80211_he_operation *he_oper; const struct ieee80211_he_operation *he_oper;
u8 color; u8 color;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment