Search Linux Wireless

Re: [PATCH v3 3/3] cfg80211: Allow usermode to query wiphy specific regd info

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Nov 26, 2014 at 6:47 PM, Luis R. Rodriguez <mcgrof@xxxxxxxx> wrote:
> On Wed, Nov 26, 2014 at 11:43 AM, Arik Nemtsov <arik@xxxxxxxxxx> wrote:
>> On Tue, Nov 25, 2014 at 10:28 PM, Luis R. Rodriguez <mcgrof@xxxxxxxx> wrote:
>>> On Sun, Nov 23, 2014 at 05:02:21PM +0200, Arik Nemtsov wrote:
>>>> From: Jonathan Doron <jond@xxxxxxxxxx>
>>>>
>>>> Allow usermode to query wiphy-specific regd info, for drivers that use
>>>> wiphy-specific regulatory management.
>>>>
>>>> Use the existing API for sending regdomain info to usermode, but return
>>>> the wiphy-specific regd in case wiphy index is provided and the driver
>>>> employs wiphy-specific management. This implies user and kernel-mode
>>>> support for the feature and is backward compatible.
>>>>
>>>> Signed-off-by: Jonathan Doron <jonathanx.doron@xxxxxxxxx>
>>>> Signed-off-by: Arik Nemtsov <arikx.nemtsov@xxxxxxxxx>
>>>> ---
>>>>  include/uapi/linux/nl80211.h | 18 ++++++++++-
>>>>  net/wireless/nl80211.c       | 71 ++++++++++++++++++++++++++++++++++++--------
>>>>  net/wireless/reg.c           |  2 +-
>>>>  net/wireless/reg.h           |  1 +
>>>>  4 files changed, 78 insertions(+), 14 deletions(-)
>>>>
>>>> diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
>>>> index 3771e7d..b222e5c 100644
>>>> --- a/include/uapi/linux/nl80211.h
>>>> +++ b/include/uapi/linux/nl80211.h
>>>> @@ -252,7 +252,12 @@
>>>>   *   %NL80211_ATTR_IFINDEX.
>>>>   *
>>>>   * @NL80211_CMD_GET_REG: ask the wireless core to send us its currently set
>>>> - *   regulatory domain.
>>>> + *   regulatory domain. If %NL80211_ATTR_WIPHY is specified and the device
>>>> + *   self-manages its regulatory settings, its private regulatory domain
>>>> + *   will be returned.
>>>> + *   If %NL80211_ATTR_WIPHY_GET_PRIV_REG is specified in addition to
>>>> + *   %NL80211_ATTR_WIPHY, a device's private regulatory domain will be
>>>> + *   returned, even if it's regulatory is not self-managed.
>>>>   * @NL80211_CMD_SET_REG: Set current regulatory domain. CRDA sends this command
>>>>   *   after being queried by the kernel. CRDA replies by sending a regulatory
>>>>   *   domain structure which consists of %NL80211_ATTR_REG_ALPHA set to our
>>>> @@ -1693,6 +1698,14 @@ enum nl80211_commands {
>>>>   *
>>>>   * @NL80211_ATTR_MAC_MASK: MAC address mask
>>>>   *
>>>> + * @NL80211_ATTR_WIPHY_SELF_MANAGED_REG: flag attribute indicating the
>>>> + *   regulatory information was obtained from the private regdomain
>>>> + *   of a device with self-managed regulatory.
>>>> + * @NL80211_ATTR_WIPHY_GET_PRIV_REG: flag attribute indicating the regulatory
>>>> + *   information should be obtained from a device's private regdomain,
>>>> + *   if it exists. This will happen even if the device is not self-managing
>>>> + *   its regulatory.
>>>
>>> As with REGULATORY_WIPHY_SELF_MANAGED we need a flag that cfg80211 sets for
>>> drivers that use regulatory_hint() API, perhaps REGULATORY_WIPHY_REG_HINT.
>>> Then this can be used by cfg80211 to send to userspace regdomains for wiphys
>>> that have used this API. Below you enable userspace to only query for these
>>> explictly but we want to be able to let userspace get all information, ie
>>> through 'iw reg get'. This should go in as a separate patch along with
>>> NL80211_ATTR_WIPHY_GET_PRIV_REG as its use predates
>>> NL80211_ATTR_WIPHY_SELF_MANAGED_REG, this will also let you stuff in the boiler
>>> plate code for getting that reg first, getting self managed regd's can then
>>> go in as a clear secondary evolutionary step.
>>
>> Note that we don't really need the new REGULATORY_WIPHY_REG_HINT.. If
>> a wiphy is not self-managed, we can just put
>> NL80211_ATTR_WIPHY_PRIV_REG, since it's obvious the regulatory_hint
>> API was used.
>
> What if a driver sets the managed flag and then uses regulatory_hint()
> ? Either way if this is addressed and we can also infer what type of
> wiphy->regd it is well that's OK with me, the flag idea was just in
> case we needed it, so I think you might be right.

A self-managed device can't use regulatory_hint().. This is the
regular path which also updates the cfg80211 regdomain.
If a device tries to do that, the new regd from CRDA will never reach
it. So we're covered here.

Arik
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux