1. 04 2月, 2011 6 次提交
    • A
      mac80211: do not calc frame duration when using HW rate-control · 8fd369ee
      Arik Nemtsov 提交于
      When rate-control is performed in HW, we cannot calculate frame
      duration as we do not have the skb transmission rate in SW.
      
      ieee80211_tx_h_calculate_duration() should only be called when
      ieee80211_tx_h_rate_ctrl() has been called before to initialize data
      in skb->cb. This doesn't happen for drivers with HW rate-control.
      
      Fixes the following warning when operating in AP-mode
      in a driver with HW rate-control.
      
      WARNING: at net/mac80211/tx.c:57 ieee80211_duration+0x54/0x1d8 [mac80211]()
      Modules linked in: wl1271_sdio wl1271 firmware_class crc7 mac80211 cfg80211
      [<c0046090>] (unwind_backtrace+0x0/0x124) from [<c0064c10>] (warn_slowpath_common+0x4c/0x64)
      [<c0064c10>] (warn_slowpath_common+0x4c/0x64) from [<c0064c40>] (warn_slowpath_null+0x18/0x1c)
      [<c0064c40>] (warn_slowpath_null+0x18/0x1c) from [<bf040e34>] (ieee80211_duration+0x54/0x1d8 [mac80211])
      [<bf040e34>] (ieee80211_duration+0x54/0x1d8 [mac80211]) from [<bf04200c>] (invoke_tx_handlers+0xfa0/0x1088 [mac80211])
      [<bf04200c>] (invoke_tx_handlers+0xfa0/0x1088 [mac80211]) from [<bf042178>] (ieee80211_tx+0x84/0x248 [mac80211])
      [<bf042178>] (ieee80211_tx+0x84/0x248 [mac80211]) from [<bf042f44>] (ieee80211_tx_pending+0x12c/0x278 [mac80211])
      [<bf042f44>] (ieee80211_tx_pending+0x12c/0x278 [mac80211]) from [<c0069a9c>] (tasklet_action+0x68/0xbc)
      [<c0069a9c>] (tasklet_action+0x68/0xbc) from [<c006a044>] (__do_softirq+0x84/0x114)
      [<c006a044>] (__do_softirq+0x84/0x114) from [<c006a1b8>] (do_softirq+0x48/0x54)
      [<c006a1b8>] (do_softirq+0x48/0x54) from [<c006a4f8>] (local_bh_enable+0x98/0xcc)
      [<c006a4f8>] (local_bh_enable+0x98/0xcc) from [<bf074e60>] (wl1271_rx+0x2e8/0x3a4 [wl1271])
      [<bf074e60>] (wl1271_rx+0x2e8/0x3a4 [wl1271]) from [<bf071ae4>] (wl1271_irq_work+0x230/0x310 [wl1271])
      [<bf071ae4>] (wl1271_irq_work+0x230/0x310 [wl1271]) from [<c0076864>] (process_one_work+0x208/0x350)
      [<c0076864>] (process_one_work+0x208/0x350) from [<c0076e14>] (worker_thread+0x1cc/0x300)
      [<c0076e14>] (worker_thread+0x1cc/0x300) from [<c007bb88>] (kthread+0x84/0x8c)
      [<c007bb88>] (kthread+0x84/0x8c) from [<c0041494>] (kernel_thread_exit+0x0/0x8)
      Signed-off-by: NArik Nemtsov <arik@wizery.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      8fd369ee
    • B
      mac80211: Recalculate channel-type on iface removal. · 2cf22b89
      Ben Greear 提交于
      When a vif goes away, it could cause the super-chan
      to be recalculated differently, so do that calculation
      on iface removal.
      Signed-off-by: NBen Greear <greearb@candelatech.com>
      Acked-by: NJohannes Berg <johannes@sipsolutions.net>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      2cf22b89
    • J
      cfg80211: Fix power save state after interface type change · bf6a0579
      Juuso Oikarinen 提交于
      Currently cfg80211 only configures the PSM state to the driver upon creation
      of a new virtual interface, but not after interface type change. The mac80211
      on the other hand reinitializes its sdata structure every time the interface
      type is changed, losing the PSM configuration.
      
      Hence, if the interface type is changed to, say, ad-hoc and then back to
      managed, "iw wlan0 get power_save" will claim that PSM is enabled, when in
      fact on mac80211 level it is not.
      
      Fix this in cfg80211 by configuring the PSM state to the driver each time
      the interface is brought up instead of just when the interface is created.
      Signed-off-by: NJuuso Oikarinen <juuso.oikarinen@nokia.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      bf6a0579
    • B
      mac80211: Warn users if HT fails because of freq mismatch. · 172710bf
      Ben Greear 提交于
      I have a netgear WNDR3700 that appears to have an off-by-four
      bug in how it fills out the hti->control_chan (I configure the
      AP to channel 11, it reports 15 as control_chan).
      
      Poke a message into the kernel logs to give users a
      clue as to why they are not getting the expected
      channel-type or rate.
      Signed-off-by: NBen Greear <greearb@candelatech.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      172710bf
    • B
    • B
      mac80211: Be more careful when changing channels. · eeabee7e
      Ben Greear 提交于
      If we cannot set the channel type, set the channel back to the
      original.
      
      Don't update the driver hardware if nothing actually changed.
      Signed-off-by: NBen Greear <greearb@candelatech.com>
      Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
      eeabee7e
  2. 01 2月, 2011 1 次提交
  3. 29 1月, 2011 4 次提交
  4. 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
  5. 26 1月, 2011 1 次提交
  6. 22 1月, 2011 2 次提交
  7. 20 1月, 2011 17 次提交
  8. 15 1月, 2011 1 次提交
  9. 14 1月, 2011 4 次提交
  10. 13 1月, 2011 3 次提交