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: Arik Nemtsov <arik@wizery.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>