90
90
/* no action required */
93
/* caller must call cfg80211_send_rx_auth() */
94
RX_MGMT_CFG80211_AUTH,
96
/* caller must call cfg80211_send_rx_assoc() */
97
RX_MGMT_CFG80211_ASSOC,
99
93
/* caller must call cfg80211_send_deauth() */
100
94
RX_MGMT_CFG80211_DEAUTH,
102
96
/* caller must call cfg80211_send_disassoc() */
103
97
RX_MGMT_CFG80211_DISASSOC,
105
/* caller must tell cfg80211 about internal error */
106
RX_MGMT_CFG80211_ASSOC_ERROR,
767
760
if (local->hw.conf.flags & IEEE80211_CONF_PS)
764
* transmission can be stopped by others which leads to
765
* dynamic_ps_timer expiry. Postpond the ps timer if it
766
* is not the actual idle state.
768
spin_lock_irqsave(&local->queue_stop_reason_lock, flags);
769
for (q = 0; q < local->hw.queues; q++) {
770
if (local->queue_stop_reasons[q]) {
771
spin_unlock_irqrestore(&local->queue_stop_reason_lock,
773
mod_timer(&local->dynamic_ps_timer, jiffies +
775
local->hw.conf.dynamic_ps_timeout));
779
spin_unlock_irqrestore(&local->queue_stop_reason_lock, flags);
770
781
if ((local->hw.flags & IEEE80211_HW_PS_NULLFUNC_STACK) &&
771
782
(!(ifmgd->flags & IEEE80211_STA_NULLFUNC_ACKED))) {
772
783
netif_tx_stop_all_queues(sdata->dev);
774
* Flush all the frames queued in the driver before
775
* going to power save
777
drv_flush(local, false);
778
ieee80211_send_nullfunc(local, sdata, 1);
780
/* Flush once again to get the tx status of nullfunc frame */
781
drv_flush(local, false);
785
if (drv_tx_frames_pending(local))
786
mod_timer(&local->dynamic_ps_timer, jiffies +
788
local->hw.conf.dynamic_ps_timeout));
790
ieee80211_send_nullfunc(local, sdata, 1);
791
/* Flush to get the tx status of nullfunc frame */
792
drv_flush(local, false);
784
796
if (!((local->hw.flags & IEEE80211_HW_REPORTS_TX_ACK_STATUS) &&
2188
2201
struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
2203
if (!ifmgd->associated)
2190
2206
if (test_and_clear_bit(TMR_RUNNING_TIMER, &ifmgd->timers_running))
2191
2207
add_timer(&ifmgd->timer);
2192
2208
if (test_and_clear_bit(TMR_RUNNING_CHANSW, &ifmgd->timers_running))