• Carl Huang's avatar
    nl80211: add common API to configure SAR power limitations · 6bdb68ce
    Carl Huang authored
    NL80211_CMD_SET_SAR_SPECS is added to configure SAR from
    user space. NL80211_ATTR_SAR_SPEC is used to pass the SAR
    power specification when used with NL80211_CMD_SET_SAR_SPECS.
    
    Wireless driver needs to register SAR type, supported frequency
    ranges to wiphy, so user space can query it. The index in
    frequency range is used to specify which sub band the power
    limitation applies to. The SAR type is for compatibility, so later
    other SAR mechanism can be implemented without breaking the user
    space SAR applications.
    
    Normal process is user space queries the SAR capability, and
    gets the index of supported frequency ranges and associates the
    power limitation with this index and sends to kernel.
    
    Here is an example of message send to kernel:
    8c 00 00 00 08 00 01 00 00 00 00 00 38 00 2b 81
    08 00 01 00 00 00 00 00 2c 00 02 80 14 00 00 80
    08 00 02 00 00 00 00 00 08 00 01 00 38 00 00 00
    14 00 01 80 08 00 02 00 01 00 00 00 08 00 01 00
    48 00 00 00
    
    NL80211_CMD_SET_SAR_SPECS:  0x8c
    NL80211_ATTR_WIPHY:     0x01(phy idx is 0)
    NL80211_ATTR_SAR_SPEC:  0x812b (NLA_NESTED)
    NL80211_SAR_ATTR_TYPE:  0x00 (NL80211_SAR_TYPE_POWER)
    NL80211_SAR_ATTR_SPECS: 0x8002 (NLA_NESTED)
    freq range 0 power: 0x38 in 0.25dbm unit (14dbm)
    freq range 1 power: 0x48 in 0.25dbm unit (18dbm)
    Signed-off-by: default avatarCarl Huang <cjhuang@codeaurora.org>
    Reviewed-by: default avatarBrian Norris <briannorris@chromium.org>
    Reviewed-by: default avatarAbhishek Kumar <kuabhs@chromium.org>
    Link: https://lore.kernel.org/r/20201203103728.3034-2-cjhuang@codeaurora.org
    [minor edits, NLA parse cleanups]
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    6bdb68ce
nl80211.c 487 KB