On 10/24/06, Johannes Berg <[EMAIL PROTECTED]> wrote:
> and adds support for PtMP (Point > to MultiPoint) and PtP (Point to Point) type restrictions. What are those restrictions?
I'm glad you asked. Here's a quote from: http://university.cyberarmy.net/kb/tiki-index.php?page=The+Power+of+802.11 "In the 2.4Ghz ISM band the FCC stipulates that the creation of PtMP links be subject to the following restrictions: * EIRP must not exceed 4W (36dBm) * IR must not exceed 1W (30dBm) * For every 3dBi of antenna gain after the first 6 "free" dBi the IR must be decreased by 3dBi (the 1:1 rule) For PtP links that rule is thusly augmented: * IR is limited to 1W (30dBm) * For every 3dBi after the first 6 of antenna gain the IR must be decreased by 1dBi (the 3:1 rule) One thing to notice about the rules for the PtP link is that it does not stipulate a maximum EIRP and significantly reduces the penalty for adding antenna gain. In this situation it would be acceptable to have an IR of 25dBm and with a directional antenna adding 21dBm of gain giving us an EIRP of 46dBm or 40W. This is why it is very important to stay away from the front of highly directional antennae. If you have ever wondered what it would be like to squeeze yourself into a microwave and have it turned on... " The restrictions defined in this regulatory module are designed first to tackle PtMP links restrictions but keeps in mind PtP link subband restrictions as well for further advancements. This would ultimately complete regulatory domain support. To support PtP links well though we'd need some further stack enhancements and modifications. Currently I separate PtP and PtMP link restrictions by putting them on separate subband linked list on the regulatory domain. Antenna gain is device specific and for manufacturer's sake and user's hacker's sake we should allow for: 1. Device specific definition of the manufacturer's default antenna gain and... 2. Allow the user to modify this antenna gain in case they modify the antenna. Our due dillegence comes from at least providing built-in regulatory framework and allowing the malleability of the malleable components of such restrictions. If antenna gain is modified we should accordingly modify the device's IR -- notice this requires changes even for PtMP link restrictions as well but support without this was what I was thinking for Phase I of this module. (1) is covered under d80211.h on the ieee80211_conf struct, u8 antenna_max but this is a subband restriction not an entire device restriction. If we want to add this support immediately we can add IR to the subband definition. (2) needs further enhancements on the stack, namely that making IR dynamic based on the device's antenna gain. All this requires a lot of changes. What I'd suggest first is to adopt PtMP link restrictions without supporting dynamic IRs based on antenna gains until Phase II. In Phase II I was hoping we'd tackle this and a userspace daemon through nl80211/cfg80211. d80211 is due to go stable, I was hoping regulatory domains under phase I would be one last addition to it before going stable and Phase II can be the focus for a v2 of a stable d80211.
Similar comments here, why do you build the list at module init time instead of having it static?
It made the code cleaner, feel free to modify if there are benefits through a static approach. I originally attempted a static array approach here but ran into problems quickly due to the dynamic nature of the data structures required for regulatory domains and was having a headache dealing with all the nasty macros to build this statically. I'd suggest we keep things as is unless we have a complete clear understanding of all requirements of regulatory domains. Regulatory domains are not really well documented and this perhaps is the best break down of them that I've seen so far.
Also, do we really need all this data in the kernel?
Another great question. At first I actually wanted all this in userspace but after some consideration figured it'd be best to introduce in the kernel instead. Here are some considerations made me change my mindl: 1. Regulatory restrictions affects the PHY's behaviour directly 2. IEEE-802.11D is a standard which all wireless stacks should hopefully and eventually support. It is based on regulatory domains which dictate how the PHY should work. 3. I believe the benefit in speed of having the regulatory restrictions in the kernel outweight the overhead of having this in the kernel 4. Introduction of a userspace daemon to update all regulatory domains seems like a heavy restriction to immediately force every distribution on. Also there is simply no clear "World" regulatory domain that everyone can live peacefully with. An easier way to introduce regulatory domains would be to have the most popular regulatory domains built-in and slowly support userspace communication to update and manage the regulatory db. So, ultimately userspace should be the place for all this but -- not yet, and even after we've ironed out a new userpsace API for wireless device communication (nl80211 and cfg80211 I'm hoping) we should still consider if the benefits of having this in the kernel outweigh the overhead. For now I think we should stick to supporting this in the kernel with a list of most common regulatory domains defined and supported as optional (as the supplied Kconfig defines). Another idea that I didn't yet complete was to let the user supply the alpha3 country code at kernel config and depending on this select the required regdomain. Current Kconfig implementation makes this pretty messy though. 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