The following patches extend 802.11 regulatory domain support of the
d80211 wireless stack through two modules:

1. ieee80211_regdomains
2. iso3166-1

These modules provide an interface for management of regulatory
domains. Stack support has not been completed as it requires changes
which should be discussed here first. The hopes of extending
regulatory domains is so we have a consistant method by which all
drivers access valid channels and power restrictions which strictly
adhere to local regulatory domain constraints. Additionally if
in-kernel support of regulatory domains suffices for regulatory
agencies this should clear vendors from supporting FOSS wireless
drivers as this is the most common excuse not to so.

---

Details:


1. ieee80211_regdomains

Breaks down regulatory domains into data structures which allow
drivers to share channel and power contraints based on stack
regulatory domain. This driver adds in-kernel support for common
regulatory domains (such as FCC and ETSI), makes updating the
regulatory domain database through userspace completely optional which
should make it easier to introduce, and adds support for PtMP (Point
to MultiPoint) and PtP (Point to Point) type restrictions.

2. iso3166-1

ISO 3166-1, as part of the ISO 3166 standard, provides codes for the names
of countries and dependent areas. It was first published in 1974 by
the International Organization for Standardization (ISO) and defines three
different codes for each area:

   * ISO 3166-1 alpha-2, a two-letter system with many applications,
     most notably the Internet top-level domains (ccTLD) for countries.
   * ISO 3166-1 alpha-3, a three-letter system.
   * ISO 3166-1 numeric, a three-digit numerical system, which is
   identical to that defined by the United Nations Statistical Division.

Although this would usually be only used in userspace IEEE-802.11d
has made use of ISO-3166-1 alpha 3. This mapping was added
to enhance stack support for IEEE-802.11d and 802.11 Regulatory
Domain control. ieee80211_regdomains makes use of this module
by creating a map of iso3166 alpha3 country code to stack
regulatory domain.

--

Things which need review:

Current regulatory domain support is provided statically in
ieee80211_ioctl.c through ieee80211_regdom module parameter. This is
used to mask channels for scanning through ieee80211_init_client(),
which gets called during ieee80211_update_hw() which itself gets
called in ieee80211_register_hw(). Note that d80211.h also introduces
an unsigned int regulatory_domain in ieee80211_conf struct, this
however is never used even by current drivers or stack code.

The current setup on d80211.h makes regulatory domains device
specific. I believe this should be changed to be stack-specific --
that is, all drivers adhere to the restrictions set by the stack's
current regulatory domain. To enforce this though we'd need some
central stack-specific structure with stack-speficic settings. Are
there other parameters which can be stack-specific and configurable
which can be used to introduce a new structure which defines how the
stack behaves at a certain point in time? Should we take this approach
ieee80211_ioctl.c can then just query the stack regulatory domain
instead of a module_param.

Comments and patches are more than welcomed. Certain regulatory
domains are still being ironed out.

 Luis
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to