]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
rtw88: choose the lowest as world-wide power limit
authorYan-Hsuan Chuang <yhchuang@realtek.com>
Wed, 29 May 2019 07:54:42 +0000 (15:54 +0800)
committerKalle Valo <kvalo@codeaurora.org>
Thu, 27 Jun 2019 17:24:25 +0000 (20:24 +0300)
When we are loading tx power limit from the power limit table, compare
the world-wide limit with the current limit and choose the lowest power
limit for the world-wide power settings.

Signed-off-by: Yan-Hsuan Chuang <yhchuang@realtek.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/realtek/rtw88/phy.c

index 95f2b87ad0cc37187a0f943519ab0297cd07ee40..ce26b1506e77e6df11f0d115d0c0dc99d4df7d85 100644 (file)
@@ -1170,6 +1170,7 @@ static void rtw_phy_set_tx_power_limit(struct rtw_dev *rtwdev, u8 regd, u8 band,
                                       u8 bw, u8 rs, u8 ch, s8 pwr_limit)
 {
        struct rtw_hal *hal = &rtwdev->hal;
+       s8 ww;
        int ch_idx;
 
        pwr_limit = clamp_t(s8, pwr_limit,
@@ -1184,10 +1185,17 @@ static void rtw_phy_set_tx_power_limit(struct rtw_dev *rtwdev, u8 regd, u8 band,
                return;
        }
 
-       if (band == PHY_BAND_2G)
+       if (band == PHY_BAND_2G) {
                hal->tx_pwr_limit_2g[regd][bw][rs][ch_idx] = pwr_limit;
-       else if (band == PHY_BAND_5G)
+               ww = hal->tx_pwr_limit_2g[RTW_REGD_WW][bw][rs][ch_idx];
+               ww = min_t(s8, ww, pwr_limit);
+               hal->tx_pwr_limit_2g[RTW_REGD_WW][bw][rs][ch_idx] = ww;
+       } else if (band == PHY_BAND_5G) {
                hal->tx_pwr_limit_5g[regd][bw][rs][ch_idx] = pwr_limit;
+               ww = hal->tx_pwr_limit_5g[RTW_REGD_WW][bw][rs][ch_idx];
+               ww = min_t(s8, ww, pwr_limit);
+               hal->tx_pwr_limit_5g[RTW_REGD_WW][bw][rs][ch_idx] = ww;
+       }
 }
 
 void rtw_parse_tbl_txpwr_lmt(struct rtw_dev *rtwdev,