[PATCH] wifi: mt76: mt792x: skip MTCL country list lookup for default BE mode
JB Tsai <[email protected]>
| Newsgroups | org.infradead.lists.linux-mediatek,org.kernel.vger.linux-wireless |
|---|---|
| Message-ID | <[email protected]> |
From: Charlie-cy Wu <[email protected]> In the v3 MTCL country list parsing, a mode_be value of 0x02 indicates that 11BE enablement should follow the driver default instead of being gated by the per-country BE bitmap. Handle this case explicitly: when cl->mode_be == 0x02, skip the BE/EU country list matching and return the driver default configuration directly, avoiding an unnecessary lookup. Fixes: 7cebc2300de2 ("wifi: mt76: mt792x: extend MTCL of APCI to version3 for EHT control") Signed-off-by: Charlie-cy Wu <[email protected]> --- drivers/net/wireless/mediatek/mt76/mt792x_acpi_sar.c | 11 +++++++---- drivers/net/wireless/mediatek/mt76/mt792x_acpi_sar.h | 7 +++++++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt792x_acpi_sar.c b/drivers/net/wireless/mediatek/mt76/mt792x_acpi_sar.c index 946dd7956e4a..868feadbff61 100644 --- a/drivers/net/wireless/mediatek/mt76/mt792x_acpi_sar.c +++ b/drivers/net/wireless/mediatek/mt76/mt792x_acpi_sar.c @@ -388,7 +388,7 @@ mt792x_acpi_get_mtcl_map_v3(int row, int column, struct mt792x_asar_cl_v3 *cl) u32 config = 0; u8 mode_be = 0; - mode_be = (cl->mode_be > 0x02) ? 0 : cl->mode_be; + mode_be = (cl->mode_be > MT792X_ACPI_MTCL_MODE_DEFAULT) ? 0 : cl->mode_be; if (cl->version > 2 && cl->clbe[row] & BIT(column)) config |= (mode_be & 0x3) << 4; @@ -402,10 +402,10 @@ mt792x_acpi_get_mtcl_map(int row, int column, struct mt792x_asar_cl *cl) u32 config = 0; u8 mode_6g, mode_5g9; - mode_6g = (cl->mode_6g > 0x02) ? 0 : cl->mode_6g; - mode_5g9 = (cl->mode_5g9 > 0x01) ? 0 : cl->mode_5g9; + mode_6g = (cl->mode_6g > MT792X_ACPI_MTCL_MODE_DEFAULT) ? 0 : cl->mode_6g; + mode_5g9 = (cl->mode_5g9 > MT792X_ACPI_MTCL_MODE_ENABLE) ? 0 : cl->mode_5g9; - if ((cl->cl6g[row] & BIT(column)) || cl->mode_6g == 0x02) + if ((cl->cl6g[row] & BIT(column)) || cl->mode_6g == MT792X_ACPI_MTCL_MODE_DEFAULT) config |= (mode_6g & 0x3) << 2; if (cl->version > 1 && cl->cl5g9[row] & BIT(column)) config |= (mode_5g9 & 0x3); @@ -426,6 +426,9 @@ mt792x_acpi_parse_mtcl_tbl_v3(struct mt792x_phy *phy, char *alpha2) if (!cl) return MT792X_ACPI_MTCL_INVALID; + if (cl->mode_be == MT792X_ACPI_MTCL_MODE_DEFAULT) + goto out; + for (i = 0; i < ARRAY_SIZE(cc_list_be); i++) { col = 7 - i % 8; row = i / 8; diff --git a/drivers/net/wireless/mediatek/mt76/mt792x_acpi_sar.h b/drivers/net/wireless/mediatek/mt76/mt792x_acpi_sar.h index 474033073831..110f68438d90 100644 --- a/drivers/net/wireless/mediatek/mt76/mt792x_acpi_sar.h +++ b/drivers/net/wireless/mediatek/mt76/mt792x_acpi_sar.h @@ -17,6 +17,13 @@ #define MT792X_ACPI_MTCL_INVALID 0xffffffff +/* MTCL per-band control mode (mode_6g/mode_5g9/mode_be) */ +enum { + MT792X_ACPI_MTCL_MODE_DISABLE = 0x00, /* force disable */ + MT792X_ACPI_MTCL_MODE_ENABLE = 0x01, /* enable if driver & BIOS support */ + MT792X_ACPI_MTCL_MODE_DEFAULT = 0x02, /* supporting depends on driver setting */ +}; + struct mt792x_asar_dyn_limit { u8 idx; u8 frp[5]; -- 2.18.0