git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
mac80211: enable assoc check for mesh interfaces
[pandora-kernel.git]
/
net
/
mac80211
/
status.c
diff --git
a/net/mac80211/status.c
b/net/mac80211/status.c
index
80de436
..
1a49354
100644
(file)
--- a/
net/mac80211/status.c
+++ b/
net/mac80211/status.c
@@
-181,6
+181,9
@@
static void ieee80211_frame_acked(struct sta_info *sta, struct sk_buff *skb)
struct ieee80211_local *local = sta->local;
struct ieee80211_sub_if_data *sdata = sta->sdata;
struct ieee80211_local *local = sta->local;
struct ieee80211_sub_if_data *sdata = sta->sdata;
+ if (local->hw.flags & IEEE80211_HW_REPORTS_TX_ACK_STATUS)
+ sta->last_rx = jiffies;
+
if (ieee80211_is_data_qos(mgmt->frame_control)) {
struct ieee80211_hdr *hdr = (void *) skb->data;
u8 *qc = ieee80211_get_qos_ctl(hdr);
if (ieee80211_is_data_qos(mgmt->frame_control)) {
struct ieee80211_hdr *hdr = (void *) skb->data;
u8 *qc = ieee80211_get_qos_ctl(hdr);
@@
-260,7
+263,7
@@
static void ieee80211_add_tx_radiotap_header(struct ieee80211_supported_band
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
struct ieee80211_radiotap_header *rthdr;
unsigned char *pos;
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
struct ieee80211_radiotap_header *rthdr;
unsigned char *pos;
-
__le
16 txflags;
+
u
16 txflags;
rthdr = (struct ieee80211_radiotap_header *) skb_push(skb, rtap_len);
rthdr = (struct ieee80211_radiotap_header *) skb_push(skb, rtap_len);
@@
-290,13
+293,13
@@
static void ieee80211_add_tx_radiotap_header(struct ieee80211_supported_band
txflags = 0;
if (!(info->flags & IEEE80211_TX_STAT_ACK) &&
!is_multicast_ether_addr(hdr->addr1))
txflags = 0;
if (!(info->flags & IEEE80211_TX_STAT_ACK) &&
!is_multicast_ether_addr(hdr->addr1))
- txflags |=
cpu_to_le16(IEEE80211_RADIOTAP_F_TX_FAIL)
;
+ txflags |=
IEEE80211_RADIOTAP_F_TX_FAIL
;
if ((info->status.rates[0].flags & IEEE80211_TX_RC_USE_RTS_CTS) ||
(info->status.rates[0].flags & IEEE80211_TX_RC_USE_CTS_PROTECT))
if ((info->status.rates[0].flags & IEEE80211_TX_RC_USE_RTS_CTS) ||
(info->status.rates[0].flags & IEEE80211_TX_RC_USE_CTS_PROTECT))
- txflags |=
cpu_to_le16(IEEE80211_RADIOTAP_F_TX_CTS)
;
+ txflags |=
IEEE80211_RADIOTAP_F_TX_CTS
;
else if (info->status.rates[0].flags & IEEE80211_TX_RC_USE_RTS_CTS)
else if (info->status.rates[0].flags & IEEE80211_TX_RC_USE_RTS_CTS)
- txflags |=
cpu_to_le16(IEEE80211_RADIOTAP_F_TX_RTS)
;
+ txflags |=
IEEE80211_RADIOTAP_F_TX_RTS
;
put_unaligned_le16(txflags, pos);
pos += 2;
put_unaligned_le16(txflags, pos);
pos += 2;
@@
-429,7
+432,11
@@
void ieee80211_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb)
IEEE80211_BAR_CTRL_TID_INFO_MASK) >>
IEEE80211_BAR_CTRL_TID_INFO_SHIFT;
IEEE80211_BAR_CTRL_TID_INFO_MASK) >>
IEEE80211_BAR_CTRL_TID_INFO_SHIFT;
- ieee80211_set_bar_pending(sta, tid, ssn);
+ if (local->hw.flags &
+ IEEE80211_HW_TEARDOWN_AGGR_ON_BAR_FAIL)
+ ieee80211_stop_tx_ba_session(&sta->sta, tid);
+ else
+ ieee80211_set_bar_pending(sta, tid, ssn);
}
}
}
}