Piotr Oniszczuk <piotr.oniszczuk@xxxxxxxxx> wrote: [...] > > Working: HT RX MCS indexes: 0-15 > Non-working: HT RX MCS indexes: 0-7 > > Isn’t that 8-15 are for 2x2mimo? > So maybe - by some reason - hw sometimes reports support for only 1x mimo but receives from air 2x mimo > (2 streams) and thats why I see hell of "unsupported rf path" errors from driver? I think your point is correct that firmware reports incorrect value somehow. With below changes, we can check this: diff --git a/drivers/net/wireless/realtek/rtw88/main.c b/drivers/net/wireless/realtek/rtw88/main.c index fa0ed39cb199..3363458a9ea1 100644 --- a/drivers/net/wireless/realtek/rtw88/main.c +++ b/drivers/net/wireless/realtek/rtw88/main.c @@ -996,6 +996,9 @@ static void rtw_hw_config_rf_ant_num(struct rtw_dev *rtwdev, u8 hw_ant_num) hal->rf_path_num = 1; if (!chip->fix_rf_phy_num) hal->rf_phy_num = hal->rf_path_num; + printk("%s:%d hal->rf_phy_num=%d hal->rf_path_num=%d hw_ant_num=%d\n", + __func__, __LINE__, hal->rf_phy_num, hal->rf_path_num, hw_ant_num); + hal->antenna_tx = BB_PATH_A; hal->antenna_rx = BB_PATH_A; break; @@ -1874,6 +1877,8 @@ static int rtw_chip_parameter_setup(struct rtw_dev *rtwdev) } hal->rf_phy_num = chip->fix_rf_phy_num ? chip->fix_rf_phy_num : hal->rf_path_num; + printk("%s:%d hal->rf_phy_num=%d hal->rf_path_num=%d\n", + __func__, __LINE__, hal->rf_phy_num, hal->rf_path_num); efuse->physical_size = chip->phy_efuse_size; efuse->logical_size = chip->log_efuse_size; If we found firmware reports incorrect values, let's print out the reported values by this below to see if we can have useful clues. @@ -1948,6 +1953,9 @@ static int rtw_dump_hw_feature(struct rtw_dev *rtwdev) for (i = 0; i < HW_FEATURE_LEN; i++) hw_feature[i] = rtw_read8(rtwdev, REG_C2HEVT + 2 + i); + printk("%s:%d hw_feature = %*ph\n", + __func__, __LINE__, HW_FEATURE_LEN, hw_feature); + rtw_write8(rtwdev, REG_C2HEVT, 0); bw = GET_EFUSE_HW_CAP_BW(hw_feature);