1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2024-11-27 17:13:11 +02:00

mac80211: merge some more fixes from trunk (fixes #9224)

git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@26613 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
nbd 2011-04-12 17:41:27 +00:00
parent fb81ddaac3
commit f5c3cf1ee2
3 changed files with 60 additions and 16 deletions

View File

@ -0,0 +1,12 @@
--- a/include/linux/compat-2.6.36.h
+++ b/include/linux/compat-2.6.36.h
@@ -120,6 +120,9 @@ static inline void tty_unlock(void) __re
#define tty_locked() (kernel_locked())
#define usleep_range(_min, _max) msleep((_max) / 1000)
+
+#define PCI_EEPROM_WIDTH_93C86 8
+
#endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,36)) */
#endif /* LINUX_26_36_COMPAT_H */

View File

@ -75,20 +75,43 @@
skb = bf->bf_mpdu;
hdr = (struct ieee80211_hdr *)skb->data;
@@ -442,7 +443,11 @@ static void ath_tx_complete_aggr(struct
@@ -441,22 +442,24 @@ static void ath_tx_complete_aggr(struct
/* transmit completion */
acked_cnt++;
} else {
if (!(tid->state & AGGR_CLEANUP) && retry) {
- if (!(tid->state & AGGR_CLEANUP) && retry) {
- if (fi->retries < ATH_MAX_SW_RETRIES) {
+ if (ts->ts_status & ATH9K_TXERR_FILT) {
+ if (!an->sleeping)
+ clear_filter = true;
+ txpending = 1;
+ } else if (fi->retries < ATH_MAX_SW_RETRIES) {
ath_tx_set_retry(sc, txq, bf->bf_mpdu);
txpending = 1;
} else {
@@ -496,6 +501,7 @@ static void ath_tx_complete_aggr(struct
- ath_tx_set_retry(sc, txq, bf->bf_mpdu);
- txpending = 1;
- } else {
- bf->bf_state.bf_type |= BUF_XRETRY;
- txfail = 1;
- sendbar = 1;
- txfail_cnt++;
- }
- } else {
+ if ((tid->state & AGGR_CLEANUP) || !retry) {
/*
* cleanup in progress, just fail
* the un-acked sub-frames
*/
txfail = 1;
+ } else if (fi->retries < ATH_MAX_SW_RETRIES) {
+ if (!(ts->ts_status & ATH9K_TXERR_FILT) ||
+ !an->sleeping)
+ ath_tx_set_retry(sc, txq, bf->bf_mpdu);
+
+ clear_filter = true;
+ txpending = 1;
+ } else {
+ bf->bf_state.bf_type |= BUF_XRETRY;
+ txfail = 1;
+ sendbar = 1;
+ txfail_cnt++;
}
}
@@ -496,6 +499,7 @@ static void ath_tx_complete_aggr(struct
!txfail, sendbar);
} else {
/* retry the un-acked ones */
@ -96,7 +119,7 @@
if (!(sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA)) {
if (bf->bf_next == NULL && bf_last->bf_stale) {
struct ath_buf *tbf;
@@ -546,7 +552,12 @@ static void ath_tx_complete_aggr(struct
@@ -546,7 +550,12 @@ static void ath_tx_complete_aggr(struct
/* prepend un-acked frames to the beginning of the pending frame queue */
if (!list_empty(&bf_pending)) {
@ -109,7 +132,7 @@
list_splice(&bf_pending, &tid->buf_q);
ath_tx_queue_tid(txq, tid);
spin_unlock_bh(&txq->axq_lock);
@@ -816,6 +827,11 @@ static void ath_tx_sched_aggr(struct ath
@@ -816,6 +825,11 @@ static void ath_tx_sched_aggr(struct ath
bf = list_first_entry(&bf_q, struct ath_buf, list);
bf->bf_lastbf = list_entry(bf_q.prev, struct ath_buf, list);
@ -121,7 +144,7 @@
/* if only one frame, send as non-aggregate */
if (bf == bf->bf_lastbf) {
fi = get_frame_info(bf->bf_mpdu);
@@ -896,6 +912,67 @@ void ath_tx_aggr_stop(struct ath_softc *
@@ -896,6 +910,67 @@ void ath_tx_aggr_stop(struct ath_softc *
ath_tx_flush_tid(sc, txtid);
}
@ -189,7 +212,7 @@
void ath_tx_aggr_resume(struct ath_softc *sc, struct ieee80211_sta *sta, u16 tid)
{
struct ath_atx_tid *txtid;
@@ -1491,7 +1568,6 @@ static int setup_tx_flags(struct sk_buff
@@ -1491,7 +1566,6 @@ static int setup_tx_flags(struct sk_buff
struct ieee80211_tx_info *tx_info = IEEE80211_SKB_CB(skb);
int flags = 0;
@ -197,7 +220,7 @@
flags |= ATH9K_TXDESC_INTREQ;
if (tx_info->flags & IEEE80211_TX_CTL_NO_ACK)
@@ -1754,6 +1830,9 @@ static void ath_tx_start_dma(struct ath_
@@ -1754,6 +1828,9 @@ static void ath_tx_start_dma(struct ath_
if (txctl->paprd)
bf->bf_state.bfs_paprd_timestamp = jiffies;

View File

@ -18,6 +18,15 @@
WLAN_STA_BLOCK_BA = 1<<11,
--- a/net/mac80211/debugfs_sta.c
+++ b/net/mac80211/debugfs_sta.c
@@ -59,7 +59,7 @@ static ssize_t sta_flags_read(struct fil
char buf[100];
struct sta_info *sta = file->private_data;
u32 staflags = get_sta_flags(sta);
- int res = scnprintf(buf, sizeof(buf), "%s%s%s%s%s%s%s%s%s",
+ int res = scnprintf(buf, sizeof(buf), "%s%s%s%s%s%s%s%s",
staflags & WLAN_STA_AUTH ? "AUTH\n" : "",
staflags & WLAN_STA_ASSOC ? "ASSOC\n" : "",
staflags & WLAN_STA_PS_STA ? "PS (sta)\n" : "",
@@ -67,7 +67,6 @@ static ssize_t sta_flags_read(struct fil
staflags & WLAN_STA_AUTHORIZED ? "AUTHORIZED\n" : "",
staflags & WLAN_STA_SHORT_PREAMBLE ? "SHORT PREAMBLE\n" : "",