Message ID | ed704f40d9681041d330b1c55dcaf4b10f50c331.1637684612.git.lorenzo@kernel.org (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Felix Fietkau |
Headers | show |
Series | mt76: mt7915: introduce SAR support | expand |
Hi Lorenzo, I love your patch! Yet something to improve: [auto build test ERROR on kvalo-wireless-drivers-next/master] [also build test ERROR on kvalo-wireless-drivers/master v5.16-rc2 next-20211124] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Lorenzo-Bianconi/mt76-mt7915-introduce-SAR-support/20211124-002511 base: https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git master config: i386-allyesconfig (https://download.01.org/0day-ci/archive/20211125/202111250358.9Q5qPltH-lkp@intel.com/config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 reproduce (this is a W=1 build): # https://github.com/0day-ci/linux/commit/8f018463c8934b4706320982f195e3779ef4b25a git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Lorenzo-Bianconi/mt76-mt7915-introduce-SAR-support/20211124-002511 git checkout 8f018463c8934b4706320982f195e3779ef4b25a # save the config file to linux build tree make W=1 ARCH=i386 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com> All errors (new ones prefixed by >>): drivers/net/wireless/mediatek/mt76/mt7915/main.c: In function 'mt7915_set_sar_specs': >> drivers/net/wireless/mediatek/mt76/mt7915/main.c:439:8: error: implicit declaration of function 'mt76_init_sar_power'; did you mean 'mt76_get_txpower'? [-Werror=implicit-function-declaration] 439 | err = mt76_init_sar_power(hw, sar); | ^~~~~~~~~~~~~~~~~~~ | mt76_get_txpower cc1: some warnings being treated as errors -- drivers/net/wireless/mediatek/mt76/mt7915/mcu.c:2392:5: warning: no previous prototype for 'mt7915_mcu_set_fixed_rate' [-Wmissing-prototypes] 2392 | int mt7915_mcu_set_fixed_rate(struct mt7915_dev *dev, | ^~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/wireless/mediatek/mt76/mt7915/mcu.c: In function 'mt7915_mcu_set_txpower_sku': >> drivers/net/wireless/mediatek/mt76/mt7915/mcu.c:3859:13: error: implicit declaration of function 'mt76_get_sar_power'; did you mean 'mt76_get_txpower'? [-Werror=implicit-function-declaration] 3859 | tx_power = mt76_get_sar_power(mphy, mphy->chandef.chan, | ^~~~~~~~~~~~~~~~~~ | mt76_get_txpower cc1: some warnings being treated as errors vim +439 drivers/net/wireless/mediatek/mt76/mt7915/main.c 427 428 static int mt7915_set_sar_specs(struct ieee80211_hw *hw, 429 const struct cfg80211_sar_specs *sar) 430 { 431 struct mt7915_phy *phy = mt7915_hw_phy(hw); 432 struct mt7915_dev *dev = mt7915_hw_dev(hw); 433 int err = -EINVAL; 434 435 mutex_lock(&dev->mt76.mutex); 436 if (!cfg80211_chandef_valid(&phy->mt76->chandef)) 437 goto out; 438 > 439 err = mt76_init_sar_power(hw, sar); 440 if (err) 441 goto out; 442 443 err = mt7915_mcu_set_txpower_sku(phy); 444 out: 445 mutex_unlock(&dev->mt76.mutex); 446 447 return err; 448 } 449 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/main.c b/drivers/net/wireless/mediatek/mt76/mt7915/main.c index 057ab27b7083..2179ea85d304 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7915/main.c +++ b/drivers/net/wireless/mediatek/mt76/mt7915/main.c @@ -425,6 +425,28 @@ static int mt7915_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd, return err; } +static int mt7915_set_sar_specs(struct ieee80211_hw *hw, + const struct cfg80211_sar_specs *sar) +{ + struct mt7915_phy *phy = mt7915_hw_phy(hw); + struct mt7915_dev *dev = mt7915_hw_dev(hw); + int err = -EINVAL; + + mutex_lock(&dev->mt76.mutex); + if (!cfg80211_chandef_valid(&phy->mt76->chandef)) + goto out; + + err = mt76_init_sar_power(hw, sar); + if (err) + goto out; + + err = mt7915_mcu_set_txpower_sku(phy); +out: + mutex_unlock(&dev->mt76.mutex); + + return err; +} + static int mt7915_config(struct ieee80211_hw *hw, u32 changed) { struct mt7915_dev *dev = mt7915_hw_dev(hw); @@ -1331,6 +1353,7 @@ const struct ieee80211_ops mt7915_ops = { .sw_scan_complete = mt76_sw_scan_complete, .release_buffered_frames = mt76_release_buffered_frames, .get_txpower = mt76_get_txpower, + .set_sar_specs = mt7915_set_sar_specs, .channel_switch_beacon = mt7915_channel_switch_beacon, .get_stats = mt7915_get_stats, .get_et_sset_count = mt7915_get_et_sset_count, diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7915/mcu.c index 7ed1c47dec63..d7a6df23fc42 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7915/mcu.c +++ b/drivers/net/wireless/mediatek/mt76/mt7915/mcu.c @@ -3856,11 +3856,11 @@ int mt7915_mcu_set_txpower_sku(struct mt7915_phy *phy) struct mt76_power_limits limits_array; s8 *la = (s8 *)&limits_array; int i, idx, n_chains = hweight8(mphy->antenna_mask); - int tx_power; - - tx_power = hw->conf.power_level * 2 - - mt76_tx_power_nss_delta(n_chains); + int tx_power = hw->conf.power_level * 2; + tx_power = mt76_get_sar_power(mphy, mphy->chandef.chan, + tx_power); + tx_power -= mt76_tx_power_nss_delta(n_chains); tx_power = mt76_get_rate_power_limits(mphy, mphy->chandef.chan, &limits_array, tx_power); mphy->txpower_cur = tx_power;
Add SAR spec support to mt7915 driver to allow configuring SAR power limitations on the frequency ranges from the userland. Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> --- .../net/wireless/mediatek/mt76/mt7915/main.c | 23 +++++++++++++++++++ .../net/wireless/mediatek/mt76/mt7915/mcu.c | 8 +++---- 2 files changed, 27 insertions(+), 4 deletions(-)