forked from luck/tmp_suning_uos_patched
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless
Conflicts: net/mac80211/cfg.c Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
commit
9a244409d0
|
@ -897,6 +897,15 @@ ath_tx_get_tid_subframe(struct ath_softc *sc, struct ath_txq *txq,
|
|||
|
||||
tx_info = IEEE80211_SKB_CB(skb);
|
||||
tx_info->flags &= ~IEEE80211_TX_CTL_CLEAR_PS_FILT;
|
||||
|
||||
/*
|
||||
* No aggregation session is running, but there may be frames
|
||||
* from a previous session or a failed attempt in the queue.
|
||||
* Send them out as normal data frames
|
||||
*/
|
||||
if (!tid->active)
|
||||
tx_info->flags &= ~IEEE80211_TX_CTL_AMPDU;
|
||||
|
||||
if (!(tx_info->flags & IEEE80211_TX_CTL_AMPDU)) {
|
||||
bf->bf_state.bf_type = 0;
|
||||
return bf;
|
||||
|
|
|
@ -1724,12 +1724,15 @@ void sta_set_sinfo(struct sta_info *sta, struct station_info *sinfo)
|
|||
{
|
||||
struct ieee80211_sub_if_data *sdata = sta->sdata;
|
||||
struct ieee80211_local *local = sdata->local;
|
||||
struct rate_control_ref *ref = local->rate_ctrl;
|
||||
struct rate_control_ref *ref = NULL;
|
||||
struct timespec uptime;
|
||||
u64 packets = 0;
|
||||
u32 thr = 0;
|
||||
int i, ac;
|
||||
|
||||
if (test_sta_flag(sta, WLAN_STA_RATE_CONTROL))
|
||||
ref = local->rate_ctrl;
|
||||
|
||||
sinfo->generation = sdata->local->sta_generation;
|
||||
|
||||
sinfo->filled = STATION_INFO_INACTIVE_TIME |
|
||||
|
|
|
@ -415,6 +415,9 @@ ieee80211_tx_h_multicast_ps_buf(struct ieee80211_tx_data *tx)
|
|||
if (ieee80211_has_order(hdr->frame_control))
|
||||
return TX_CONTINUE;
|
||||
|
||||
if (ieee80211_is_probe_req(hdr->frame_control))
|
||||
return TX_CONTINUE;
|
||||
|
||||
if (tx->local->hw.flags & IEEE80211_HW_QUEUE_CONTROL)
|
||||
info->hw_queue = tx->sdata->vif.cab_queue;
|
||||
|
||||
|
@ -464,6 +467,7 @@ ieee80211_tx_h_unicast_ps_buf(struct ieee80211_tx_data *tx)
|
|||
{
|
||||
struct sta_info *sta = tx->sta;
|
||||
struct ieee80211_tx_info *info = IEEE80211_SKB_CB(tx->skb);
|
||||
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)tx->skb->data;
|
||||
struct ieee80211_local *local = tx->local;
|
||||
|
||||
if (unlikely(!sta))
|
||||
|
@ -475,6 +479,12 @@ ieee80211_tx_h_unicast_ps_buf(struct ieee80211_tx_data *tx)
|
|||
!(info->flags & IEEE80211_TX_CTL_NO_PS_BUFFER))) {
|
||||
int ac = skb_get_queue_mapping(tx->skb);
|
||||
|
||||
if (ieee80211_is_mgmt(hdr->frame_control) &&
|
||||
!ieee80211_is_bufferable_mmpdu(hdr->frame_control)) {
|
||||
info->flags |= IEEE80211_TX_CTL_NO_PS_BUFFER;
|
||||
return TX_CONTINUE;
|
||||
}
|
||||
|
||||
ps_dbg(sta->sdata, "STA %pM aid %d: PS buffer for AC %d\n",
|
||||
sta->sta.addr, sta->sta.aid, ac);
|
||||
if (tx->local->total_ps_buffered >= TOTAL_MAX_TX_BUFFER)
|
||||
|
@ -534,19 +544,9 @@ ieee80211_tx_h_unicast_ps_buf(struct ieee80211_tx_data *tx)
|
|||
static ieee80211_tx_result debug_noinline
|
||||
ieee80211_tx_h_ps_buf(struct ieee80211_tx_data *tx)
|
||||
{
|
||||
struct ieee80211_tx_info *info = IEEE80211_SKB_CB(tx->skb);
|
||||
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)tx->skb->data;
|
||||
|
||||
if (unlikely(tx->flags & IEEE80211_TX_PS_BUFFERED))
|
||||
return TX_CONTINUE;
|
||||
|
||||
if (ieee80211_is_mgmt(hdr->frame_control) &&
|
||||
!ieee80211_is_bufferable_mmpdu(hdr->frame_control)) {
|
||||
if (tx->flags & IEEE80211_TX_UNICAST)
|
||||
info->flags |= IEEE80211_TX_CTL_NO_PS_BUFFER;
|
||||
return TX_CONTINUE;
|
||||
}
|
||||
|
||||
if (tx->flags & IEEE80211_TX_UNICAST)
|
||||
return ieee80211_tx_h_unicast_ps_buf(tx);
|
||||
else
|
||||
|
|
|
@ -2049,7 +2049,8 @@ TRACE_EVENT(cfg80211_michael_mic_failure,
|
|||
MAC_ASSIGN(addr, addr);
|
||||
__entry->key_type = key_type;
|
||||
__entry->key_id = key_id;
|
||||
memcpy(__entry->tsc, tsc, 6);
|
||||
if (tsc)
|
||||
memcpy(__entry->tsc, tsc, 6);
|
||||
),
|
||||
TP_printk(NETDEV_PR_FMT ", " MAC_PR_FMT ", key type: %d, key id: %d, tsc: %pm",
|
||||
NETDEV_PR_ARG, MAC_PR_ARG(addr), __entry->key_type,
|
||||
|
|
Loading…
Reference in New Issue
Block a user