wifi: wireless: declare different S1G chandefs incompatible

It doesn't look like we can get into this code, but make it
more robust and declare two S1G chandefs to be incompatible
unless they're identical.

Link: https://msgid.link/20240129194108.b28fb0644a8c.I9297ada5cf1baf00dbbdf8fcffd1806883489fc9@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
Johannes Berg 2024-01-29 19:34:46 +01:00
parent c478db84c8
commit b9d908dc3a

View File

@ -465,13 +465,18 @@ cfg80211_chandef_compatible(const struct cfg80211_chan_def *c1,
return NULL;
/*
* can't be compatible if one of them is 5 or 10 MHz,
* can't be compatible if one of them is 5/10 MHz or S1G
* but they don't have the same width.
*/
if (c1->width == NL80211_CHAN_WIDTH_5 ||
c1->width == NL80211_CHAN_WIDTH_10 ||
c2->width == NL80211_CHAN_WIDTH_5 ||
c2->width == NL80211_CHAN_WIDTH_10)
#define NARROW_OR_S1G(width) ((width) == NL80211_CHAN_WIDTH_5 || \
(width) == NL80211_CHAN_WIDTH_10 || \
(width) == NL80211_CHAN_WIDTH_1 || \
(width) == NL80211_CHAN_WIDTH_2 || \
(width) == NL80211_CHAN_WIDTH_4 || \
(width) == NL80211_CHAN_WIDTH_8 || \
(width) == NL80211_CHAN_WIDTH_16)
if (NARROW_OR_S1G(c1->width) || NARROW_OR_S1G(c2->width))
return NULL;
if (c1->width == NL80211_CHAN_WIDTH_20_NOHT ||