1. 24 2月, 2011 2 次提交
  2. 19 2月, 2011 5 次提交
    • V
      mac80211: Clear PS related flag on disabling power save. · db28569a
      Vivek Natarajan 提交于
      Clear IEEE80211_STA_NULLFUNC_ACKED flag on disabling power
      save. Without this fix, there is a chance of setting CONF_PS
      before sending nullfunc frame.
      Signed-off-by: NVivek Natarajan <vnatarajan@atheros.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      db28569a
    • J
      small adjustment to net/mac80211/Kconfig · 540005c7
      Jan Beulich 提交于
      "def_bool n" without prompt is pointless, this should be just "bool".
      Signed-off-by: NJan Beulich <jbeulich@novell.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      540005c7
    • J
      mac80211: fix 2.4 GHz 40 MHz disabling · 8ba0537c
      Johannes Berg 提交于
      The module parameter ieee80211_disable_40mhz_24ghz
      was meant to allow disabling 40 MHz operation in
      the 2.4 GHz band by default. However, it is buggy
      as implemented because while it advertises to the
      AP that the device doesn't support 40 MHz, it will
      itself still use 40 MHz configurations.
      
      To fix this, clear the 40 MHz bits from the sband
      completely instead of overriding where used.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      8ba0537c
    • B
      mac80211: Add power to debugfs. · 83bdf2a1
      Ben Greear 提交于
      Signed-off-by: NBen Greear <greearb@candelatech.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      83bdf2a1
    • S
      mac80211: fix conn_mon_timer running after disassociate · 05e7c991
      Stanislaw Gruszka 提交于
      Low level driver could pass rx frames to us after disassociate, what
      can lead to run conn_mon_timer by ieee80211_sta_rx_notify(). That
      is obviously wrong, but nothing happens until we unload modules and
      resources are used after free. If kernel debugging is enabled following
      warning could be observed:
      
      WARNING: at lib/debugobjects.c:259 debug_print_object+0x65/0x70()
      Hardware name: HP xw8600 Workstation
      ODEBUG: free active (active state 0) object type: timer_list
      Modules linked in: iwlagn(-) iwlcore mac80211 cfg80211 aes_x86_64 aes_generic fuse cpufreq_ondemand acpi_cpufreq freq_table mperf xt_physdev ipt_REJECT nf_conntrack_ipv4 nf_defrag_ipv4 iptable_filter ip_tables ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 xt_state nf_conntrack ip6table_filter ip6_tables ipv6 ext3 jbd dm_mirror dm_region_hash dm_log dm_mod uinput hp_wmi sparse_keymap sg wmi arc4 microcode serio_raw ecb tg3 shpchp rfkill ext4 mbcache jbd2 sr_mod cdrom sd_mod crc_t10dif firewire_ohci firewire_core crc_itu_t mptsas mptscsih mptbase scsi_transport_sas ahci libahci pata_acpi ata_generic ata_piix floppy nouveau ttm drm_kms_helper drm i2c_algo_bit i2c_core video [last unloaded: cfg80211]
      Pid: 13827, comm: rmmod Tainted: G        W   2.6.38-rc4-wl+ #22
      Call Trace:
       [<ffffffff810649cf>] ? warn_slowpath_common+0x7f/0xc0
       [<ffffffff81064ac6>] ? warn_slowpath_fmt+0x46/0x50
       [<ffffffff81226fc5>] ? debug_print_object+0x65/0x70
       [<ffffffff81227625>] ? debug_check_no_obj_freed+0x125/0x210
       [<ffffffff8109ebd7>] ? debug_check_no_locks_freed+0xf7/0x170
       [<ffffffff81156092>] ? kfree+0xc2/0x2f0
       [<ffffffff813ec5c5>] ? netdev_release+0x45/0x60
       [<ffffffff812f1067>] ? device_release+0x27/0xa0
       [<ffffffff81216ddd>] ? kobject_release+0x8d/0x1a0
       [<ffffffff81216d50>] ? kobject_release+0x0/0x1a0
       [<ffffffff812183b7>] ? kref_put+0x37/0x70
       [<ffffffff81216c57>] ? kobject_put+0x27/0x60
       [<ffffffff813d5d1b>] ? netdev_run_todo+0x1ab/0x270
       [<ffffffff813e771e>] ? rtnl_unlock+0xe/0x10
       [<ffffffffa0581188>] ? ieee80211_unregister_hw+0x58/0x120 [mac80211]
       [<ffffffffa0377ed7>] ? iwl_pci_remove+0xdb/0x22a [iwlagn]
       [<ffffffff8123cde2>] ? pci_device_remove+0x52/0x120
       [<ffffffff812f5205>] ? __device_release_driver+0x75/0xe0
       [<ffffffff812f5348>] ? driver_detach+0xd8/0xe0
       [<ffffffff812f4111>] ? bus_remove_driver+0x91/0x100
       [<ffffffff812f5b62>] ? driver_unregister+0x62/0xa0
       [<ffffffff8123d194>] ? pci_unregister_driver+0x44/0xa0
       [<ffffffffa0377df5>] ? iwl_exit+0x15/0x1c [iwlagn]
       [<ffffffff810ab492>] ? sys_delete_module+0x1a2/0x270
       [<ffffffff81498889>] ? trace_hardirqs_on_thunk+0x3a/0x3f
       [<ffffffff8100bf42>] ? system_call_fastpath+0x16/0x1b
      Acked-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NStanislaw Gruszka <sgruszka@redhat.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      05e7c991
  3. 15 2月, 2011 2 次提交
  4. 10 2月, 2011 5 次提交
    • B
      mac80211: Ensure power-level set properly for scanning. · 59bdf3b0
      Ben Greear 提交于
      My previous patch to optimize scanning on operating channel
      accidentally removed the code that would ensure power was
      set to maximum for scanning.
      
      This patch re-adds that functionality.
      Signed-off-by: NBen Greear <greearb@candelatech.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      59bdf3b0
    • B
      mac80211: Allow work items to use existing channel type. · da2fd1f0
      Ben Greear 提交于
      Narrow channel types can function within larger channel types.
      So, use existing channel type for work items when possible.
      This decreases hardware channel changes significantly when
      using non NO_HT channel types on the operating channel.
      Signed-off-by: NBen Greear <greearb@candelatech.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      da2fd1f0
    • B
      mac80211: Allow scanning on existing channel-type. · 4f2e9d91
      Ben Greear 提交于
      Previous code set the channel type to NO_HT, but it
      appears that NO_HT packets can be sent on any channel
      type, so we do not need to change the channel type
      as long as the channel is correct.
      Signed-off-by: NBen Greear <greearb@candelatech.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      4f2e9d91
    • B
      mac80211: Properly set work-item channel-type. · 4d51e149
      Ben Greear 提交于
      Some were indirectly set to NO_HT (zero), but I think
      it's better to explicitly set it in case the enum ever
      changes.  In cfg.c, it seems the channel-type was just
      ignored (and thus always set to NO_HT).
      Signed-off-by: NBen Greear <greearb@candelatech.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      4d51e149
    • E
      mac80211: add missing locking in ieee80211_reconfig · a7b545f7
      Eliad Peller 提交于
      When suspending an associated system, and then resuming,
      the station vif is being reconfigured without taking the
      sdata->u.mgd.mtx lock, which results in the following warning:
      
      WARNING: at net/mac80211/mlme.c:101 ieee80211_ap_probereq_get+0x58/0xb8 [mac80211]()
      Modules linked in: wl12xx_sdio wl12xx firmware_class crc7 mac80211 cfg80211 [last unloaded: crc7]
      Backtrace:
      [<c005432c>] (dump_backtrace+0x0/0x118) from [<c0376e28>] (dump_stack+0x20/0x24)
       r7:00000000 r6:bf12d6ec r5:bf154aac r4:00000065
      [<c0376e08>] (dump_stack+0x0/0x24) from [<c0079104>] (warn_slowpath_common+0x5c/0x74)
      [<c00790a8>] (warn_slowpath_common+0x0/0x74) from [<c0079148>] (warn_slowpath_null+0x2c/0x34)
       r9:000024ff r8:cd006460 r7:00000001 r6:00000000 r5:00000000
      r4:cf1394a0
      [<c007911c>] (warn_slowpath_null+0x0/0x34) from [<bf12d6ec>] (ieee80211_ap_probereq_get+0x58/0xb8 [mac80211])
      [<bf12d694>] (ieee80211_ap_probereq_get+0x0/0xb8 [mac80211]) from [<bf19cd04>] (wl1271_cmd_build_ap_probe_req+0x30/0xf8 [wl12xx])
       r4:cd007440
      [<bf19ccd4>] (wl1271_cmd_build_ap_probe_req+0x0/0xf8 [wl12xx]) from [<bf1995f4>] (wl1271_op_bss_info_changed+0x4c4/0x808 [wl12xx])
       r5:cd007440 r4:000003b4
      [<bf199130>] (wl1271_op_bss_info_changed+0x0/0x808 [wl12xx]) from [<bf122168>] (ieee80211_bss_info_change_notify+0x1a4/0x1f8 [mac80211])
      [<bf121fc4>] (ieee80211_bss_info_change_notify+0x0/0x1f8 [mac80211]) from [<bf141e80>] (ieee80211_reconfig+0x4d0/0x668 [mac80211])
       r8:cf0eeea4 r7:cd00671c r6:00000000 r5:cd006460 r4:cf1394a0
      [<bf1419b0>] (ieee80211_reconfig+0x0/0x668 [mac80211]) from [<bf137dd4>] (ieee80211_resume+0x60/0x70 [mac80211])
      [<bf137d74>] (ieee80211_resume+0x0/0x70 [mac80211]) from [<bf0eb930>] (wiphy_resume+0x6c/0x7c [cfg80211])
       r5:cd006248 r4:cd006110
      [<bf0eb8c4>] (wiphy_resume+0x0/0x7c [cfg80211]) from [<c0241024>] (legacy_resume+0x38/0x70)
       r7:00000000 r6:00000000 r5:cd006248 r4:cd0062fc
      [<c0240fec>] (legacy_resume+0x0/0x70) from [<c0241478>] (device_resume+0x168/0x1a0)
       r8:c04ca8d8 r7:cd00627c r6:00000010 r5:cd006248 r4:cd0062fc
      [<c0241310>] (device_resume+0x0/0x1a0) from [<c0241600>] (dpm_resume_end+0xf8/0x3bc)
       r7:00000000 r6:00000005 r5:cd006248 r4:cd0062fc
      [<c0241508>] (dpm_resume_end+0x0/0x3bc) from [<c00b2a24>] (suspend_devices_and_enter+0x1b0/0x204)
      [<c00b2874>] (suspend_devices_and_enter+0x0/0x204) from [<c00b2b68>] (enter_state+0xf0/0x148)
       r7:c037e978 r6:00000003 r5:c043d807 r4:00000000
      [<c00b2a78>] (enter_state+0x0/0x148) from [<c00b20a4>] (state_store+0xa4/0xcc)
       r7:c037e978 r6:00000003 r5:00000003 r4:c043d807
      [<c00b2000>] (state_store+0x0/0xcc) from [<c01fc90c>] (kobj_attr_store+0x20/0x24)
      [<c01fc8ec>] (kobj_attr_store+0x0/0x24) from [<c0157120>] (sysfs_write_file+0x11c/0x150)
      [<c0157004>] (sysfs_write_file+0x0/0x150) from [<c0100f84>] (vfs_write+0xc0/0x14c)
      [<c0100ec4>] (vfs_write+0x0/0x14c) from [<c01010e4>] (sys_write+0x4c/0x78)
       r8:40126000 r7:00000004 r6:cf1a7c80 r5:00000000 r4:00000000
      [<c0101098>] (sys_write+0x0/0x78) from [<c00500c0>] (ret_fast_syscall+0x0/0x30)
       r8:c00502c8 r7:00000004 r6:403525e8 r5:40126000 r4:00000004
      Signed-off-by: NEliad Peller <eliad@wizery.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      a7b545f7
  5. 08 2月, 2011 5 次提交
  6. 05 2月, 2011 4 次提交
    • B
      mac80211: Optimize scans on current operating channel. · b23b025f
      Ben Greear 提交于
      This should decrease un-necessary flushes, on/off channel work,
      and channel changes in cases where the only scanned channel is
      the current operating channel.
      
      * Removes SCAN_OFF_CHANNEL flag, uses SDATA_STATE_OFFCHANNEL
        and is-scanning flags instead.
      
      * Add helper method to determine if we are currently configured
        for the operating channel.
      
      * Do no blindly go off/on channel in work.c  Instead, only call
        appropriate on/off code when we really need to change channels.
        Always enable offchannel-ps mode when starting work,
        and disable it when we are done.
      
      * Consolidate ieee80211_offchannel_stop_station and
        ieee80211_offchannel_stop_beaconing, call it
        ieee80211_offchannel_stop_vifs instead.
      
      * Accept non-beacon frames when scanning on operating channel.
      
      * Scan state machine optimized to minimize on/off channel
        transitions.  Also, when going on-channel, go ahead and
        re-enable beaconing.  We're going to be there for 200ms,
        so seems like some useful beaconing could happen.
        Always enable offchannel-ps mode when starting software
        scan, and disable it when we are done.
      
      * Grab local->mtx earlier in __ieee80211_scan_completed_finish
        so that we are protected when calling hw_config(), etc.
      
      * Pass probe-responses up the stack if scanning on local
        channel, so that mlme can take a look.
      Signed-off-by: NBen Greear <greearb@candelatech.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      b23b025f
    • F
      mac80211: do not send duplicate data frames to the cooked monitor interface · b1f93314
      Felix Fietkau 提交于
      I can't think of a valid use case for this aside from debugging (which can
      also be done with a real monitor interface), and dropping these frames saves
      some precious CPU cycles.
      Signed-off-by: NFelix Fietkau <nbd@openwrt.org>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      b1f93314
    • R
      mac80211: do not restart ps timer during scan or offchannel · 8c99f691
      Rajkumar Manoharan 提交于
      While leaving oper channel, STA informs sleep state to AP to
      stop sending data. Till sending ack for the nullfunc, AP
      continues to send the data to STA which restarts ps_timer that
      is causing unnecessary nullfunc exchange on timer expiry
      when the STA was already moved to offchannel. So don't restart ps_timer
      on data reception during scan. This issue was identified by
      the following warning.
      
      WARNING: at net/mac80211/tx.c:661 invoke_tx_handlers+0xf07/0x1330 [mac80211]
      wlan0: Dropped data frame as no usable bitrate found while scanning and
      associated. Target station: 00:03:7f:0b:a6:1b on 5 GHz band
      Call Trace:
        [<ffffffffa0413ba7>] invoke_tx_handlers+0xf07/0x1330 [mac80211]
        [<ffffffffa0414056>] ieee80211_tx+0x86/0x2c0 [mac80211]
        [<ffffffffa0414345>] ieee80211_xmit+0xb5/0x1d0 [mac80211]
        [<ffffffffa04037e0>] ieee80211_dynamic_ps_enable_work+0x0/0xb0 [mac80211]
        [<ffffffffa04158cf>] ieee80211_tx_skb+0x4f/0x60 [mac80211]
        [<ffffffffa04026e6>] ieee80211_send_nullfunc+0x46/0x60 [mac80211]
        [<ffffffffa0403885>] ieee80211_dynamic_ps_enable_work+0xa5/0xb0 [mac80211]
      Reviewed-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NRajkumar Manoharan <rmanoharan@atheros.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      8c99f691
    • C
      mac80211: fix race between next beacon dtim and ieee80211_get_buffered_bc · 512119b3
      Christian Lamparter 提交于
      On review of 'zd1211rw: implement beacon fetching and handling
      ieee80211_get_buffered_bc()', Christian Lamparter noted that [1]:
      
         Since zd_beacon_done also uploads the next beacon so long in advance,
         there could be an equally long race between the outdated state of the
         next beacon's DTIM broadcast traffic indicator (802.11-2007 7.3.2.6)
         which -in your case- was uploaded almost a beacon interval ago and
         the xmit of ieee80211_get_buffered_bc *now*.
      
         The dtim bc/mc bit might be not set, when a mc/bc arrived after the
         beacon was uploaded, but before the "beacon done event" from the
         hardware. So, dozing stations don't expect the broadcast traffic
         and of course, they might miss it completely.
      
         It's probably better to fix this in mac80211 (see the attached hack).
      
      [1] http://marc.info/?l=linux-wireless&m=129435041117256&w=2
      
      CC: Christian Lamparter <chunkeey@googlemail.com>
      Signed-off-by: NJussi Kivilinna <jussi.kivilinna@mbnet.fi>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      512119b3
  7. 04 2月, 2011 10 次提交
  8. 03 2月, 2011 1 次提交
    • J
      mac80211: fix TX status cookie in HW offload case · 4334ec85
      Johannes Berg 提交于
      When the off-channel TX is done with remain-on-channel
      offloaded to hardware, the reported cookie is wrong as
      in that case we shouldn't use the SKB as the cookie but
      need to instead use the corresponding r-o-c cookie
      (XOR'ed with 2 to prevent API mismatches).
      
      Fix this by keeping track of the hw_roc_skb pointer
      just for the status processing and use the correct
      cookie to report in this case. We can't use the
      hw_roc_skb pointer itself because it is NULL'ed when
      the frame is transmitted to prevent it being used
      twice.
      
      This fixes a bug where the P2P state machine in the
      supplicant gets stuck because it never gets a correct
      result for its transmitted frame.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      4334ec85
  9. 01 2月, 2011 1 次提交
  10. 29 1月, 2011 2 次提交
  11. 27 1月, 2011 1 次提交
    • J
      mac80211: use DECLARE_EVENT_CLASS · ba99d93b
      Johannes Berg 提交于
      For events that include only the local struct as
      their parameter, we can use DECLARE_EVENT_CLASS
      and save quite some binary size across segments
      as well lines of code.
      
         text	   data	    bss	    dec	    hex	filename
       375745	  19296	    916	 395957	  60ab5	mac80211.ko.before
       367473	  17888	    916	 386277	  5e4e5	mac80211.ko.after
        -8272   -1408       0   -9680   -25d0 delta
      
      Some more tracepoints with identical arguments
      could be combined like this but for now this is
      the one that benefits most.
      Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      ba99d93b
  12. 26 1月, 2011 1 次提交
  13. 22 1月, 2011 1 次提交
    • B
      cfg80211: Extend channel to frequency mapping for 802.11j · 59eb21a6
      Bruno Randolf 提交于
      Extend channel to frequency mapping for 802.11j Japan 4.9GHz band, according to
      IEEE802.11 section 17.3.8.3.2 and Annex J. Because there are now overlapping
      channel numbers in the 2GHz and 5GHz band we can't map from channel to
      frequency without knowing the band. This is no problem as in most contexts we
      know the band. In places where we don't know the band (and WEXT compatibility)
      we assume the 2GHz band for channels below 14.
      
      This patch does not implement all channel to frequency mappings defined in
      802.11, it's just an extension for 802.11j 20MHz channels. 5MHz and 10MHz
      channels as well as 802.11y channels have been omitted.
      
      The following drivers have been updated to reflect the API changes:
      iwl-3945, iwl-agn, iwmc3200wifi, libertas, mwl8k, rt2x00, wl1251, wl12xx.
      The drivers have been compile-tested only.
      Signed-off-by: NBruno Randolf <br1@einfach.org>
      Signed-off-by: NBrian Prodoehl <bprodoehl@gmail.com>
      Acked-by: NLuciano Coelho <coelho@ti.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      59eb21a6