1. 14 1月, 2014 1 次提交
    • L
      ath: fix warning on usage of REGULATORY_CUSTOM_REG · 8fc68580
      Luis R. Rodriguez 提交于
      ath wants to first apply the custom regd and only later
      will it revert to not using it if an alpha2 regulatory
      domain is found. Since the wireless core now enforces
      usage of the REGULATORY_CUSTOM_REG strictly when
      wiphy_apply_custom_regulatory() is used this makes
      ath adhere to the expected behaviour but also updates
      the wiphy after its done with the custom usage.
      
      This fixes this warning:
      
      [    5.488733] ath: phy0: ASPM enabled: 0x43
      [    5.488735] ath: EEPROM regdomain: 0x0
      [    5.488736] ath: EEPROM indicates default country code should be used
      [    5.488736] ath: doing EEPROM country->regdmn map search
      [    5.488737] ath: country maps to regdmn code: 0x3a
      [    5.488737] ath: Country alpha2 being used: US
      [    5.488738] ath: Regpair used: 0x3a
      [    5.488738] ------------[ cut here ]------------
      [    5.488745] WARNING: CPU: 0 PID: 161 at
      	/home/sujith/dev/wireless-testing/net/wireless/reg.c:1361
      	wiphy_apply_custom_regulatory+0x17a/0x1b0 [cfg80211]()
      [    5.488746] wiphy should have REGULATORY_CUSTOM_REG
      
      The wireless core can *later* lift this flag for us for when
      using the regulatory_hint() to make this fix more generic.
      Reported-by: NSujith Manoharan <c_manoha@qca.qualcomm.com>
      Signed-off-by: NLuis R. Rodriguez <mcgrof@do-not-panic.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      8fc68580
  2. 06 12月, 2013 9 次提交
  3. 26 11月, 2013 3 次提交
    • L
      cfg80211: add flags to define country IE processing rules · a09a85a0
      Luis R. Rodriguez 提交于
      802.11 cards may have different country IE parsing behavioural
      preferences and vendors may want to support these. These preferences
      were managed by the REGULATORY_CUSTOM_REG and the REGULATORY_STRICT_REG
      flags and their combination. Instead of using this existing notation,
      split out the country IE behavioural preferences as a new flag. This
      will allow us to add more customizations easily and make the code more
      maintainable.
      
      Cc: Mihir Shete <smihir@qti.qualcomm.com>
      Cc: Henri Bahini <hbahini@qca.qualcomm.com>
      Cc: Tushnim Bhattacharyya <tushnimb@qca.qualcomm.com>
      Signed-off-by: NLuis R. Rodriguez <mcgrof@do-not-panic.com>
      [fix up conflicts]
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      a09a85a0
    • L
      cfg80211: move regulatory flags to their own variable · a2f73b6c
      Luis R. Rodriguez 提交于
      We'll expand this later, this will make it easier to
      classify and review what things are related to regulatory
      or not.
      
      Coccinelle only missed 4 hits, which I had to do manually,
      supplying the SmPL in case of merge conflicts.
      
      @@
      struct wiphy *wiphy;
      @@
      -wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY
      +wiphy->regulatory_flags |= REGULATORY_CUSTOM_REG
      @@
      expression e;
      @@
      -e->flags |= WIPHY_FLAG_CUSTOM_REGULATORY
      +e->regulatory_flags |= REGULATORY_CUSTOM_REG
      @@
      struct wiphy *wiphy;
      @@
      -wiphy->flags &= ~WIPHY_FLAG_CUSTOM_REGULATORY
      +wiphy->regulatory_flags &= ~REGULATORY_CUSTOM_REG
      @@
      struct wiphy *wiphy;
      @@
      -wiphy->flags & WIPHY_FLAG_CUSTOM_REGULATORY
      +wiphy->regulatory_flags & REGULATORY_CUSTOM_REG
      
      @@
      struct wiphy *wiphy;
      @@
      -wiphy->flags |= WIPHY_FLAG_STRICT_REGULATORY
      +wiphy->regulatory_flags |= REGULATORY_STRICT_REG
      @@
      expression e;
      @@
      -e->flags |= WIPHY_FLAG_STRICT_REGULATORY
      +e->regulatory_flags |= REGULATORY_STRICT_REG
      @@
      struct wiphy *wiphy;
      @@
      -wiphy->flags &= ~WIPHY_FLAG_STRICT_REGULATORY
      +wiphy->regulatory_flags &= ~REGULATORY_STRICT_REG
      @@
      struct wiphy *wiphy;
      @@
      -wiphy->flags & WIPHY_FLAG_STRICT_REGULATORY
      +wiphy->regulatory_flags & REGULATORY_STRICT_REG
      
      @@
      struct wiphy *wiphy;
      @@
      -wiphy->flags |= WIPHY_FLAG_DISABLE_BEACON_HINTS
      +wiphy->regulatory_flags |= REGULATORY_DISABLE_BEACON_HINTS
      @@
      expression e;
      @@
      -e->flags |= WIPHY_FLAG_DISABLE_BEACON_HINTS
      +e->regulatory_flags |= REGULATORY_DISABLE_BEACON_HINTS
      @@
      struct wiphy *wiphy;
      @@
      -wiphy->flags &= ~WIPHY_FLAG_DISABLE_BEACON_HINTS
      +wiphy->regulatory_flags &= ~REGULATORY_DISABLE_BEACON_HINTS
      @@
      struct wiphy *wiphy;
      @@
      -wiphy->flags & WIPHY_FLAG_DISABLE_BEACON_HINTS
      +wiphy->regulatory_flags & REGULATORY_DISABLE_BEACON_HINTS
      
      Generated-by: Coccinelle SmPL
      Cc: Julia Lawall <julia.lawall@lip6.fr>
      Cc: Peter Senna Tschudin <peter.senna@gmail.com>
      Cc: Mihir Shete <smihir@qti.qualcomm.com>
      Cc: Henri Bahini <hbahini@qca.qualcomm.com>
      Cc: Tushnim Bhattacharyya <tushnimb@qca.qualcomm.com>
      Signed-off-by: NLuis R. Rodriguez <mcgrof@do-not-panic.com>
      [fix up whitespace damage, overly long lines]
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      a2f73b6c
    • L
      cfg80211: consolidate passive-scan and no-ibss flags · 8fe02e16
      Luis R. Rodriguez 提交于
      These two flags are used for the same purpose, just
      combine them into a no-ir flag to annotate no initiating
      radiation is allowed.
      
      Old userspace sending either flag will have it treated as
      the no-ir flag. To be considerate to older userspace we
      also send both the no-ir flag and the old no-ibss flags.
      Newer userspace will have to be aware of older kernels.
      
      Update all places in the tree using these flags with the
      following semantic patch:
      
      @@
      @@
      -NL80211_RRF_PASSIVE_SCAN
      +NL80211_RRF_NO_IR
      @@
      @@
      -NL80211_RRF_NO_IBSS
      +NL80211_RRF_NO_IR
      @@
      @@
      -IEEE80211_CHAN_PASSIVE_SCAN
      +IEEE80211_CHAN_NO_IR
      @@
      @@
      -IEEE80211_CHAN_NO_IBSS
      +IEEE80211_CHAN_NO_IR
      @@
      @@
      -NL80211_RRF_NO_IR | NL80211_RRF_NO_IR
      +NL80211_RRF_NO_IR
      @@
      @@
      -IEEE80211_CHAN_NO_IR | IEEE80211_CHAN_NO_IR
      +IEEE80211_CHAN_NO_IR
      @@
      @@
      -(NL80211_RRF_NO_IR)
      +NL80211_RRF_NO_IR
      @@
      @@
      -(IEEE80211_CHAN_NO_IR)
      +IEEE80211_CHAN_NO_IR
      
      Along with some hand-optimisations in documentation, to
      remove duplicates and to fix some indentation.
      Signed-off-by: NLuis R. Rodriguez <mcgrof@do-not-panic.com>
      [do all the driver updates in one go]
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      8fe02e16
  4. 16 11月, 2013 1 次提交
  5. 19 10月, 2013 3 次提交
  6. 13 6月, 2013 1 次提交
  7. 14 1月, 2013 1 次提交
  8. 03 1月, 2013 2 次提交
  9. 11 4月, 2012 1 次提交
  10. 14 12月, 2011 2 次提交
  11. 09 11月, 2011 1 次提交
    • H
      ath: Fix NULL ptr dereference in ath_reg_apply_world_flags · a59be081
      Helmut Schaa 提交于
      This happens with devices using a regulatory domain 0x68 that are only
      5Ghz capable because ath_reg_apply_active_scan_flags assumes that we
      always have a 2,4Ghz band.
      
      CPU 0 Unable to handle kernel paging request at virtual address 00000000, epc == 82cd838c, ra == 82cd8384
      Oops[#1]:
      Cpu 0
      $ 0 : 00000000 00000061 00000003 00000024
      $ 4 : 00000003 000016c1 82f900ac 00000024
      $ 8 : 00000000 82cda304 0058bad8 00000005
      $12 : 005908f8 001e8481 00000003 1dcd6500
      $16 : 00000002 00000000 82c700c0 82c700c0
      $20 : 82d415e4 82c70d64 82c70200 82c715bc
      $24 : 00000000 11e1a300
      $28 : 82ce2000 82ce3c70 82c715a8 82cd8384
      Hi : 00000000
      Lo : 0000001e
      epc : 82cd838c ath_reg_apply_world_flags+0x78/0x17c [ath]
      Not tainted
      ra : 82cd8384 ath_reg_apply_world_flags+0x70/0x17c [ath]
      Status: 1000d403 KERNEL EXL IE
      Cause : 80800008
      BadVA : 00000000
      PrId : 00019374 (MIPS 24Kc)
      Modules linked in: ath9k(+) ath9k_common ath9k_hw ath mac80211 cfg80211
      	compat_firmware_class compat arc4 aes_generic deflate ecb cbc
      	leds_gpio button_hotplug gpio_buttons input_polldev ie
      Process insmod (pid: 464, threadinfo=82ce2000, task=838b31d8, tls=00000000)
      Stack : 00000000 00000002 82f900ac 82c700c0 82d415e4 82c70d64 00000000 00000068
      82f900ac 82cd88f4 82c700c0 82cda304 00000001 000020f0 82f90000 82c70d40
      00000002 82f90000 82f900ac 82d4207c 82d518a0 00000002 7fee6118 8017c0d8
      00000008 8397ba00 82c70d40 00000000 82c70200 83813000 83813058 b0010000
      82d518a0 00000002 7fee6118 82d4b8c8 83445cc0 80120dc0 83804000 800eeda0
      ...
      Call Trace:
      [<82cd838c>] ath_reg_apply_world_flags+0x78/0x17c [ath]
      [<82cd88f4>] ath_regd_init+0x464/0x488 [ath]
      [<82d4207c>] ath9k_init_device+0x6a4/0x6b4 [ath9k]
      [<82d4b8c8>] ath_pci_probe+0x27c/0x358 [ath9k]
      [<80181de0>] pci_device_probe+0x64/0xa4
      [<8019e874>] driver_probe_device+0xb8/0x190
      [<8019e9b8>] __driver_attach+0x6c/0xa4
      [<8019dfc0>] bus_for_each_dev+0x60/0xb0
      [<8019d744>] bus_add_driver+0xc4/0x25c
      [<8019ed6c>] driver_register+0xe0/0x198
      [<8018206c>] __pci_register_driver+0x50/0xe0
      [<82dd0010>] ath9k_init+0x10/0x54 [ath9k]
      [<8006b4a0>] do_one_initcall+0x68/0x1ec
      [<800a901c>] sys_init_module+0xec/0x23c
      [<80062544>] stack_done+0x20/0x3c
      Signed-off-by: NHelmut Schaa <helmut.schaa@googlemail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      a59be081
  12. 01 11月, 2011 1 次提交
  13. 20 4月, 2011 1 次提交
  14. 15 4月, 2011 1 次提交
  15. 31 3月, 2011 1 次提交
  16. 29 1月, 2011 1 次提交
    • B
      ath: Add function to check if 4.9GHz channels are allowed · 5719efdd
      Bruno Randolf 提交于
      This adds a helper function to ath/regd.c which can be asked if 4.9GHz channels
      are allowed for a given regulatory domain code. This keeps the knowledge of
      regdomains and defines like MKK9_MKKC in one place. I'm passing the regdomain
      code instead of the ath_regulatory structure because this needs to be called
      quite early in the driver inititalization where ath_regulatory is not available
      yet in ath5k.
      
      I'm using MKK9_MKKC only because this is the regdomain in the 802.11j enabled
      sample cards we got from our vendor. I found some hints in HAL code that this
      is used by Atheros to indicate 4.9GHz channels support and that there might be
      other domain codes as well, but as I don't have any documentation I'm just
      putting in what I need right now. It can be extended later.
      Signed-off-by: NBruno Randolf <br1@einfach.org>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      5719efdd
  17. 17 12月, 2010 1 次提交
    • L
      ath: fix NULL pointer dereference on reg_notifier() · 931299cf
      Luis R. Rodriguez 提交于
      The reg_notifier() was recently updated as being capable of
      having the request passed as NULL, fix ath to follow this API
      change. Without this we end up oopsing:
      
      BUG: unable to handle kernel NULL pointer dereference at 0000000000000004
      IP: [<ffffffffa02fb8cb>] ath_reg_notifier_apply+0x5b/0xa0 [ath]
      PGD b4c4c067 PUD b4c4d067 PMD 0
      Oops: 0000 [#1] SMP DEBUG_PAGEALLOC
      last sysfs file: /sys/devices/pci0000:00/0000:00:1b.0/uevent
      CPU 1
      Modules linked in: <etc>
      Pid: 436, comm: modprobe Not tainted 2.6.37-rc5-wl+ #36 6460DWU/6460DWU
      RIP: 0010:[<ffffffffa02fb8cb>]  [<ffffffffa02fb8cb>] ath_reg_notifier_apply+0x5b/0xa0 [ath]
      RSP: 0018:ffff8800b6f6baa8  EFLAGS: 00010246
      RAX: ffff8800b527b254 RBX: ffff8800b532c180 RCX: 0000000000000018
      RDX: ffff8800b530c108 RSI: 0000000000000000 RDI: ffff8800b532c180
      RBP: ffff8800b6f6baa8 R08: ffff8800b532f268 R09: 0000000000000235
      R10: 00000000000016ad R11: 0000000000000018 R12: 0000000000000000
      R13: 0000000000000016 R14: ffff8800b532f268 R15: 0000000000000011
      FS:  00007f0c53104700(0000) GS:ffff8800bed00000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
      CR2: 0000000000000004 CR3: 00000000b6531000 CR4: 00000000000006e0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      Process modprobe (pid: 436, threadinfo ffff8800b6f6a000, task ffff8800b404dc40)
      Stack:
       ffff8800b6f6bac8 ffffffffa03ea651 ffff8800b532c180 ffff8800b527b254
       ffff8800b6f6bb38 ffffffffa01835ca ffffffffa019ed00 00000000a019ed80
       0000000000000002 ffff880000000002 ffffffffa0366140 0000000010aee572
      Call Trace:
       [<ffffffffa03ea651>] ath9k_reg_notifier+0x41/0x50 [ath9k]
       [<ffffffffa01835ca>] wiphy_update_regulatory+0x4ba/0x5a0 [cfg80211]
       [<ffffffffa0366140>] ? ieee80211_register_hw+0xa0/0x5b0 [mac80211]
       [<ffffffffa0366140>] ? ieee80211_register_hw+0xa0/0x5b0 [mac80211]
       [<ffffffffa017f994>] wiphy_register+0x1d4/0x360 [cfg80211]
       [<ffffffff8114b918>] ? __kmalloc+0x108/0x1c0
       [<ffffffffa0366223>] ieee80211_register_hw+0x183/0x5b0 [mac80211]
       [<ffffffffa03eb49b>] ath9k_init_device+0x66b/0x850 [ath9k]
       [<ffffffffa03f9dd6>] ath_pci_probe+0x2f6/0x3c0 [ath9k]
       [<ffffffff81037529>] ? default_spin_lock_flags+0x9/0x10
       [<ffffffff812e19cf>] local_pci_probe+0x5f/0xd0
       [<ffffffff812e2bf1>] pci_device_probe+0x101/0x120
       [<ffffffff81390aca>] ? driver_sysfs_add+0x7a/0xb0
       [<ffffffff81390c26>] driver_probe_device+0x96/0x1c0
       [<ffffffff81390deb>] __driver_attach+0x9b/0xa0
       [<ffffffff81390d50>] ? __driver_attach+0x0/0xa0
       [<ffffffff81390008>] bus_for_each_dev+0x68/0x90
       [<ffffffff81390a4e>] driver_attach+0x1e/0x20
       [<ffffffff81390309>] bus_add_driver+0xe9/0x290
       [<ffffffffa0407000>] ? ath9k_init+0x0/0x4d [ath9k]
       [<ffffffff81391130>] driver_register+0x80/0x150
       [<ffffffffa0407000>] ? ath9k_init+0x0/0x4d [ath9k]
       [<ffffffffa0407000>] ? ath9k_init+0x0/0x4d [ath9k]
       [<ffffffff812e2e76>] __pci_register_driver+0x56/0xd0
       [<ffffffffa03f9ec3>] ath_pci_init+0x23/0x30 [ath9k]
       [<ffffffffa040702b>] ath9k_init+0x2b/0x4d [ath9k]
       [<ffffffff81002053>] do_one_initcall+0x43/0x190
       [<ffffffff8109fb5b>] sys_init_module+0xbb/0x200
       [<ffffffff8100c042>] system_call_fastpath+0x16/0x1b
      Code: <who even reads this anyway? haha, ok you do>
      RIP  [<ffffffffa02fb8cb>] ath_reg_notifier_apply+0x5b/0xa0 [ath]
       RSP <ffff8800b6f6baa8>
      CR2: 0000000000000004
      ---[ end trace 6d03d3c7eda9f06b ]---
      Signed-off-by: NLuis R. Rodriguez <lrodriguez@atheros.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      931299cf
  18. 14 5月, 2010 1 次提交
    • J
      drivers/net: Remove unnecessary returns from void function()s · a4b77097
      Joe Perches 提交于
      This patch removes from drivers/net/ all the unnecessary
      return; statements that precede the last closing brace of
      void functions.
      
      It does not remove the returns that are immediately
      preceded by a label as gcc doesn't like that.
      
      It also does not remove null void functions with return.
      
      Done via:
      $ grep -rP --include=*.[ch] -l "return;\n}" net/ | \
        xargs perl -i -e 'local $/ ; while (<>) { s/\n[ \t\n]+return;\n}/\n}/g; print; }'
      
      with some cleanups by hand.
      
      Compile tested x86 allmodconfig only.
      Signed-off-by: NJoe Perches <joe@perches.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a4b77097
  19. 07 4月, 2010 1 次提交
  20. 30 3月, 2010 1 次提交
    • T
      include cleanup: Update gfp.h and slab.h includes to prepare for breaking... · 5a0e3ad6
      Tejun Heo 提交于
      include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h
      
      percpu.h is included by sched.h and module.h and thus ends up being
      included when building most .c files.  percpu.h includes slab.h which
      in turn includes gfp.h making everything defined by the two files
      universally available and complicating inclusion dependencies.
      
      percpu.h -> slab.h dependency is about to be removed.  Prepare for
      this change by updating users of gfp and slab facilities include those
      headers directly instead of assuming availability.  As this conversion
      needs to touch large number of source files, the following script is
      used as the basis of conversion.
      
        http://userweb.kernel.org/~tj/misc/slabh-sweep.py
      
      The script does the followings.
      
      * Scan files for gfp and slab usages and update includes such that
        only the necessary includes are there.  ie. if only gfp is used,
        gfp.h, if slab is used, slab.h.
      
      * When the script inserts a new include, it looks at the include
        blocks and try to put the new include such that its order conforms
        to its surrounding.  It's put in the include block which contains
        core kernel includes, in the same order that the rest are ordered -
        alphabetical, Christmas tree, rev-Xmas-tree or at the end if there
        doesn't seem to be any matching order.
      
      * If the script can't find a place to put a new include (mostly
        because the file doesn't have fitting include block), it prints out
        an error message indicating which .h file needs to be added to the
        file.
      
      The conversion was done in the following steps.
      
      1. The initial automatic conversion of all .c files updated slightly
         over 4000 files, deleting around 700 includes and adding ~480 gfp.h
         and ~3000 slab.h inclusions.  The script emitted errors for ~400
         files.
      
      2. Each error was manually checked.  Some didn't need the inclusion,
         some needed manual addition while adding it to implementation .h or
         embedding .c file was more appropriate for others.  This step added
         inclusions to around 150 files.
      
      3. The script was run again and the output was compared to the edits
         from #2 to make sure no file was left behind.
      
      4. Several build tests were done and a couple of problems were fixed.
         e.g. lib/decompress_*.c used malloc/free() wrappers around slab
         APIs requiring slab.h to be added manually.
      
      5. The script was run on all .h files but without automatically
         editing them as sprinkling gfp.h and slab.h inclusions around .h
         files could easily lead to inclusion dependency hell.  Most gfp.h
         inclusion directives were ignored as stuff from gfp.h was usually
         wildly available and often used in preprocessor macros.  Each
         slab.h inclusion directive was examined and added manually as
         necessary.
      
      6. percpu.h was updated not to include slab.h.
      
      7. Build test were done on the following configurations and failures
         were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my
         distributed build env didn't work with gcov compiles) and a few
         more options had to be turned off depending on archs to make things
         build (like ipr on powerpc/64 which failed due to missing writeq).
      
         * x86 and x86_64 UP and SMP allmodconfig and a custom test config.
         * powerpc and powerpc64 SMP allmodconfig
         * sparc and sparc64 SMP allmodconfig
         * ia64 SMP allmodconfig
         * s390 SMP allmodconfig
         * alpha SMP allmodconfig
         * um on x86_64 SMP allmodconfig
      
      8. percpu.h modifications were reverted so that it could be applied as
         a separate patch and serve as bisection point.
      
      Given the fact that I had only a couple of failures from tests on step
      6, I'm fairly confident about the coverage of this conversion patch.
      If there is a breakage, it's likely to be something in one of the arch
      headers which should be easily discoverable easily on most builds of
      the specific arch.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Guess-its-ok-by: NChristoph Lameter <cl@linux-foundation.org>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>
      5a0e3ad6
  21. 09 2月, 2010 1 次提交
    • C
      ath: fix WARN_ON with Polish (Poland) Contry code · 641eabb0
      Christian Lamparter 提交于
      This patch fixes a WARN_ON which is triggered
      by Poland's country code.
      
      ath: EEPROM regdomain: 0x8268
      ath: EEPROM indicates we should expect a country code
      ath: doing EEPROM country->regdmn map search
      ath: country maps to regdmn code: 0x37
      ath: Country alpha2 being used: PL
      ath: Regpair used: 0x37
        -----------[ cut here ]------------
      WARNING: at drivers/net/wireless/ath/regd.c:155 ath_regd_init+0x30b
      Pid: 12661, comm: firmware/carl91 2.6.33-rc5-wl #18
      Call Trace:
       [<>] ? warn_slowpath_common+0x76/0x8c
       [<>] ? ar9170_reg_notifier+0x0/0x2d [carl9170usb]
       [<>] ? ath_regd_init+0x30b/0x377 [ath]
       [<>] ? ar9170_register+0x3b3/0x3ca [carl9170usb]
      [...]
      ---[ end trace ]---
      
      Note: Poland is just an example. But it is very likely
      that more country codes are affected.
      
      Cc: Luis R. Rodriguez <lrodriguez@atheros.com>
      Signed-off-by: NChristian Lamparter <chunkeey@googlemail.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      641eabb0
  22. 20 11月, 2009 1 次提交
  23. 22 7月, 2009 1 次提交
    • L
      ath: add support for special 0x8000 regulatory domain · 5d2214ac
      Luis R. Rodriguez 提交于
      Two users of ar9170 devices have now reported their cards
      have been programmed with a regulatory domain of 0x8000.
      This is not a valid regulatory domain as such these users were
      unable to use these devices. Since this doesn't seem to be
      a device EEPROM corruption we must treat it specially. It
      may have been possible the manufacturer intended to use 0x0
      as the regulatory domain and that would ultimately yield
      to US but since we cannot get confirmationf or this we
      default this special case to one of our world regulatory
      domains, specifically 0x64.
      
      Reported-by: DavidFreeman on #linux-wireless
      Reported-by: NJoerg Albert <jal2@gmx.de>
      Cc: Christian Lamparter <chunkeey@web.de>,
      Cc: Stephen Chen <stephen.chen@atheros.com>
      Cc: David Quan <david.quan@atheros.com>
      Cc: Tony Yang <tony.yang@atheros.com>
      Signed-off-by: NLuis R. Rodriguez <lrodriguez@atheros.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      5d2214ac
  24. 11 7月, 2009 1 次提交
  25. 04 6月, 2009 1 次提交
  26. 21 5月, 2009 1 次提交
    • L
      cfg80211: Process regulatory max bandwidth checks for HT40 · 038659e7
      Luis R. Rodriguez 提交于
      We are not correctly listening to the regulatory max bandwidth
      settings. To actually make use of it we need to redesign things
      a bit. This patch does the work for that. We do this to so we
      can obey to regulatory rules accordingly for use of HT40.
      
      We end up dealing with HT40 by having two passes for each channel.
      
      The first check will see if a 20 MHz channel fits into the channel's
      center freq on a given frequency range. We check for a 20 MHz
      banwidth channel as that is the maximum an individual channel
      will use, at least for now. The first pass will go ahead and
      check if the regulatory rule for that given center of frequency
      allows 40 MHz bandwidths and we use this to determine whether
      or not the channel supports HT40 or not. So to support HT40 you'll
      need at a regulatory rule that allows you to use 40 MHz channels
      but you're channel must also be enabled and support 20 MHz by itself.
      
      The second pass is done after we do the regulatory checks over
      an device's supported channel list. On each channel we'll check
      if the control channel and the extension both:
      
       o exist
       o are enabled
       o regulatory allows 40 MHz bandwidth on its frequency range
      
      This work allows allows us to idependently check for HT40- and
      HT40+.
      Signed-off-by: NLuis R. Rodriguez <lrodriguez@atheros.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      038659e7