* Re: Kernel 2.6.37-rc5 rc7 Oops
From: David Miller @ 2011-01-10 8:06 UTC (permalink / raw)
To: eric.dumazet; +Cc: torvalds, alex.arnautu96, linux-kernel, linux-wireless
In-Reply-To: <1293652965.7150.13.camel@edumazet-laptop>
From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Wed, 29 Dec 2010 21:02:45 +0100
> Le mercredi 29 décembre 2010 à 11:23 -0800, Linus Torvalds a écrit :
>> On Wed, Dec 29, 2010 at 4:26 AM, Alex Arnautu <alex.arnautu96@gmail.com> wrote:
>> >
>> > I get an oops with 2.6.37-rc5 and 2.6.37-rc7-git1.
>> > http://www.fotoshack.us/fotos/19044P271210_15.14_[01].jpg
>>
>> Hmm. Davem added to the list of people involved. This _may_ be fixed
>> by the "always clone skbs" commit in -rc8 (commit 173021072), but
>> David can make a better judgment call.
>>
>
> Very unlikely, as commit 173021072 only fix a bug in case mirred is
> used.
This should be taken to the wireless list (now CC:'d) as the rt2xxx
driver and the wireless stack are both in that backtrace.
^ permalink raw reply
* Re: [rt2x00-users] Linksys WUSB600N v1 disconnecting from AP
From: Gertjan van Wingerde @ 2011-01-10 7:30 UTC (permalink / raw)
To: Aleksandar Milivojevic
Cc: Helmut Schaa, Luis R. Rodriguez, Luis Rodriguez,
linux-wireless@vger.kernel.org, Wolfgang Kufner, Luis Correia,
users@rt2x00.serialmonkey.com
In-Reply-To: <AANLkTimDW2i1iKHG50__2BOYyvyWiii2eWVOP2HjkxtR@mail.gmail.com>
On 01/10/11 08:12, Aleksandar Milivojevic wrote:
> On Sat, Jan 8, 2011 at 1:47 AM, Helmut Schaa
> <helmut.schaa@googlemail.com> wrote:
>> Am Samstag, 8. Januar 2011 schrieb Aleksandar Milivojevic:
>>> Running 'iw event -t' shows a lot of disassociation due to inactivity.
>>> This happens even if there is regular flow of traffic (for example, I
>>> start ping to my AP and leave it running, or I leave Pandora streaming
>>> music in the browser).
>>>
>>> Below is example of output of 'iw event -t' (these lines repeat in the
>>> output at irregularl intervals):
>>>
>>> 1294464037.037450: wlan0 (phy #0): deauth 00:1c:10:ea:2a:cb ->
>>> 00:1e:52:79:e9:ff reason 4: Disassociated due to inactivity
>>> 1294464037.037538: wlan0 (phy #0): disconnected (local request)
>>
>> Aha, so it's not the AP disassociating you but it's your client disconnecting
>> on its own. Mind to provide the wpa_supplicant log for the same situation when
>> run with "-ddt"?
>
> Normally, I use NetworkManager, so all of wpa_supplican is kind of
> hidden under the hood. For this, I stopped NetworkManager, and
> created following simple wpa_supplicant config file:
>
> # WPA-PSK/TKIP
> ctrl_interface=/var/run/wpa_supplicant
> network={
> ssid="MySSID"
> scan_ssid=1
> key_mgmt=WPA-PSK
> psk="MyGreatSecret"
> }
>
> Run wpa_supplicant by hand as "wpa_supplicant
> -c/path/to/my/wpa_supplicant.conf -iwlan0 -ddt". The log is rather
> big, however I guess interesting part (if there's anything interesting
> there) is at the point where connection got dropped. In
> /var/log/debug, I found following logged by the kernel (same as in
> previous logs I posted):
>
> Jan 9 22:37:17 toporko kernel: [ 3152.500035] ieee80211 phy0: wlan0:
> No probe response from AP 00:1e:52:79:e9:ff after 500ms,
> disconnecting.
> Jan 9 22:37:19 toporko kernel: [ 3154.138808] cfg80211: All devices
> are disconnected, going to restore regulatory settings
>
> The output of wpa_supplicant was quiet until above "no probe response"
> was logged by the kernel (1294641437 timestamp corresponds to 22:37:17
> local time):
>
> 1294641437.407476: RTM_NEWLINK: operstate=1 ifi_flags=0x1003 ([UP])
> 1294641437.407493: RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan0' added
> 1294641439.045890: RTM_NEWLINK: operstate=1 ifi_flags=0x1003 ([UP])
> 1294641439.045908: RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan0' added
> 1294641439.045913: Wireless event: cmd=0x8b15 len=20
> 1294641439.045916: Wireless event: new AP: 00:00:00:00:00:00
> 1294641439.045930: Setting scan request: 0 sec 100000 usec
> 1294641439.045938: Added BSSID 00:1e:52:79:e9:ff into blacklist
> 1294641439.045944: CTRL-EVENT-DISCONNECTED - Disconnect event - remove keys
> 1294641439.045947: wpa_driver_wext_set_key: alg=0 key_idx=0 set_tx=0
> seq_len=0 key_len=0
> 1294641439.045966: wpa_driver_wext_set_key: alg=0 key_idx=1 set_tx=0
> seq_len=0 key_len=0
> 1294641439.045976: wpa_driver_wext_set_key: alg=0 key_idx=2 set_tx=0
> seq_len=0 key_len=0
> 1294641439.045984: wpa_driver_wext_set_key: alg=0 key_idx=3 set_tx=0
> seq_len=0 key_len=0
> 1294641439.045993: wpa_driver_wext_set_key: alg=0 key_idx=0 set_tx=0
> seq_len=0 key_len=0
> 1294641439.046001: State: COMPLETED -> DISCONNECTED
> 1294641439.046007: wpa_driver_wext_set_operstate: operstate 1->0 (DORMANT)
> 1294641439.046010: WEXT: Operstate: linkmode=-1, operstate=5
> 1294641439.046027: EAPOL: External notification - portEnabled=0
> 1294641439.046032: EAPOL: SUPP_PAE entering state DISCONNECTED
> 1294641439.046034: EAPOL: SUPP_BE entering state INITIALIZE
> 1294641439.046038: EAPOL: External notification - portValid=0
> 1294641439.046041: EAPOL: External notification - EAP success=0
> 1294641439.146109: State: DISCONNECTED -> SCANNING
> 1294641439.146128: Starting AP scan (broadcast SSID)
> 1294641439.148479: Scan requested (ret=0) - scan timeout 30 seconds
>
> And the following lines look just like standard
> scan/authentication/association thing... Not sure if anything of the
> above is of any use...
Am I correct in that you are using TKIP encryption on your wireless network?
Please note that there currently is a bug in rt2800usb/rt2800pci where TKIP
hardware encryption is not working at all, and we haven't been able to track
that bug down yet.
Can you try to switch your network to AES encryption, or load the rt2800usb
driver with nohwcrypt module parameter enabled, and check what happens?
--
Gertjan
^ permalink raw reply
* Re: [PATCH] ath9k: Implement rx copy-break.
From: Gabor Juhos @ 2011-01-10 7:14 UTC (permalink / raw)
To: Ben Greear; +Cc: linux-wireless, ath9k-devel
In-Reply-To: <4D29F512.3050707@candelatech.com>
2011.01.09. 18:49 keltezéssel, Ben Greear írta:
> On 01/09/2011 12:00 AM, Gabor Juhos wrote:
>> Hi Ben,
>>
>>> From: Ben Greear<greearb@candelatech.com>
>>>
>>> This saves us constantly allocating large, multi-page
>>> skbs. It should fix the order-1 allocation errors reported,
>>> and in a 60-vif scenario, this significantly decreases CPU
>>> utilization, and latency, and increases bandwidth.
>>>
>>> Signed-off-by: Ben Greear<greearb@candelatech.com>
>>> ---
>>> :100644 100644 b2497b8... ea2f67c... M drivers/net/wireless/ath/ath9k/recv.c
>>> drivers/net/wireless/ath/ath9k/recv.c | 92 ++++++++++++++++++++++-----------
>>> 1 files changed, 61 insertions(+), 31 deletions(-)
>>
>> <...>
>>
>>> + if (use_copybreak) {
>>> + struct pci_dev *pdev = to_pci_dev(sc->dev);
>>
>> This would cause undefined behaviour with ath9k devices sitting on an AHB bus.
>>
>>> + pci_dma_sync_single_for_cpu(pdev, bf->bf_buf_addr,
>>> + len, PCI_DMA_FROMDEVICE);
>>> + skb_copy_from_linear_data(bf->bf_mpdu, skb->data, len);
>>> + pci_dma_sync_single_for_device(pdev, bf->bf_buf_addr,
>>> + len, PCI_DMA_FROMDEVICE);
>>
>> Please use the bus agnostic equivalents of these DMA functions.
>
> Any idea what that might be?
Invalid/null pointer dereference probably. The problem is that sc->dev is
pointing to a device structure inside a platform_device structure when it is not
PCI device. Converting sc->dev to 'struct *pci_dev' and using the result as a
parameter for a PCI specific function is not correct in this case.
> Should we just disable copybreak for things on AHB bus?
We should not disable it, order-1 allocation failures are present there as well.
-Gabor
^ permalink raw reply
* [PATCH RESEND 06/11] ath9k: Add counters to distinquish AMPDU enqueues.
From: greearb @ 2011-01-10 7:11 UTC (permalink / raw)
To: linux-wireless; +Cc: ath9k-devel, Ben Greear
In-Reply-To: <1294643513-18820-1-git-send-email-greearb@candelatech.com>
From: Ben Greear <greearb@candelatech.com>
Show counters for pkts sent directly to hardware and
those queued in software.
Signed-off-by: Ben Greear <greearb@candelatech.com>
---
:100644 100644 577bc5a... faf84e4... M drivers/net/wireless/ath/ath9k/debug.c
:100644 100644 cd2db3f... 980c9fa... M drivers/net/wireless/ath/ath9k/debug.h
:100644 100644 2248e47... 3aae523... M drivers/net/wireless/ath/ath9k/xmit.c
drivers/net/wireless/ath/ath9k/debug.c | 3 ++-
drivers/net/wireless/ath/ath9k/debug.h | 6 ++++--
drivers/net/wireless/ath/ath9k/xmit.c | 3 ++-
3 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/drivers/net/wireless/ath/ath9k/debug.c b/drivers/net/wireless/ath/ath9k/debug.c
index 577bc5a..faf84e4 100644
--- a/drivers/net/wireless/ath/ath9k/debug.c
+++ b/drivers/net/wireless/ath/ath9k/debug.c
@@ -628,7 +628,8 @@ static ssize_t read_file_xmit(struct file *file, char __user *user_buf,
PR("MPDUs Queued: ", queued);
PR("MPDUs Completed: ", completed);
PR("Aggregates: ", a_aggr);
- PR("AMPDUs Queued: ", a_queued);
+ PR("AMPDUs Queued HW:", a_queued_hw);
+ PR("AMPDUs Queued SW:", a_queued_sw);
PR("AMPDUs Completed:", a_completed);
PR("AMPDUs Retried: ", a_retries);
PR("AMPDUs XRetried: ", a_xretries);
diff --git a/drivers/net/wireless/ath/ath9k/debug.h b/drivers/net/wireless/ath/ath9k/debug.h
index cd2db3f..980c9fa 100644
--- a/drivers/net/wireless/ath/ath9k/debug.h
+++ b/drivers/net/wireless/ath/ath9k/debug.h
@@ -89,7 +89,8 @@ struct ath_interrupt_stats {
* @queued: Total MPDUs (non-aggr) queued
* @completed: Total MPDUs (non-aggr) completed
* @a_aggr: Total no. of aggregates queued
- * @a_queued: Total AMPDUs queued
+ * @a_queued_hw: Total AMPDUs queued to hardware
+ * @a_queued_sw: Total AMPDUs queued to software queues
* @a_completed: Total AMPDUs completed
* @a_retries: No. of AMPDUs retried (SW)
* @a_xretries: No. of AMPDUs dropped due to xretries
@@ -112,7 +113,8 @@ struct ath_tx_stats {
u32 queued;
u32 completed;
u32 a_aggr;
- u32 a_queued;
+ u32 a_queued_hw;
+ u32 a_queued_sw;
u32 a_completed;
u32 a_retries;
u32 a_xretries;
diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c
index 2248e47..3aae523 100644
--- a/drivers/net/wireless/ath/ath9k/xmit.c
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
@@ -1335,7 +1335,6 @@ static void ath_tx_send_ampdu(struct ath_softc *sc, struct ath_atx_tid *tid,
struct list_head bf_head;
bf->bf_state.bf_type |= BUF_AMPDU;
- TX_STAT_INC(txctl->txq->axq_qnum, a_queued);
/*
* Do not queue to h/w when any of the following conditions is true:
@@ -1351,6 +1350,7 @@ static void ath_tx_send_ampdu(struct ath_softc *sc, struct ath_atx_tid *tid,
* Add this frame to software queue for scheduling later
* for aggregation.
*/
+ TX_STAT_INC(txctl->txq->axq_qnum, a_queued_sw);
list_add_tail(&bf->list, &tid->buf_q);
ath_tx_queue_tid(txctl->txq, tid);
return;
@@ -1364,6 +1364,7 @@ static void ath_tx_send_ampdu(struct ath_softc *sc, struct ath_atx_tid *tid,
ath_tx_addto_baw(sc, tid, fi->seqno);
/* Queue to h/w without aggregation */
+ TX_STAT_INC(txctl->txq->axq_qnum, a_queued_hw);
bf->bf_lastbf = bf;
ath_buf_set_rate(sc, bf, fi->framelen);
ath_tx_txqaddbuf(sc, txctl->txq, &bf_head);
--
1.7.2.3
^ permalink raw reply related
* [PATCH RESEND 08/11] ath9k: More xmit queue debugfs information.
From: greearb @ 2011-01-10 7:11 UTC (permalink / raw)
To: linux-wireless; +Cc: ath9k-devel, Ben Greear
In-Reply-To: <1294643513-18820-1-git-send-email-greearb@candelatech.com>
From: Ben Greear <greearb@candelatech.com>
To try to figure out why xmit logic hangs.
Signed-off-by: Ben Greear <greearb@candelatech.com>
---
:100644 100644 650f00f... 9e009cc... M drivers/net/wireless/ath/ath9k/debug.c
drivers/net/wireless/ath/ath9k/debug.c | 26 ++++++++++++++++++++++++++
1 files changed, 26 insertions(+), 0 deletions(-)
diff --git a/drivers/net/wireless/ath/ath9k/debug.c b/drivers/net/wireless/ath/ath9k/debug.c
index 650f00f..9e009cc 100644
--- a/drivers/net/wireless/ath/ath9k/debug.c
+++ b/drivers/net/wireless/ath/ath9k/debug.c
@@ -679,6 +679,32 @@ static ssize_t read_file_xmit(struct file *file, char __user *user_buf,
PRQLE(tmp, txq_fifo[i]);
}
+ /* Print out more detailed queue-info */
+ for (i = 0; i <= WME_AC_BK; i++) {
+ struct ath_txq *txq = &(sc->tx.txq[i]);
+ struct ath_atx_ac *ac;
+ struct ath_atx_tid *tid;
+ if (len >= size)
+ goto done;
+ spin_lock_bh(&txq->axq_lock);
+ if (!list_empty(&txq->axq_acq)) {
+ ac = list_first_entry(&txq->axq_acq, struct ath_atx_ac,
+ list);
+ len += snprintf(buf + len, size - len,
+ "txq[%i] first-ac: %p sched: %i\n",
+ i, ac, ac->sched);
+ if (list_empty(&ac->tid_q) || (len >= size))
+ goto done_for;
+ tid = list_first_entry(&ac->tid_q, struct ath_atx_tid,
+ list);
+ len += snprintf(buf + len, size - len,
+ " first-tid: %p sched: %i paused: %i\n",
+ tid, tid->sched, tid->paused);
+ }
+ done_for:
+ spin_unlock_bh(&txq->axq_lock);
+ }
+
done:
if (len > size)
len = size;
--
1.7.2.3
^ permalink raw reply related
* [PATCH RESEND 09/11] ath9k: Try all queues when looking for next packet to send.
From: greearb @ 2011-01-10 7:11 UTC (permalink / raw)
To: linux-wireless; +Cc: ath9k-devel, Ben Greear
In-Reply-To: <1294643513-18820-1-git-send-email-greearb@candelatech.com>
From: Ben Greear <greearb@candelatech.com>
There can be multiple struct ath_atx_ac entries for each
txq, so if the first one doesn't have any packets to send
now, try the rest of them. This should help keep xmit
going when using multiple stations, especially with AMPDU
enabled.
Signed-off-by: Ben Greear <greearb@candelatech.com>
---
:100644 100644 3aae523... 46481fb... M drivers/net/wireless/ath/ath9k/xmit.c
drivers/net/wireless/ath/ath9k/xmit.c | 97 ++++++++++++++++++++-------------
1 files changed, 59 insertions(+), 38 deletions(-)
diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c
index 3aae523..46481fb 100644
--- a/drivers/net/wireless/ath/ath9k/xmit.c
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
@@ -54,8 +54,8 @@ static void ath_tx_send_normal(struct ath_softc *sc, struct ath_txq *txq,
static void ath_tx_complete_buf(struct ath_softc *sc, struct ath_buf *bf,
struct ath_txq *txq, struct list_head *bf_q,
struct ath_tx_status *ts, int txok, int sendbar);
-static void ath_tx_txqaddbuf(struct ath_softc *sc, struct ath_txq *txq,
- struct list_head *head);
+static int ath_tx_txqaddbuf(struct ath_softc *sc, struct ath_txq *txq,
+ struct list_head *head);
static void ath_buf_set_rate(struct ath_softc *sc, struct ath_buf *bf, int len);
static void ath_tx_rc_status(struct ath_buf *bf, struct ath_tx_status *ts,
int nframes, int nbad, int txok, bool update_rc);
@@ -789,18 +789,21 @@ static enum ATH_AGGR_STATUS ath_tx_form_aggr(struct ath_softc *sc,
#undef PADBYTES
}
-static void ath_tx_sched_aggr(struct ath_softc *sc, struct ath_txq *txq,
- struct ath_atx_tid *tid)
+/* Return number of buffers set up for transmit. */
+static int ath_tx_sched_aggr(struct ath_softc *sc, struct ath_txq *txq,
+ struct ath_atx_tid *tid)
{
struct ath_buf *bf;
enum ATH_AGGR_STATUS status;
struct ath_frame_info *fi;
struct list_head bf_q;
int aggr_len;
+ int cnt = 0;
+ int rv;
do {
if (list_empty(&tid->buf_q))
- return;
+ return cnt;
INIT_LIST_HEAD(&bf_q);
@@ -811,7 +814,7 @@ static void ath_tx_sched_aggr(struct ath_softc *sc, struct ath_txq *txq,
* block-ack window is not open.
*/
if (list_empty(&bf_q))
- break;
+ return cnt;
bf = list_first_entry(&bf_q, struct ath_buf, list);
bf->bf_lastbf = list_entry(bf_q.prev, struct ath_buf, list);
@@ -823,7 +826,11 @@ static void ath_tx_sched_aggr(struct ath_softc *sc, struct ath_txq *txq,
bf->bf_state.bf_type &= ~BUF_AGGR;
ath9k_hw_clr11n_aggr(sc->sc_ah, bf->bf_desc);
ath_buf_set_rate(sc, bf, fi->framelen);
- ath_tx_txqaddbuf(sc, txq, &bf_q);
+ rv = ath_tx_txqaddbuf(sc, txq, &bf_q);
+ if (rv > 0) {
+ TX_STAT_INC(txq->axq_qnum, a_aggr);
+ cnt += rv;
+ }
continue;
}
@@ -835,11 +842,15 @@ static void ath_tx_sched_aggr(struct ath_softc *sc, struct ath_txq *txq,
/* anchor last desc of aggregate */
ath9k_hw_set11n_aggr_last(sc->sc_ah, bf->bf_lastbf->bf_desc);
- ath_tx_txqaddbuf(sc, txq, &bf_q);
- TX_STAT_INC(txq->axq_qnum, a_aggr);
+ rv = ath_tx_txqaddbuf(sc, txq, &bf_q);
+ if (rv > 0) {
+ TX_STAT_INC(txq->axq_qnum, a_aggr);
+ cnt += rv;
+ }
} while (txq->axq_ampdu_depth < ATH_AGGR_MIN_QDEPTH &&
status != ATH_AGGR_BAW_CLOSED);
+ return rv;
}
int ath_tx_aggr_start(struct ath_softc *sc, struct ieee80211_sta *sta,
@@ -1218,46 +1229,54 @@ void ath_tx_cleanupq(struct ath_softc *sc, struct ath_txq *txq)
sc->tx.txqsetup &= ~(1<<txq->axq_qnum);
}
+/** For each axq_acq entry, for each tid, if we can transmit
+ * one, do so and break out.
+ */
void ath_txq_schedule(struct ath_softc *sc, struct ath_txq *txq)
{
- struct ath_atx_ac *ac;
+ struct ath_atx_ac *ac, *ac_tmp, *last;
struct ath_atx_tid *tid;
+ bool did_one = false;
if (list_empty(&txq->axq_acq))
return;
- ac = list_first_entry(&txq->axq_acq, struct ath_atx_ac, list);
- list_del(&ac->list);
- ac->sched = false;
+ last = list_entry(txq->axq_acq.prev, struct ath_atx_ac, list);
+ list_for_each_entry_safe(ac, ac_tmp, &txq->axq_acq, list) {
+ list_del(&ac->list);
+ ac->sched = false;
- do {
- if (list_empty(&ac->tid_q))
- return;
+ while (!list_empty(&ac->tid_q)) {
- tid = list_first_entry(&ac->tid_q, struct ath_atx_tid, list);
- list_del(&tid->list);
- tid->sched = false;
+ tid = list_first_entry(&ac->tid_q, struct ath_atx_tid, list);
+ list_del(&tid->list);
+ tid->sched = false;
- if (tid->paused)
- continue;
+ if (tid->paused)
+ continue;
- ath_tx_sched_aggr(sc, txq, tid);
+ if (ath_tx_sched_aggr(sc, txq, tid) > 0)
+ did_one = true;
- /*
- * add tid to round-robin queue if more frames
- * are pending for the tid
- */
- if (!list_empty(&tid->buf_q))
- ath_tx_queue_tid(txq, tid);
+ /*
+ * add tid to round-robin queue if more frames
+ * are pending for the tid
+ */
+ if (!list_empty(&tid->buf_q))
+ ath_tx_queue_tid(txq, tid);
- break;
- } while (!list_empty(&ac->tid_q));
+ break;
+ }
- if (!list_empty(&ac->tid_q)) {
- if (!ac->sched) {
- ac->sched = true;
- list_add_tail(&ac->list, &txq->axq_acq);
+ if (!list_empty(&ac->tid_q)) {
+ if (!ac->sched) {
+ ac->sched = true;
+ list_add_tail(&ac->list, &txq->axq_acq);
+ }
}
+
+ if (did_one || (ac == last))
+ return;
}
}
@@ -1268,9 +1287,10 @@ void ath_txq_schedule(struct ath_softc *sc, struct ath_txq *txq)
/*
* Insert a chain of ath_buf (descriptors) on a txq and
* assume the descriptors are already chained together by caller.
+ * Return number of buffers sent to DMA.
*/
-static void ath_tx_txqaddbuf(struct ath_softc *sc, struct ath_txq *txq,
- struct list_head *head)
+static int ath_tx_txqaddbuf(struct ath_softc *sc, struct ath_txq *txq,
+ struct list_head *head)
{
struct ath_hw *ah = sc->sc_ah;
struct ath_common *common = ath9k_hw_common(ah);
@@ -1282,7 +1302,7 @@ static void ath_tx_txqaddbuf(struct ath_softc *sc, struct ath_txq *txq,
*/
if (list_empty(head))
- return;
+ return 0;
bf = list_first_entry(head, struct ath_buf, list);
@@ -1292,7 +1312,7 @@ static void ath_tx_txqaddbuf(struct ath_softc *sc, struct ath_txq *txq,
if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA) {
if (txq->axq_depth >= ATH_TXFIFO_DEPTH) {
list_splice_tail_init(head, &txq->txq_fifo_pending);
- return;
+ return 0;
}
if (!list_empty(&txq->txq_fifo[txq->txq_headidx]))
ath_dbg(common, ATH_DBG_XMIT,
@@ -1326,6 +1346,7 @@ static void ath_tx_txqaddbuf(struct ath_softc *sc, struct ath_txq *txq,
txq->axq_depth++;
if (bf_is_ampdu_not_probing(bf))
txq->axq_ampdu_depth++;
+ return 1;
}
static void ath_tx_send_ampdu(struct ath_softc *sc, struct ath_atx_tid *tid,
--
1.7.2.3
^ permalink raw reply related
* [PATCH RESEND 03/11] ath9k: Add more information to debugfs xmit file.
From: greearb @ 2011-01-10 7:11 UTC (permalink / raw)
To: linux-wireless; +Cc: ath9k-devel, Ben Greear
In-Reply-To: <1294643513-18820-1-git-send-email-greearb@candelatech.com>
From: Ben Greear <greearb@candelatech.com>
Should help debug strange tx lockup type issues.
Signed-off-by: Ben Greear <greearb@candelatech.com>
---
:100644 100644 5075faa... 577bc5a... M drivers/net/wireless/ath/ath9k/debug.c
:100644 100644 1e5078b... cd2db3f... M drivers/net/wireless/ath/ath9k/debug.h
:100644 100644 180170d... 99ce6f1... M drivers/net/wireless/ath/ath9k/mac.c
:100644 100644 332d1fe... c769037... M drivers/net/wireless/ath/ath9k/xmit.c
drivers/net/wireless/ath/ath9k/debug.c | 29 +++++++++++++++++++++++++++--
drivers/net/wireless/ath/ath9k/debug.h | 6 ++++++
drivers/net/wireless/ath/ath9k/mac.c | 8 ++++++++
drivers/net/wireless/ath/ath9k/xmit.c | 1 +
4 files changed, 42 insertions(+), 2 deletions(-)
diff --git a/drivers/net/wireless/ath/ath9k/debug.c b/drivers/net/wireless/ath/ath9k/debug.c
index 5075faa..577bc5a 100644
--- a/drivers/net/wireless/ath/ath9k/debug.c
+++ b/drivers/net/wireless/ath/ath9k/debug.c
@@ -599,13 +599,25 @@ do { \
(unsigned int)(sc->tx.txq[WME_AC_VO].elem)); \
} while(0)
+#define PRQLE(str, elem) \
+do { \
+ len += snprintf(buf + len, size - len, \
+ "%s%13i%11i%10i%10i\n", str, \
+ list_empty(&sc->tx.txq[WME_AC_BE].elem), \
+ list_empty(&sc->tx.txq[WME_AC_BK].elem), \
+ list_empty(&sc->tx.txq[WME_AC_VI].elem), \
+ list_empty(&sc->tx.txq[WME_AC_VO].elem)); \
+} while (0)
+
static ssize_t read_file_xmit(struct file *file, char __user *user_buf,
size_t count, loff_t *ppos)
{
struct ath_softc *sc = file->private_data;
char *buf;
- unsigned int len = 0, size = 2048;
+ unsigned int len = 0, size = 4000;
+ int i;
ssize_t retval = 0;
+ char tmp[32];
buf = kzalloc(size, GFP_KERNEL);
if (buf == NULL)
@@ -628,13 +640,26 @@ static ssize_t read_file_xmit(struct file *file, char __user *user_buf,
PR("DELIM Underrun: ", delim_underrun);
PR("TX-Pkts-All: ", tx_pkts_all);
PR("TX-Bytes-All: ", tx_bytes_all);
+ PR("hw-put-tx-buf: ", puttxbuf);
+ PR("hw-tx-start: ", txstart);
+ PR("hw-tx-proc-desc: ", txprocdesc);
PRX("axq-qnum: ", axq_qnum);
PRX("axq-depth: ", axq_depth);
+ PRX("axq-ampdu_depth: ", axq_ampdu_depth);
PRX("axq-stopped ", stopped);
PRX("tx-in-progress ", axq_tx_inprogress);
PRX("pending-frames ", pending_frames);
-
+ PRX("txq_headidx: ", txq_headidx);
+ PRX("txq_tailidx: ", txq_headidx);
+
+ PRQLE("axq_q empty: ", axq_q);
+ PRQLE("axq_acq empty: ", axq_acq);
+ PRQLE("txq_fifo_pending: ", txq_fifo_pending);
+ for (i = 0; i < ATH_TXFIFO_DEPTH; i++) {
+ snprintf(tmp, sizeof(tmp) - 1, "txq_fifo[%i] empty: ", i);
+ PRQLE(tmp, txq_fifo[i]);
+ }
if (len > size)
len = size;
diff --git a/drivers/net/wireless/ath/ath9k/debug.h b/drivers/net/wireless/ath/ath9k/debug.h
index 1e5078b..cd2db3f 100644
--- a/drivers/net/wireless/ath/ath9k/debug.h
+++ b/drivers/net/wireless/ath/ath9k/debug.h
@@ -102,6 +102,9 @@ struct ath_interrupt_stats {
* @desc_cfg_err: Descriptor configuration errors
* @data_urn: TX data underrun errors
* @delim_urn: TX delimiter underrun errors
+ * @puttxbuf: Number of times hardware was given txbuf to write.
+ * @txstart: Number of times hardware was told to start tx.
+ * @txprocdesc: Number of times tx descriptor was processed
*/
struct ath_tx_stats {
u32 tx_pkts_all;
@@ -119,6 +122,9 @@ struct ath_tx_stats {
u32 desc_cfg_err;
u32 data_underrun;
u32 delim_underrun;
+ u32 puttxbuf;
+ u32 txstart;
+ u32 txprocdesc;
};
/**
diff --git a/drivers/net/wireless/ath/ath9k/mac.c b/drivers/net/wireless/ath/ath9k/mac.c
index 180170d..99ce6f1 100644
--- a/drivers/net/wireless/ath/ath9k/mac.c
+++ b/drivers/net/wireless/ath/ath9k/mac.c
@@ -16,6 +16,8 @@
#include "hw.h"
#include "hw-ops.h"
+#include "debug.h"
+#include "ath9k.h"
static void ath9k_hw_set_txq_interrupts(struct ath_hw *ah,
struct ath9k_tx_queue_info *qi)
@@ -50,12 +52,18 @@ EXPORT_SYMBOL(ath9k_hw_gettxbuf);
void ath9k_hw_puttxbuf(struct ath_hw *ah, u32 q, u32 txdp)
{
+ struct ath_wiphy *aphy = ah->hw->priv;
+ struct ath_softc *sc = aphy->sc;
+ TX_STAT_INC(q, puttxbuf);
REG_WRITE(ah, AR_QTXDP(q), txdp);
}
EXPORT_SYMBOL(ath9k_hw_puttxbuf);
void ath9k_hw_txstart(struct ath_hw *ah, u32 q)
{
+ struct ath_wiphy *aphy = ah->hw->priv;
+ struct ath_softc *sc = aphy->sc;
+ TX_STAT_INC(q, txstart);
ath_dbg(ath9k_hw_common(ah), ATH_DBG_QUEUE,
"Enable TXE on queue: %u\n", q);
REG_WRITE(ah, AR_Q_TXE, 1 << q);
diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c
index 332d1fe..c769037 100644
--- a/drivers/net/wireless/ath/ath9k/xmit.c
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
@@ -2033,6 +2033,7 @@ static void ath_tx_processq(struct ath_softc *sc, struct ath_txq *txq)
spin_unlock_bh(&txq->axq_lock);
break;
}
+ TX_STAT_INC(txq->axq_qnum, txprocdesc);
/*
* Remove ath_buf's of the same transmit unit from txq,
--
1.7.2.3
^ permalink raw reply related
* [PATCH RESEND 11/11] ath9k: Implement rx copy-break.
From: greearb @ 2011-01-10 7:11 UTC (permalink / raw)
To: linux-wireless; +Cc: ath9k-devel, Ben Greear
In-Reply-To: <1294643513-18820-1-git-send-email-greearb@candelatech.com>
From: Ben Greear <greearb@candelatech.com>
This saves us constantly allocating large, multi-page
skbs. It should fix the order-1 allocation errors reported,
and in a 60-vif scenario, this significantly decreases CPU
utilization, and latency, and increases bandwidth.
Signed-off-by: Ben Greear <greearb@candelatech.com>
---
:100644 100644 b2497b8... ea2f67c... M drivers/net/wireless/ath/ath9k/recv.c
drivers/net/wireless/ath/ath9k/recv.c | 92 ++++++++++++++++++++++-----------
1 files changed, 61 insertions(+), 31 deletions(-)
diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c
index b2497b8..ea2f67c 100644
--- a/drivers/net/wireless/ath/ath9k/recv.c
+++ b/drivers/net/wireless/ath/ath9k/recv.c
@@ -16,6 +16,7 @@
#include "ath9k.h"
#include "ar9003_mac.h"
+#include <linux/pci.h>
#define SKB_CB_ATHBUF(__skb) (*((struct ath_buf **)__skb->cb))
@@ -1623,7 +1624,7 @@ div_comb_done:
int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp)
{
struct ath_buf *bf;
- struct sk_buff *skb = NULL, *requeue_skb;
+ struct sk_buff *skb = NULL, *requeue_skb = NULL;
struct ieee80211_rx_status *rxs;
struct ath_hw *ah = sc->sc_ah;
struct ath_common *common = ath9k_hw_common(ah);
@@ -1634,7 +1635,8 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp)
*/
struct ieee80211_hw *hw = NULL;
struct ieee80211_hdr *hdr;
- int retval;
+ int retval, len;
+ bool use_copybreak = true;
bool decrypt_error = false;
struct ath_rx_status rs;
enum ath9k_rx_qtype qtype;
@@ -1702,42 +1704,70 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp)
unlikely(tsf_lower - rs.rs_tstamp > 0x10000000))
rxs->mactime += 0x100000000ULL;
- /* Ensure we always have an skb to requeue once we are done
- * processing the current buffer's skb */
- requeue_skb = ath_rxbuf_alloc(common, common->rx_bufsize, GFP_ATOMIC);
-
- /* If there is no memory we ignore the current RX'd frame,
- * tell hardware it can give us a new frame using the old
- * skb and put it at the tail of the sc->rx.rxbuf list for
- * processing. */
- if (!requeue_skb)
- goto requeue;
-
- /* Unmap the frame */
- dma_unmap_single(sc->dev, bf->bf_buf_addr,
- common->rx_bufsize,
- dma_type);
+ len = rs.rs_datalen + ah->caps.rx_status_len;
+ if (use_copybreak) {
+ skb = netdev_alloc_skb(NULL, len);
+ if (!skb) {
+ skb = bf->bf_mpdu;
+ use_copybreak = false;
+ goto non_copybreak;
+ }
+ } else {
+non_copybreak:
+ /* Ensure we always have an skb to requeue once we are
+ * done processing the current buffer's skb */
+ requeue_skb = ath_rxbuf_alloc(common,
+ common->rx_bufsize,
+ GFP_ATOMIC);
+
+ /* If there is no memory we ignore the current RX'd
+ * frame, tell hardware it can give us a new frame
+ * using the old skb and put it at the tail of the
+ * sc->rx.rxbuf list for processing. */
+ if (!requeue_skb)
+ goto requeue;
+
+ /* Unmap the frame */
+ dma_unmap_single(sc->dev, bf->bf_buf_addr,
+ common->rx_bufsize,
+ dma_type);
+ }
- skb_put(skb, rs.rs_datalen + ah->caps.rx_status_len);
+ skb_put(skb, len);
if (ah->caps.rx_status_len)
skb_pull(skb, ah->caps.rx_status_len);
+ if (use_copybreak) {
+ struct pci_dev *pdev = to_pci_dev(sc->dev);
+ pci_dma_sync_single_for_cpu(pdev, bf->bf_buf_addr,
+ len, PCI_DMA_FROMDEVICE);
+ skb_copy_from_linear_data(bf->bf_mpdu, skb->data, len);
+ pci_dma_sync_single_for_device(pdev, bf->bf_buf_addr,
+ len, PCI_DMA_FROMDEVICE);
+ memcpy(skb->cb, bf->bf_mpdu->cb, sizeof(skb->cb));
+ rxs = IEEE80211_SKB_RXCB(skb);
+ }
+
ath9k_rx_skb_postprocess(common, skb, &rs,
rxs, decrypt_error);
- /* We will now give hardware our shiny new allocated skb */
- bf->bf_mpdu = requeue_skb;
- bf->bf_buf_addr = dma_map_single(sc->dev, requeue_skb->data,
- common->rx_bufsize,
- dma_type);
- if (unlikely(dma_mapping_error(sc->dev,
- bf->bf_buf_addr))) {
- dev_kfree_skb_any(requeue_skb);
- bf->bf_mpdu = NULL;
- bf->bf_buf_addr = 0;
- ath_err(common, "dma_mapping_error() on RX\n");
- ath_rx_send_to_mac80211(hw, sc, skb);
- break;
+ if (!use_copybreak) {
+ /* We will now give hardware our shiny new allocated
+ * skb */
+ bf->bf_mpdu = requeue_skb;
+ bf->bf_buf_addr = dma_map_single(sc->dev,
+ requeue_skb->data,
+ common->rx_bufsize,
+ dma_type);
+ if (unlikely(dma_mapping_error(sc->dev,
+ bf->bf_buf_addr))) {
+ dev_kfree_skb_any(requeue_skb);
+ bf->bf_mpdu = NULL;
+ bf->bf_buf_addr = 0;
+ ath_err(common, "dma_mapping_error() on RX\n");
+ ath_rx_send_to_mac80211(hw, sc, skb);
+ break;
+ }
}
/*
--
1.7.2.3
^ permalink raw reply related
* Re: [rt2x00-users] Linksys WUSB600N v1 disconnecting from AP
From: Aleksandar Milivojevic @ 2011-01-10 7:12 UTC (permalink / raw)
To: Helmut Schaa
Cc: Luis R. Rodriguez, Luis Rodriguez, linux-wireless@vger.kernel.org,
Wolfgang Kufner, Luis Correia, users@rt2x00.serialmonkey.com
In-Reply-To: <201101081047.18475.helmut.schaa@googlemail.com>
On Sat, Jan 8, 2011 at 1:47 AM, Helmut Schaa
<helmut.schaa@googlemail.com> wrote:
> Am Samstag, 8. Januar 2011 schrieb Aleksandar Milivojevic:
>> Running 'iw event -t' shows a lot of disassociation due to inactivity.
>> This happens even if there is regular flow of traffic (for example, I
>> start ping to my AP and leave it running, or I leave Pandora streaming
>> music in the browser).
>>
>> Below is example of output of 'iw event -t' (these lines repeat in the
>> output at irregularl intervals):
>>
>> 1294464037.037450: wlan0 (phy #0): deauth 00:1c:10:ea:2a:cb ->
>> 00:1e:52:79:e9:ff reason 4: Disassociated due to inactivity
>> 1294464037.037538: wlan0 (phy #0): disconnected (local request)
>
> Aha, so it's not the AP disassociating you but it's your client disconnecting
> on its own. Mind to provide the wpa_supplicant log for the same situation when
> run with "-ddt"?
Normally, I use NetworkManager, so all of wpa_supplican is kind of
hidden under the hood. For this, I stopped NetworkManager, and
created following simple wpa_supplicant config file:
# WPA-PSK/TKIP
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="MySSID"
scan_ssid=1
key_mgmt=WPA-PSK
psk="MyGreatSecret"
}
Run wpa_supplicant by hand as "wpa_supplicant
-c/path/to/my/wpa_supplicant.conf -iwlan0 -ddt". The log is rather
big, however I guess interesting part (if there's anything interesting
there) is at the point where connection got dropped. In
/var/log/debug, I found following logged by the kernel (same as in
previous logs I posted):
Jan 9 22:37:17 toporko kernel: [ 3152.500035] ieee80211 phy0: wlan0:
No probe response from AP 00:1e:52:79:e9:ff after 500ms,
disconnecting.
Jan 9 22:37:19 toporko kernel: [ 3154.138808] cfg80211: All devices
are disconnected, going to restore regulatory settings
The output of wpa_supplicant was quiet until above "no probe response"
was logged by the kernel (1294641437 timestamp corresponds to 22:37:17
local time):
1294641437.407476: RTM_NEWLINK: operstate=1 ifi_flags=0x1003 ([UP])
1294641437.407493: RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan0' added
1294641439.045890: RTM_NEWLINK: operstate=1 ifi_flags=0x1003 ([UP])
1294641439.045908: RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan0' added
1294641439.045913: Wireless event: cmd=0x8b15 len=20
1294641439.045916: Wireless event: new AP: 00:00:00:00:00:00
1294641439.045930: Setting scan request: 0 sec 100000 usec
1294641439.045938: Added BSSID 00:1e:52:79:e9:ff into blacklist
1294641439.045944: CTRL-EVENT-DISCONNECTED - Disconnect event - remove keys
1294641439.045947: wpa_driver_wext_set_key: alg=0 key_idx=0 set_tx=0
seq_len=0 key_len=0
1294641439.045966: wpa_driver_wext_set_key: alg=0 key_idx=1 set_tx=0
seq_len=0 key_len=0
1294641439.045976: wpa_driver_wext_set_key: alg=0 key_idx=2 set_tx=0
seq_len=0 key_len=0
1294641439.045984: wpa_driver_wext_set_key: alg=0 key_idx=3 set_tx=0
seq_len=0 key_len=0
1294641439.045993: wpa_driver_wext_set_key: alg=0 key_idx=0 set_tx=0
seq_len=0 key_len=0
1294641439.046001: State: COMPLETED -> DISCONNECTED
1294641439.046007: wpa_driver_wext_set_operstate: operstate 1->0 (DORMANT)
1294641439.046010: WEXT: Operstate: linkmode=-1, operstate=5
1294641439.046027: EAPOL: External notification - portEnabled=0
1294641439.046032: EAPOL: SUPP_PAE entering state DISCONNECTED
1294641439.046034: EAPOL: SUPP_BE entering state INITIALIZE
1294641439.046038: EAPOL: External notification - portValid=0
1294641439.046041: EAPOL: External notification - EAP success=0
1294641439.146109: State: DISCONNECTED -> SCANNING
1294641439.146128: Starting AP scan (broadcast SSID)
1294641439.148479: Scan requested (ret=0) - scan timeout 30 seconds
And the following lines look just like standard
scan/authentication/association thing... Not sure if anything of the
above is of any use...
^ permalink raw reply
* [PATCH RESEND 10/11] ath9k: Restart xmit logic in xmit watchdog.
From: greearb @ 2011-01-10 7:11 UTC (permalink / raw)
To: linux-wireless; +Cc: ath9k-devel, Ben Greear
In-Reply-To: <1294643513-18820-1-git-send-email-greearb@candelatech.com>
From: Ben Greear <greearb@candelatech.com>
The system can get into a state where the xmit queue
is stopped, but there are no packets pending, so
the queue will not be restarted.
Add logic to the xmit watchdog to attempt to restart
the xmit logic if this situation is detected.
Example 'dmesg' output:
ath: txq: f4e723e0 axq_qnum: 2, mac80211_qnum: 2 axq_link: f4e996c8 pending frames: 1 axq_acq empty: 1 stopped: 0 axq_depth: 0 Attempting to restart tx logic.
Signed-off-by: Ben Greear <greearb@candelatech.com>
---
:100644 100644 3f5c513... 3108699... M drivers/net/wireless/ath/ath9k/ath9k.h
:100644 100644 9e009cc... b0cb792... M drivers/net/wireless/ath/ath9k/debug.c
:100644 100644 59c01ca... 5279653... M drivers/net/wireless/ath/ath9k/init.c
:100644 100644 46481fb... 8631afb... M drivers/net/wireless/ath/ath9k/xmit.c
drivers/net/wireless/ath/ath9k/ath9k.h | 9 +++-
drivers/net/wireless/ath/ath9k/debug.c | 4 +-
drivers/net/wireless/ath/ath9k/init.c | 5 +-
drivers/net/wireless/ath/ath9k/xmit.c | 79 ++++++++++++++++++++++----------
4 files changed, 68 insertions(+), 29 deletions(-)
diff --git a/drivers/net/wireless/ath/ath9k/ath9k.h b/drivers/net/wireless/ath/ath9k/ath9k.h
index 3f5c513..3108699 100644
--- a/drivers/net/wireless/ath/ath9k/ath9k.h
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
@@ -184,7 +184,8 @@ enum ATH_AGGR_STATUS {
#define ATH_TXFIFO_DEPTH 8
struct ath_txq {
- u32 axq_qnum;
+ int mac80211_qnum; /* mac80211 queue number, -1 means not mac80211 Q */
+ u32 axq_qnum; /* ath9k hardware queue number */
u32 *axq_link;
struct list_head axq_q;
spinlock_t axq_lock;
@@ -280,6 +281,11 @@ struct ath_tx_control {
#define ATH_TX_XRETRY 0x02
#define ATH_TX_BAR 0x04
+/**
+ * @txq_map: Index is mac80211 queue number. This is
+ * not necessarily the same as the hardware queue number
+ * (axq_qnum).
+ */
struct ath_tx {
u16 seq_no;
u32 txqsetup;
@@ -629,6 +635,7 @@ struct ath_softc {
struct ath9k_debug debug;
spinlock_t nodes_lock;
struct list_head nodes; /* basically, stations */
+ unsigned int tx_complete_poll_work_seen;
#endif
struct ath_beacon_config cur_beacon_conf;
struct delayed_work tx_complete_work;
diff --git a/drivers/net/wireless/ath/ath9k/debug.c b/drivers/net/wireless/ath/ath9k/debug.c
index 9e009cc..b0cb792 100644
--- a/drivers/net/wireless/ath/ath9k/debug.c
+++ b/drivers/net/wireless/ath/ath9k/debug.c
@@ -629,9 +629,11 @@ static ssize_t read_file_xmit(struct file *file, char __user *user_buf,
if (buf == NULL)
return -ENOMEM;
- len += sprintf(buf, "Num-Tx-Queues: %i tx-queues-setup: 0x%x\n"
+ len += sprintf(buf, "Num-Tx-Queues: %i tx-queues-setup: 0x%x"
+ " poll-work-seen: %u\n"
"%30s %10s%10s%10s\n\n",
ATH9K_NUM_TX_QUEUES, sc->tx.txqsetup,
+ sc->tx_complete_poll_work_seen,
"BE", "BK", "VI", "VO");
PR("MPDUs Queued: ", queued);
diff --git a/drivers/net/wireless/ath/ath9k/init.c b/drivers/net/wireless/ath/ath9k/init.c
index 59c01ca..5279653 100644
--- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c
@@ -442,9 +442,10 @@ static int ath9k_init_queues(struct ath_softc *sc)
sc->config.cabqReadytime = ATH_CABQ_READY_TIME;
ath_cabq_update(sc);
- for (i = 0; i < WME_NUM_AC; i++)
+ for (i = 0; i < WME_NUM_AC; i++) {
sc->tx.txq_map[i] = ath_txq_setup(sc, ATH9K_TX_QUEUE_DATA, i);
-
+ sc->tx.txq_map[i]->mac80211_qnum = i;
+ }
return 0;
}
diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c
index 46481fb..8631afb 100644
--- a/drivers/net/wireless/ath/ath9k/xmit.c
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
@@ -953,7 +953,7 @@ struct ath_txq *ath_txq_setup(struct ath_softc *sc, int qtype, int subtype)
[WME_AC_VI] = ATH_TXQ_AC_VI,
[WME_AC_VO] = ATH_TXQ_AC_VO,
};
- int qnum, i;
+ int axq_qnum, i;
memset(&qi, 0, sizeof(qi));
qi.tqi_subtype = subtype_txq_to_hwq[subtype];
@@ -987,24 +987,25 @@ struct ath_txq *ath_txq_setup(struct ath_softc *sc, int qtype, int subtype)
qi.tqi_qflags = TXQ_FLAG_TXEOLINT_ENABLE |
TXQ_FLAG_TXDESCINT_ENABLE;
}
- qnum = ath9k_hw_setuptxqueue(ah, qtype, &qi);
- if (qnum == -1) {
+ axq_qnum = ath9k_hw_setuptxqueue(ah, qtype, &qi);
+ if (axq_qnum == -1) {
/*
* NB: don't print a message, this happens
* normally on parts with too few tx queues
*/
return NULL;
}
- if (qnum >= ARRAY_SIZE(sc->tx.txq)) {
+ if (axq_qnum >= ARRAY_SIZE(sc->tx.txq)) {
ath_err(common, "qnum %u out of range, max %zu!\n",
- qnum, ARRAY_SIZE(sc->tx.txq));
- ath9k_hw_releasetxqueue(ah, qnum);
+ axq_qnum, ARRAY_SIZE(sc->tx.txq));
+ ath9k_hw_releasetxqueue(ah, axq_qnum);
return NULL;
}
- if (!ATH_TXQ_SETUP(sc, qnum)) {
- struct ath_txq *txq = &sc->tx.txq[qnum];
+ if (!ATH_TXQ_SETUP(sc, axq_qnum)) {
+ struct ath_txq *txq = &sc->tx.txq[axq_qnum];
- txq->axq_qnum = qnum;
+ txq->axq_qnum = axq_qnum;
+ txq->mac80211_qnum = -1;
txq->axq_link = NULL;
INIT_LIST_HEAD(&txq->axq_q);
INIT_LIST_HEAD(&txq->axq_acq);
@@ -1012,14 +1013,14 @@ struct ath_txq *ath_txq_setup(struct ath_softc *sc, int qtype, int subtype)
txq->axq_depth = 0;
txq->axq_ampdu_depth = 0;
txq->axq_tx_inprogress = false;
- sc->tx.txqsetup |= 1<<qnum;
+ sc->tx.txqsetup |= 1<<axq_qnum;
txq->txq_headidx = txq->txq_tailidx = 0;
for (i = 0; i < ATH_TXFIFO_DEPTH; i++)
INIT_LIST_HEAD(&txq->txq_fifo[i]);
INIT_LIST_HEAD(&txq->txq_fifo_pending);
}
- return &sc->tx.txq[qnum];
+ return &sc->tx.txq[axq_qnum];
}
int ath_txq_update(struct ath_softc *sc, int qnum,
@@ -1988,17 +1989,16 @@ static void ath_tx_rc_status(struct ath_buf *bf, struct ath_tx_status *ts,
tx_info->status.rates[tx_rateindex].count = ts->ts_longretry + 1;
}
-static void ath_wake_mac80211_queue(struct ath_softc *sc, int qnum)
+/* Has no locking. Must hold spin_lock_bh(&txq->axq_lock)
+ * before calling this.
+ */
+static void __ath_wake_mac80211_queue(struct ath_softc *sc, struct ath_txq *txq)
{
- struct ath_txq *txq;
-
- txq = sc->tx.txq_map[qnum];
- spin_lock_bh(&txq->axq_lock);
- if (txq->stopped && txq->pending_frames < ATH_MAX_QDEPTH) {
- if (ath_mac80211_start_queue(sc, qnum))
+ if (txq->mac80211_qnum >= 0 &&
+ txq->stopped && txq->pending_frames < ATH_MAX_QDEPTH) {
+ if (ath_mac80211_start_queue(sc, txq->mac80211_qnum))
txq->stopped = 0;
}
- spin_unlock_bh(&txq->axq_lock);
}
static void ath_tx_processq(struct ath_softc *sc, struct ath_txq *txq)
@@ -2101,10 +2101,9 @@ static void ath_tx_processq(struct ath_softc *sc, struct ath_txq *txq)
else
ath_tx_complete_buf(sc, bf, txq, &bf_head, &ts, txok, 0);
- if (txq == sc->tx.txq_map[qnum])
- ath_wake_mac80211_queue(sc, qnum);
-
spin_lock_bh(&txq->axq_lock);
+ __ath_wake_mac80211_queue(sc, txq);
+
if (sc->sc_flags & SC_OP_TXAGGR)
ath_txq_schedule(sc, txq);
spin_unlock_bh(&txq->axq_lock);
@@ -2118,6 +2117,9 @@ static void ath_tx_complete_poll_work(struct work_struct *work)
struct ath_txq *txq;
int i;
bool needreset = false;
+#ifdef CONFIG_ATH9K_DEBUGFS
+ sc->tx_complete_poll_work_seen++;
+#endif
for (i = 0; i < ATH9K_NUM_TX_QUEUES; i++)
if (ATH_TXQ_SETUP(sc, i)) {
@@ -2131,6 +2133,34 @@ static void ath_tx_complete_poll_work(struct work_struct *work)
} else {
txq->axq_tx_inprogress = true;
}
+ } else {
+ /* If the queue has pending buffers, then it
+ * should be doing tx work (and have axq_depth).
+ * Shouldn't get to this state I think..but
+ * we do.
+ */
+ if (!(sc->sc_flags & (SC_OP_OFFCHANNEL)) &&
+ (txq->pending_frames > 0 ||
+ !list_empty(&txq->axq_acq) ||
+ txq->stopped)) {
+ ath_err(ath9k_hw_common(sc->sc_ah),
+ "txq: %p axq_qnum: %u,"
+ " mac80211_qnum: %i"
+ " axq_link: %p"
+ " pending frames: %i"
+ " axq_acq empty: %i"
+ " stopped: %i"
+ " axq_depth: 0 Attempting to"
+ " restart tx logic.\n",
+ txq, txq->axq_qnum,
+ txq->mac80211_qnum,
+ txq->axq_link,
+ txq->pending_frames,
+ list_empty(&txq->axq_acq),
+ txq->stopped);
+ __ath_wake_mac80211_queue(sc, txq);
+ ath_txq_schedule(sc, txq);
+ }
}
spin_unlock_bh(&txq->axq_lock);
}
@@ -2227,10 +2257,9 @@ void ath_tx_edma_tasklet(struct ath_softc *sc)
ath_tx_complete_buf(sc, bf, txq, &bf_head,
&txs, txok, 0);
- if (txq == sc->tx.txq_map[qnum])
- ath_wake_mac80211_queue(sc, qnum);
-
spin_lock_bh(&txq->axq_lock);
+ __ath_wake_mac80211_queue(sc, txq);
+
if (!list_empty(&txq->txq_fifo_pending)) {
INIT_LIST_HEAD(&bf_head);
bf = list_first_entry(&txq->txq_fifo_pending,
--
1.7.2.3
^ permalink raw reply related
* [PATCH RESEND 07/11] ath9k: Keep track of stations for debugfs.
From: greearb @ 2011-01-10 7:11 UTC (permalink / raw)
To: linux-wireless; +Cc: ath9k-devel, Ben Greear
In-Reply-To: <1294643513-18820-1-git-send-email-greearb@candelatech.com>
From: Ben Greear <greearb@candelatech.com>
The stations hold the ath_node, which holds the tid
and other xmit logic structures. In order to debug
stuck xmit logic, we need a way to print out the tid
state for the stations.
Signed-off-by: Ben Greear <greearb@candelatech.com>
---
:100644 100644 deda815... 3f5c513... M drivers/net/wireless/ath/ath9k/ath9k.h
:100644 100644 faf84e4... 650f00f... M drivers/net/wireless/ath/ath9k/debug.c
:100644 100644 23b2998... 59c01ca... M drivers/net/wireless/ath/ath9k/init.c
:100644 100644 16eb891... cb9940b... M drivers/net/wireless/ath/ath9k/main.c
drivers/net/wireless/ath/ath9k/ath9k.h | 7 ++-
drivers/net/wireless/ath/ath9k/debug.c | 94 +++++++++++++++++++++++++++++++-
drivers/net/wireless/ath/ath9k/init.c | 4 ++
drivers/net/wireless/ath/ath9k/main.c | 13 +++++
4 files changed, 115 insertions(+), 3 deletions(-)
diff --git a/drivers/net/wireless/ath/ath9k/ath9k.h b/drivers/net/wireless/ath/ath9k/ath9k.h
index deda815..3f5c513 100644
--- a/drivers/net/wireless/ath/ath9k/ath9k.h
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
@@ -254,7 +254,10 @@ struct ath_atx_tid {
};
struct ath_node {
- struct ath_common *common;
+#ifdef CONFIG_ATH9K_DEBUGFS
+ struct list_head list; /* for sc->nodes */
+ struct ieee80211_sta *sta; /* station struct we're part of */
+#endif
struct ath_atx_tid tid[WME_NUM_TID];
struct ath_atx_ac ac[WME_NUM_AC];
u16 maxampdu;
@@ -624,6 +627,8 @@ struct ath_softc {
#ifdef CONFIG_ATH9K_DEBUGFS
struct ath9k_debug debug;
+ spinlock_t nodes_lock;
+ struct list_head nodes; /* basically, stations */
#endif
struct ath_beacon_config cur_beacon_conf;
struct delayed_work tx_complete_work;
diff --git a/drivers/net/wireless/ath/ath9k/debug.c b/drivers/net/wireless/ath/ath9k/debug.c
index faf84e4..650f00f 100644
--- a/drivers/net/wireless/ath/ath9k/debug.c
+++ b/drivers/net/wireless/ath/ath9k/debug.c
@@ -587,6 +587,8 @@ static const struct file_operations fops_wiphy = {
sc->debug.stats.txstats[WME_AC_BK].elem, \
sc->debug.stats.txstats[WME_AC_VI].elem, \
sc->debug.stats.txstats[WME_AC_VO].elem); \
+ if (len >= size) \
+ goto done; \
} while(0)
#define PRX(str, elem) \
@@ -597,6 +599,8 @@ do { \
(unsigned int)(sc->tx.txq[WME_AC_BK].elem), \
(unsigned int)(sc->tx.txq[WME_AC_VI].elem), \
(unsigned int)(sc->tx.txq[WME_AC_VO].elem)); \
+ if (len >= size) \
+ goto done; \
} while(0)
#define PRQLE(str, elem) \
@@ -607,6 +611,8 @@ do { \
list_empty(&sc->tx.txq[WME_AC_BK].elem), \
list_empty(&sc->tx.txq[WME_AC_VI].elem), \
list_empty(&sc->tx.txq[WME_AC_VO].elem)); \
+ if (len >= size) \
+ goto done; \
} while (0)
static ssize_t read_file_xmit(struct file *file, char __user *user_buf,
@@ -614,7 +620,7 @@ static ssize_t read_file_xmit(struct file *file, char __user *user_buf,
{
struct ath_softc *sc = file->private_data;
char *buf;
- unsigned int len = 0, size = 4000;
+ unsigned int len = 0, size = 8000;
int i;
ssize_t retval = 0;
char tmp[32];
@@ -623,7 +629,10 @@ static ssize_t read_file_xmit(struct file *file, char __user *user_buf,
if (buf == NULL)
return -ENOMEM;
- len += sprintf(buf, "%30s %10s%10s%10s\n\n", "BE", "BK", "VI", "VO");
+ len += sprintf(buf, "Num-Tx-Queues: %i tx-queues-setup: 0x%x\n"
+ "%30s %10s%10s%10s\n\n",
+ ATH9K_NUM_TX_QUEUES, sc->tx.txqsetup,
+ "BE", "BK", "VI", "VO");
PR("MPDUs Queued: ", queued);
PR("MPDUs Completed: ", completed);
@@ -644,6 +653,14 @@ static ssize_t read_file_xmit(struct file *file, char __user *user_buf,
PR("hw-put-tx-buf: ", puttxbuf);
PR("hw-tx-start: ", txstart);
PR("hw-tx-proc-desc: ", txprocdesc);
+ len += snprintf(buf + len, size - len,
+ "%s%11p%11p%10p%10p\n", "txq-memory-address:",
+ &(sc->tx.txq[WME_AC_BE]),
+ &(sc->tx.txq[WME_AC_BK]),
+ &(sc->tx.txq[WME_AC_VI]),
+ &(sc->tx.txq[WME_AC_VO]));
+ if (len >= size)
+ goto done;
PRX("axq-qnum: ", axq_qnum);
PRX("axq-depth: ", axq_depth);
@@ -661,6 +678,68 @@ static ssize_t read_file_xmit(struct file *file, char __user *user_buf,
snprintf(tmp, sizeof(tmp) - 1, "txq_fifo[%i] empty: ", i);
PRQLE(tmp, txq_fifo[i]);
}
+
+done:
+ if (len > size)
+ len = size;
+
+ retval = simple_read_from_buffer(user_buf, count, ppos, buf, len);
+ kfree(buf);
+
+ return retval;
+}
+
+static ssize_t read_file_stations(struct file *file, char __user *user_buf,
+ size_t count, loff_t *ppos)
+{
+ struct ath_softc *sc = file->private_data;
+ char *buf;
+ unsigned int len = 0, size = 64000;
+ struct ath_node *an = NULL;
+ ssize_t retval = 0;
+ int q;
+
+ buf = kzalloc(size, GFP_KERNEL);
+ if (buf == NULL)
+ return -ENOMEM;
+
+ len += snprintf(buf + len, size - len,
+ "Stations:\n"
+ " tid: addr sched paused buf_q-empty an ac\n"
+ " ac: addr sched tid_q-empty txq\n");
+
+ spin_lock(&sc->nodes_lock);
+ list_for_each_entry(an, &sc->nodes, list) {
+ len += snprintf(buf + len, size - len,
+ "%pM\n", an->sta->addr);
+ if (len >= size)
+ goto done;
+
+ for (q = 0; q < WME_NUM_TID; q++) {
+ struct ath_atx_tid *tid = &(an->tid[q]);
+ len += snprintf(buf + len, size - len,
+ " tid: %p %s %s %i %p %p\n",
+ tid, tid->sched ? "sched" : "idle",
+ tid->paused ? "paused" : "running",
+ list_empty(&tid->buf_q),
+ tid->an, tid->ac);
+ if (len >= size)
+ goto done;
+ }
+
+ for (q = 0; q < WME_NUM_AC; q++) {
+ struct ath_atx_ac *ac = &(an->ac[q]);
+ len += snprintf(buf + len, size - len,
+ " ac: %p %s %i %p\n",
+ ac, ac->sched ? "sched" : "idle",
+ list_empty(&ac->tid_q), ac->txq);
+ if (len >= size)
+ goto done;
+ }
+ }
+
+done:
+ spin_unlock(&sc->nodes_lock);
if (len > size)
len = size;
@@ -708,6 +787,13 @@ static const struct file_operations fops_xmit = {
.llseek = default_llseek,
};
+static const struct file_operations fops_stations = {
+ .read = read_file_stations,
+ .open = ath9k_debugfs_open,
+ .owner = THIS_MODULE,
+ .llseek = default_llseek,
+};
+
static ssize_t read_file_recv(struct file *file, char __user *user_buf,
size_t count, loff_t *ppos)
{
@@ -945,6 +1031,10 @@ int ath9k_init_debug(struct ath_hw *ah)
sc, &fops_xmit))
goto err;
+ if (!debugfs_create_file("stations", S_IRUSR, sc->debug.debugfs_phy,
+ sc, &fops_stations))
+ goto err;
+
if (!debugfs_create_file("recv", S_IRUSR, sc->debug.debugfs_phy,
sc, &fops_recv))
goto err;
diff --git a/drivers/net/wireless/ath/ath9k/init.c b/drivers/net/wireless/ath/ath9k/init.c
index 23b2998..59c01ca 100644
--- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c
@@ -559,6 +559,10 @@ static int ath9k_init_softc(u16 devid, struct ath_softc *sc, u16 subsysid,
spin_lock_init(&sc->sc_serial_rw);
spin_lock_init(&sc->sc_pm_lock);
mutex_init(&sc->mutex);
+#ifdef CONFIG_ATH9K_DEBUGFS
+ spin_lock_init(&sc->nodes_lock);
+ INIT_LIST_HEAD(&sc->nodes);
+#endif
tasklet_init(&sc->intr_tq, ath9k_tasklet, (unsigned long)sc);
tasklet_init(&sc->bcon_tasklet, ath_beacon_tasklet,
(unsigned long)sc);
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index 16eb891..cb9940b 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -545,6 +545,12 @@ static void ath_node_attach(struct ath_softc *sc, struct ieee80211_sta *sta)
struct ath_hw *ah = sc->sc_ah;
an = (struct ath_node *)sta->drv_priv;
+#ifdef CONFIG_ATH9K_DEBUGFS
+ spin_lock(&sc->nodes_lock);
+ list_add(&an->list, &sc->nodes);
+ spin_unlock(&sc->nodes_lock);
+ an->sta = sta;
+#endif
if ((ah->caps.hw_caps) & ATH9K_HW_CAP_APM)
sc->sc_flags |= SC_OP_ENABLE_APM;
@@ -560,6 +566,13 @@ static void ath_node_detach(struct ath_softc *sc, struct ieee80211_sta *sta)
{
struct ath_node *an = (struct ath_node *)sta->drv_priv;
+#ifdef CONFIG_ATH9K_DEBUGFS
+ spin_lock(&sc->nodes_lock);
+ list_del(&an->list);
+ spin_unlock(&sc->nodes_lock);
+ an->sta = NULL;
+#endif
+
if (sc->sc_flags & SC_OP_TXAGGR)
ath_tx_node_cleanup(sc, an);
}
--
1.7.2.3
^ permalink raw reply related
* [PATCH RESEND 05/11] ath9k: Ensure xmit makes progress.
From: greearb @ 2011-01-10 7:11 UTC (permalink / raw)
To: linux-wireless; +Cc: ath9k-devel, Ben Greear
In-Reply-To: <1294643513-18820-1-git-send-email-greearb@candelatech.com>
From: Ben Greear <greearb@candelatech.com>
If the txq->axq_q is empty, the code was breaking out
of the tx_processq logic without checking to see if it should
transmit other queued AMPDU frames (txq->axq_acq).
This patches ensures ath_txq_schedule is called.
This needs review.
Signed-off-by: Ben Greear <greearb@candelatech.com>
---
:100644 100644 c769037... 2248e47... M drivers/net/wireless/ath/ath9k/xmit.c
drivers/net/wireless/ath/ath9k/xmit.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c
index c769037..2248e47 100644
--- a/drivers/net/wireless/ath/ath9k/xmit.c
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
@@ -1999,6 +1999,8 @@ static void ath_tx_processq(struct ath_softc *sc, struct ath_txq *txq)
spin_lock_bh(&txq->axq_lock);
if (list_empty(&txq->axq_q)) {
txq->axq_link = NULL;
+ if (sc->sc_flags & SC_OP_TXAGGR)
+ ath_txq_schedule(sc, txq);
spin_unlock_bh(&txq->axq_lock);
break;
}
--
1.7.2.3
^ permalink raw reply related
* [PATCH RESEND 04/11] ath9k: Remove un-used member from ath_node.
From: greearb @ 2011-01-10 7:11 UTC (permalink / raw)
To: linux-wireless; +Cc: ath9k-devel, Ben Greear
In-Reply-To: <1294643513-18820-1-git-send-email-greearb@candelatech.com>
From: Ben Greear <greearb@candelatech.com>
Signed-off-by: Ben Greear <greearb@candelatech.com>
---
:100644 100644 3681caf5.. deda815... M drivers/net/wireless/ath/ath9k/ath9k.h
drivers/net/wireless/ath/ath9k/ath9k.h | 1 -
1 files changed, 0 insertions(+), 1 deletions(-)
diff --git a/drivers/net/wireless/ath/ath9k/ath9k.h b/drivers/net/wireless/ath/ath9k/ath9k.h
index 3681caf5..deda815 100644
--- a/drivers/net/wireless/ath/ath9k/ath9k.h
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
@@ -342,7 +342,6 @@ struct ath_vif {
__le64 tsf_adjust; /* TSF adjustment for staggered beacons */
enum nl80211_iftype av_opmode;
struct ath_buf *av_bcbuf;
- struct ath_tx_control av_btxctl;
u8 bssid[ETH_ALEN]; /* current BSSID from config_interface */
};
--
1.7.2.3
^ permalink raw reply related
* [PATCH RESEND 02/11] ath9k: Initialize ah->hw
From: greearb @ 2011-01-10 7:11 UTC (permalink / raw)
To: linux-wireless; +Cc: ath9k-devel, Ben Greear
In-Reply-To: <1294643513-18820-1-git-send-email-greearb@candelatech.com>
From: Ben Greear <greearb@candelatech.com>
Previous code left it NULL.
Signed-off-by: Ben Greear <greearb@candelatech.com>
---
:100644 100644 767d8b8... 23b2998... M drivers/net/wireless/ath/ath9k/init.c
drivers/net/wireless/ath/ath9k/init.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/drivers/net/wireless/ath/ath9k/init.c b/drivers/net/wireless/ath/ath9k/init.c
index 767d8b8..23b2998 100644
--- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c
@@ -537,6 +537,7 @@ static int ath9k_init_softc(u16 devid, struct ath_softc *sc, u16 subsysid,
if (!ah)
return -ENOMEM;
+ ah->hw = sc->hw;
ah->hw_version.devid = devid;
ah->hw_version.subsysid = subsysid;
sc->sc_ah = ah;
--
1.7.2.3
^ permalink raw reply related
* [PATCH RESEND 01/11] ath9k: Show some live tx-queue values in debugfs.
From: greearb @ 2011-01-10 7:11 UTC (permalink / raw)
To: linux-wireless; +Cc: ath9k-devel, Ben Greear
In-Reply-To: <1294643513-18820-1-git-send-email-greearb@candelatech.com>
From: Ben Greear <greearb@candelatech.com>
I thought this might help track down stuck queues, etc.
Signed-off-by: Ben Greear <greearb@candelatech.com>
---
:100644 100644 3586c43... 5075faa... M drivers/net/wireless/ath/ath9k/debug.c
drivers/net/wireless/ath/ath9k/debug.c | 16 ++++++++++++++++
1 files changed, 16 insertions(+), 0 deletions(-)
diff --git a/drivers/net/wireless/ath/ath9k/debug.c b/drivers/net/wireless/ath/ath9k/debug.c
index 3586c43..5075faa 100644
--- a/drivers/net/wireless/ath/ath9k/debug.c
+++ b/drivers/net/wireless/ath/ath9k/debug.c
@@ -589,6 +589,16 @@ static const struct file_operations fops_wiphy = {
sc->debug.stats.txstats[WME_AC_VO].elem); \
} while(0)
+#define PRX(str, elem) \
+do { \
+ len += snprintf(buf + len, size - len, \
+ "%s%13u%11u%10u%10u\n", str, \
+ (unsigned int)(sc->tx.txq[WME_AC_BE].elem), \
+ (unsigned int)(sc->tx.txq[WME_AC_BK].elem), \
+ (unsigned int)(sc->tx.txq[WME_AC_VI].elem), \
+ (unsigned int)(sc->tx.txq[WME_AC_VO].elem)); \
+} while(0)
+
static ssize_t read_file_xmit(struct file *file, char __user *user_buf,
size_t count, loff_t *ppos)
{
@@ -619,6 +629,12 @@ static ssize_t read_file_xmit(struct file *file, char __user *user_buf,
PR("TX-Pkts-All: ", tx_pkts_all);
PR("TX-Bytes-All: ", tx_bytes_all);
+ PRX("axq-qnum: ", axq_qnum);
+ PRX("axq-depth: ", axq_depth);
+ PRX("axq-stopped ", stopped);
+ PRX("tx-in-progress ", axq_tx_inprogress);
+ PRX("pending-frames ", pending_frames);
+
if (len > size)
len = size;
--
1.7.2.3
^ permalink raw reply related
* ath9k: Resend all my pending patches.
From: greearb @ 2011-01-10 7:11 UTC (permalink / raw)
To: linux-wireless; +Cc: ath9k-devel
Here is my current ath9k patch queue. These have all been
posted before, but this should make it easier to apply them.
The final 'copy-break' patch still needs some work to
function properly on non PCI busses it seems, and maybe
disable copybreak on larger packets.
^ permalink raw reply
* [PATCH 1/1] linux-firmware: wl12xx-update STA FW supports 11n BA sessions
From: Shahar Levi @ 2011-01-10 7:08 UTC (permalink / raw)
To: linux-wireless; +Cc: Luciano Coelho
Update STA FW to version 6.1.0.50.350 including 11n BA support.
Signed-off-by: Shahar Levi <shahar_levi@ti.com>
---
WHENCE | 2 +-
ti-connectivity/wl1271-fw.bin | Bin 271712 -> 271832 bytes
2 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/WHENCE b/WHENCE
index d807e25..94e771b 100644
--- a/WHENCE
+++ b/WHENCE
@@ -1438,7 +1438,7 @@ File: wl1271-nvs-ap.bin
Licence: See LICENCE.ti-connectivity for details.
- Station: wl1271-fw.bin version 6.1.0.0.343 (RM version 206)
+ Station: wl1271-fw.bin version 6.1.0.50.350 (RM version 206)
Access Point: wl1271-fw-ap.bin version 6.2.0.0.30 (RM version 6.2.0.0.6)
The nvs file includes two parts:
- radio calibration
diff --git a/ti-connectivity/wl1271-fw.bin b/ti-connectivity/wl1271-fw.bin
index 6a30713b8b328f44d2ba02f95df7f2a52c30a7da..aaafe8dd6d48a79f1472b75172d285e9a915a8ca 100644
GIT binary patch
delta 92439
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�Z6Pmdp{7Q+hpeE6;I
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
I<gbeV51{4bVgLXD
delta 91909
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
XjujE*^FuImW2rFg?(u{CY4QI9kgEsF
--
1.7.0.4
^ permalink raw reply related
* [PATCHv2 1/1] mac80211: Rewrote code for checking if destinations are proxied.
From: Joel A Fernandes @ 2011-01-10 6:44 UTC (permalink / raw)
To: John W. Linville; +Cc: linux-wireless, Johannes Berg, javier, devel
Rewrote code for checking if the destination is proxied by a mesh portal, to facilitate better
understanding of the functionality.
Signed-off-by: Joel A Fernandes <agnel.joel@gmail.com>
Acked-by: Javier Cardona <javier@cozybit.com>
--
These changes are incremental to the patch "mac80211: Fix mesh portal communication with other mesh nodes"
which was merged into wireless-testing (commit f76b57b47e5fd423f9827c7b0ba7bbd06cca6b9b).
Resending the patch as v2 because Thunderbird managed to mess up the formatting yet again.
--
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 5950e3a..5173fc6 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -1815,19 +1815,18 @@ netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb,
mppath = mpp_path_lookup(skb->data, sdata);
/*
- * Do not use address extension, if it is a packet from
- * the same interface and the destination is not being
- * proxied by any other mest point.
+ * Use address extension if it is a packet from another interface or if
+ * we know the destination is being proxied by a portal (i.e. portal address
+ * differs from proxied address)
*/
if (compare_ether_addr(sdata->vif.addr,
skb->data + ETH_ALEN) == 0 &&
- (!mppath || !compare_ether_addr(mppath->mpp, skb->data))) {
+ !(mppath && compare_ether_addr(mppath->mpp, skb->data))) {
hdrlen = ieee80211_fill_mesh_addresses(&hdr, &fc,
skb->data, skb->data + ETH_ALEN);
meshhdrlen = ieee80211_new_mesh_header(&mesh_hdr,
sdata, NULL, NULL);
} else {
- /* packet from other interface */
int is_mesh_mcast = 1;
const u8 *mesh_da;
^ permalink raw reply related
* [PATCH v2] ath9k: Restart xmit logic in xmit watchdog.
From: greearb @ 2011-01-10 6:18 UTC (permalink / raw)
To: linux-wireless; +Cc: ath9k-devel, Ben Greear
From: Ben Greear <greearb@candelatech.com>
The system can get into a state where the xmit queue
is stopped, but there are no packets pending, so
the queue will not be restarted.
Add logic to the xmit watchdog to attempt to restart
the xmit logic if this situation is detected.
Example 'dmesg' output:
ath: txq: f4e723e0 axq_qnum: 2, mac80211_qnum: 2 axq_link: f4e996c8 pending frames: 1 axq_acq empty: 1 stopped: 0 axq_depth: 0 Attempting to restart tx logic.
Signed-off-by: Ben Greear <greearb@candelatech.com>
---
v1 -> v2: Add mac80211_qnum to ath_txq structure for
easy mapping from txq back to mac80211-qnum. Clean up
wake-queue logic to make use of this. Add some comments
to try to make the queue logic more easily understood.
Fix typo in printk message.
:100644 100644 93209d6... 35f17fc... M drivers/net/wireless/ath/ath9k/ath9k.h
:100644 100644 9e009cc... b0cb792... M drivers/net/wireless/ath/ath9k/debug.c
:100644 100644 59c01ca... 5279653... M drivers/net/wireless/ath/ath9k/init.c
:100644 100644 d9a4144... 14eeac4... M drivers/net/wireless/ath/ath9k/xmit.c
drivers/net/wireless/ath/ath9k/ath9k.h | 9 +++-
drivers/net/wireless/ath/ath9k/debug.c | 4 +-
drivers/net/wireless/ath/ath9k/init.c | 5 +-
drivers/net/wireless/ath/ath9k/xmit.c | 79 ++++++++++++++++++++++----------
4 files changed, 68 insertions(+), 29 deletions(-)
diff --git a/drivers/net/wireless/ath/ath9k/ath9k.h b/drivers/net/wireless/ath/ath9k/ath9k.h
index 93209d6..35f17fc 100644
--- a/drivers/net/wireless/ath/ath9k/ath9k.h
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
@@ -184,7 +184,8 @@ enum ATH_AGGR_STATUS {
#define ATH_TXFIFO_DEPTH 8
struct ath_txq {
- u32 axq_qnum;
+ int mac80211_qnum; /* mac80211 queue number, -1 means not mac80211 Q */
+ u32 axq_qnum; /* ath9k hardware queue number */
u32 *axq_link;
struct list_head axq_q;
spinlock_t axq_lock;
@@ -281,6 +282,11 @@ struct ath_tx_control {
#define ATH_TX_XRETRY 0x02
#define ATH_TX_BAR 0x04
+/**
+ * @txq_map: Index is mac80211 queue number. This is
+ * not necessarily the same as the hardware queue number
+ * (axq_qnum).
+ */
struct ath_tx {
u16 seq_no;
u32 txqsetup;
@@ -630,6 +636,7 @@ struct ath_softc {
struct ath9k_debug debug;
spinlock_t nodes_lock;
struct list_head nodes; /* basically, stations */
+ unsigned int tx_complete_poll_work_seen;
#endif
struct ath_beacon_config cur_beacon_conf;
struct delayed_work tx_complete_work;
diff --git a/drivers/net/wireless/ath/ath9k/debug.c b/drivers/net/wireless/ath/ath9k/debug.c
index 9e009cc..b0cb792 100644
--- a/drivers/net/wireless/ath/ath9k/debug.c
+++ b/drivers/net/wireless/ath/ath9k/debug.c
@@ -629,9 +629,11 @@ static ssize_t read_file_xmit(struct file *file, char __user *user_buf,
if (buf == NULL)
return -ENOMEM;
- len += sprintf(buf, "Num-Tx-Queues: %i tx-queues-setup: 0x%x\n"
+ len += sprintf(buf, "Num-Tx-Queues: %i tx-queues-setup: 0x%x"
+ " poll-work-seen: %u\n"
"%30s %10s%10s%10s\n\n",
ATH9K_NUM_TX_QUEUES, sc->tx.txqsetup,
+ sc->tx_complete_poll_work_seen,
"BE", "BK", "VI", "VO");
PR("MPDUs Queued: ", queued);
diff --git a/drivers/net/wireless/ath/ath9k/init.c b/drivers/net/wireless/ath/ath9k/init.c
index 59c01ca..5279653 100644
--- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c
@@ -442,9 +442,10 @@ static int ath9k_init_queues(struct ath_softc *sc)
sc->config.cabqReadytime = ATH_CABQ_READY_TIME;
ath_cabq_update(sc);
- for (i = 0; i < WME_NUM_AC; i++)
+ for (i = 0; i < WME_NUM_AC; i++) {
sc->tx.txq_map[i] = ath_txq_setup(sc, ATH9K_TX_QUEUE_DATA, i);
-
+ sc->tx.txq_map[i]->mac80211_qnum = i;
+ }
return 0;
}
diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c
index d9a4144..14eeac4 100644
--- a/drivers/net/wireless/ath/ath9k/xmit.c
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
@@ -953,7 +953,7 @@ struct ath_txq *ath_txq_setup(struct ath_softc *sc, int qtype, int subtype)
[WME_AC_VI] = ATH_TXQ_AC_VI,
[WME_AC_VO] = ATH_TXQ_AC_VO,
};
- int qnum, i;
+ int axq_qnum, i;
memset(&qi, 0, sizeof(qi));
qi.tqi_subtype = subtype_txq_to_hwq[subtype];
@@ -987,24 +987,25 @@ struct ath_txq *ath_txq_setup(struct ath_softc *sc, int qtype, int subtype)
qi.tqi_qflags = TXQ_FLAG_TXEOLINT_ENABLE |
TXQ_FLAG_TXDESCINT_ENABLE;
}
- qnum = ath9k_hw_setuptxqueue(ah, qtype, &qi);
- if (qnum == -1) {
+ axq_qnum = ath9k_hw_setuptxqueue(ah, qtype, &qi);
+ if (axq_qnum == -1) {
/*
* NB: don't print a message, this happens
* normally on parts with too few tx queues
*/
return NULL;
}
- if (qnum >= ARRAY_SIZE(sc->tx.txq)) {
+ if (axq_qnum >= ARRAY_SIZE(sc->tx.txq)) {
ath_err(common, "qnum %u out of range, max %zu!\n",
- qnum, ARRAY_SIZE(sc->tx.txq));
- ath9k_hw_releasetxqueue(ah, qnum);
+ axq_qnum, ARRAY_SIZE(sc->tx.txq));
+ ath9k_hw_releasetxqueue(ah, axq_qnum);
return NULL;
}
- if (!ATH_TXQ_SETUP(sc, qnum)) {
- struct ath_txq *txq = &sc->tx.txq[qnum];
+ if (!ATH_TXQ_SETUP(sc, axq_qnum)) {
+ struct ath_txq *txq = &sc->tx.txq[axq_qnum];
- txq->axq_qnum = qnum;
+ txq->axq_qnum = axq_qnum;
+ txq->mac80211_qnum = -1;
txq->axq_link = NULL;
INIT_LIST_HEAD(&txq->axq_q);
INIT_LIST_HEAD(&txq->axq_acq);
@@ -1012,14 +1013,14 @@ struct ath_txq *ath_txq_setup(struct ath_softc *sc, int qtype, int subtype)
txq->axq_depth = 0;
txq->axq_ampdu_depth = 0;
txq->axq_tx_inprogress = false;
- sc->tx.txqsetup |= 1<<qnum;
+ sc->tx.txqsetup |= 1<<axq_qnum;
txq->txq_headidx = txq->txq_tailidx = 0;
for (i = 0; i < ATH_TXFIFO_DEPTH; i++)
INIT_LIST_HEAD(&txq->txq_fifo[i]);
INIT_LIST_HEAD(&txq->txq_fifo_pending);
}
- return &sc->tx.txq[qnum];
+ return &sc->tx.txq[axq_qnum];
}
int ath_txq_update(struct ath_softc *sc, int qnum,
@@ -1988,17 +1989,16 @@ static void ath_tx_rc_status(struct ath_buf *bf, struct ath_tx_status *ts,
tx_info->status.rates[tx_rateindex].count = ts->ts_longretry + 1;
}
-static void ath_wake_mac80211_queue(struct ath_softc *sc, int qnum)
+/* Has no locking. Must hold spin_lock_bh(&txq->axq_lock)
+ * before calling this.
+ */
+static void __ath_wake_mac80211_queue(struct ath_softc *sc, struct ath_txq *txq)
{
- struct ath_txq *txq;
-
- txq = sc->tx.txq_map[qnum];
- spin_lock_bh(&txq->axq_lock);
- if (txq->stopped && txq->pending_frames < ATH_MAX_QDEPTH) {
- if (ath_mac80211_start_queue(sc, qnum))
+ if (txq->mac80211_qnum >= 0 &&
+ txq->stopped && txq->pending_frames < ATH_MAX_QDEPTH) {
+ if (ath_mac80211_start_queue(sc, txq->mac80211_qnum))
txq->stopped = 0;
}
- spin_unlock_bh(&txq->axq_lock);
}
static void ath_tx_processq(struct ath_softc *sc, struct ath_txq *txq)
@@ -2101,10 +2101,9 @@ static void ath_tx_processq(struct ath_softc *sc, struct ath_txq *txq)
else
ath_tx_complete_buf(sc, bf, txq, &bf_head, &ts, txok, 0);
- if (txq == sc->tx.txq_map[qnum])
- ath_wake_mac80211_queue(sc, qnum);
-
spin_lock_bh(&txq->axq_lock);
+ __ath_wake_mac80211_queue(sc, txq);
+
if (sc->sc_flags & SC_OP_TXAGGR)
ath_txq_schedule(sc, txq);
spin_unlock_bh(&txq->axq_lock);
@@ -2119,6 +2118,9 @@ static void ath_tx_complete_poll_work(struct work_struct *work)
int i;
bool needreset = false;
unsigned long timeout = msecs_to_jiffies(ATH_TX_COMPLETE_POLL_INT);
+#ifdef CONFIG_ATH9K_DEBUGFS
+ sc->tx_complete_poll_work_seen++;
+#endif
for (i = 0; i < ATH9K_NUM_TX_QUEUES; i++)
if (ATH_TXQ_SETUP(sc, i)) {
@@ -2137,6 +2139,34 @@ static void ath_tx_complete_poll_work(struct work_struct *work)
txq->axq_tx_inprogress = true;
txq->start_tx_timer = jiffies;
}
+ } else {
+ /* If the queue has pending buffers, then it
+ * should be doing tx work (and have axq_depth).
+ * Shouldn't get to this state I think..but
+ * we do.
+ */
+ if (!(sc->sc_flags & (SC_OP_OFFCHANNEL)) &&
+ (txq->pending_frames > 0 ||
+ !list_empty(&txq->axq_acq) ||
+ txq->stopped)) {
+ ath_err(ath9k_hw_common(sc->sc_ah),
+ "txq: %p axq_qnum: %u,"
+ " mac80211_qnum: %i"
+ " axq_link: %p"
+ " pending frames: %i"
+ " axq_acq empty: %i"
+ " stopped: %i"
+ " axq_depth: 0 Attempting to"
+ " restart tx logic.\n",
+ txq, txq->axq_qnum,
+ txq->mac80211_qnum,
+ txq->axq_link,
+ txq->pending_frames,
+ list_empty(&txq->axq_acq),
+ txq->stopped);
+ __ath_wake_mac80211_queue(sc, txq);
+ ath_txq_schedule(sc, txq);
+ }
}
spin_unlock_bh(&txq->axq_lock);
}
@@ -2232,10 +2262,9 @@ void ath_tx_edma_tasklet(struct ath_softc *sc)
ath_tx_complete_buf(sc, bf, txq, &bf_head,
&txs, txok, 0);
- if (txq == sc->tx.txq_map[qnum])
- ath_wake_mac80211_queue(sc, qnum);
-
spin_lock_bh(&txq->axq_lock);
+ __ath_wake_mac80211_queue(sc, txq);
+
if (!list_empty(&txq->txq_fifo_pending)) {
INIT_LIST_HEAD(&bf_head);
bf = list_first_entry(&txq->txq_fifo_pending,
--
1.7.2.3
^ permalink raw reply related
* Re: [PATCH 2/2] ath9k: Fix incorrect tx-hang detection logic.
From: Ben Greear @ 2011-01-10 5:48 UTC (permalink / raw)
To: Vasanthakumar Thiagarajan
Cc: linux-wireless@vger.kernel.org, ath9k-devel@venema.h4ckr.net
In-Reply-To: <20110110053835.GB5656@vasanth-laptop>
On 01/09/2011 09:38 PM, Vasanthakumar Thiagarajan wrote:
> On Fri, Jan 07, 2011 at 11:30:59PM +0530, greearb@candelatech.com wrote:
>> From: Ben Greear<greearb@candelatech.com>
>>
>> It is not guaranteed that the ath_tx_complete_poll_work runs
>> after some fixed duration because the channel-reset logic
>> removes the work and then re-adds it to run immediately.
>> Two channel-changes 1ms apart, with a transmit was being
>> attempted, could thus incorrectly trigger a reset by
>> the ath_tx_complete_poll_work method.
>
> I don't think so. axq_tx_inprogress is reset in ath_draintxq().
Ahhh, I see now.
I'll remove this patch from my queue and make sure it still runs
as well.
Thanks,
Ben
>
> Vasanth
--
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc http://www.candelatech.com
^ permalink raw reply
* Re: [PATCH 2/2] ath9k: Fix incorrect tx-hang detection logic.
From: Vasanthakumar Thiagarajan @ 2011-01-10 5:38 UTC (permalink / raw)
To: greearb@candelatech.com
Cc: linux-wireless@vger.kernel.org, ath9k-devel@venema.h4ckr.net
In-Reply-To: <1294423259-8163-2-git-send-email-greearb@candelatech.com>
On Fri, Jan 07, 2011 at 11:30:59PM +0530, greearb@candelatech.com wrote:
> From: Ben Greear <greearb@candelatech.com>
>
> It is not guaranteed that the ath_tx_complete_poll_work runs
> after some fixed duration because the channel-reset logic
> removes the work and then re-adds it to run immediately.
> Two channel-changes 1ms apart, with a transmit was being
> attempted, could thus incorrectly trigger a reset by
> the ath_tx_complete_poll_work method.
I don't think so. axq_tx_inprogress is reset in ath_draintxq().
Vasanth
^ permalink raw reply
* Re: [PATCH] ath9k: Restart xmit logic in xmit watchdog.
From: Ben Greear @ 2011-01-10 5:08 UTC (permalink / raw)
To: Felix Fietkau; +Cc: linux-wireless, ath9k-devel
In-Reply-To: <4D2A92E3.6010403@openwrt.org>
On 01/09/2011 09:02 PM, Felix Fietkau wrote:
> On 2011-01-09 9:39 PM, Ben Greear wrote:
>> On 01/09/2011 10:19 AM, Felix Fietkau wrote:
>>> On 2011-01-09 12:46 AM, greearb@candelatech.com wrote:
>>>> diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c
>>>> index d9a4144..1b3a62c 100644
>>>> --- a/drivers/net/wireless/ath/ath9k/xmit.c
>>>> +++ b/drivers/net/wireless/ath/ath9k/xmit.c
>>>> @@ -1988,19 +1988,30 @@ static void ath_tx_rc_status(struct ath_buf *bf, struct ath_tx_status *ts,
>>>> tx_info->status.rates[tx_rateindex].count = ts->ts_longretry + 1;
>>>> }
>>>>
>>>> -static void ath_wake_mac80211_queue(struct ath_softc *sc, int qnum)
>>>> +/* Has no locking. */
>>>> +static void __ath_wake_mac80211_queue(struct ath_softc *sc, struct ath_txq *txq)
>>>> {
>>>> - struct ath_txq *txq;
>>>> -
>>>> - txq = sc->tx.txq_map[qnum];
>>>> - spin_lock_bh(&txq->axq_lock);
>>>> if (txq->stopped&& txq->pending_frames< ATH_MAX_QDEPTH) {
>>>> - if (ath_mac80211_start_queue(sc, qnum))
>>>> + if (ath_mac80211_start_queue(sc, txq->axq_qnum))
>>>> txq->stopped = 0;
>>>> }
>>>> +}
>>> This part is quite broken, I think you got confused with various types of queue numbers. txq->axq_qnum refers to the atheros hw queue index, whereas the qnum
>>> argument to this function refers to the mac80211 queue index (which is also the correct index for sc->tx.txq_map - not to be confused with the sc->tx.txq
>>> array).
>>
>> Yeah, I am confused on all of this. Looks like I should add a member to the txq struct to
>> record it's mac80211 index and use that instead?
> How about just passing the proper qnum? You can get it from the skb queue mapping anyway.
That seems too indirect to me, though that's probably
just paranoia at this point.
>> In the upstream code, is this correct? It seems to me that it should always
>> be waking 'txq' since it just completed a packet. Why the check
>> against txq_map?
>>
>> if (txq == sc->tx.txq_map[qnum])
>> ath_wake_mac80211_queue(sc, qnum);
> Things like CAB (or maybe UAPSD at some point), where a frame might go out through a queue other than the 4 WMM data queues.
Ok, but that code is very subtle and difficult to understand in
my opinion.
I'll re-post my patch with the qnums a bit more explicit..but if you
still think it should be more like it is upstream, I'll re-do the patch.
Thanks,
Ben
>
> - Felix
--
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc http://www.candelatech.com
^ permalink raw reply
* Locking problem reported for mainline
From: Larry Finger @ 2011-01-10 5:03 UTC (permalink / raw)
To: wireless
I have updated my "Linus" tree to the latest state as of Jan. 9, 2011. Uname -r
reports
2.6.37-Linus-03737-g0c21e3a-dirty
The logged messages are listed below.
Thanks,
Larry
=======================================================================
[ 25.660371] =================================
[ 25.660376] [ INFO: inconsistent lock state ]
[ 25.660379] 2.6.37-Linus-03737-g0c21e3a-dirty #251
[ 25.660382] ---------------------------------
[ 25.660384] inconsistent {HARDIRQ-ON-W} -> {IN-HARDIRQ-W} usage.
[ 25.660388] kworker/0:0/0 [HC1[1]:SC0[0]:HE0:SE1] takes:
[ 25.660390] (&(&list->lock)->rlock#5){?.-...}, at: [<ffffffff812a2746>]
skb_queue_tail+0x26/0x60
[ 25.660401] {HARDIRQ-ON-W} state was registered at:
[ 25.660403] [<ffffffff8107f305>] __lock_acquire+0xb25/0x1cc0
[ 25.660409] [<ffffffff81080a73>] lock_acquire+0x93/0x130
[ 25.660413] [<ffffffff813446cc>] _raw_spin_lock+0x2c/0x40
[ 25.660418] [<ffffffffa02b3777>] ieee80211_rx_handlers+0x27/0x1c80 [mac80211]
[ 25.660444] [<ffffffffa02b5608>]
ieee80211_prepare_and_rx_handle+0x238/0x900 [mac80211]
[ 25.660455] [<ffffffffa02b5fea>] ieee80211_rx+0x31a/0x940 [mac80211]
[ 25.660465] [<ffffffffa029cd51>] ieee80211_tasklet_handler+0xc1/0xd0 [mac80211]
[ 25.660474] [<ffffffff8104f993>] tasklet_action+0x73/0x120
[ 25.660479] [<ffffffff8105048e>] __do_softirq+0xce/0x200
[ 25.660483] [<ffffffff81003ccc>] call_softirq+0x1c/0x30
[ 25.660488] [<ffffffff81005e25>] do_softirq+0x85/0xc0
[ 25.660492] [<ffffffff810506cd>] irq_exit+0x8d/0xa0
[ 25.660496] [<ffffffff81005971>] do_IRQ+0x61/0xe0
[ 25.660500] [<ffffffff813452d3>] ret_from_intr+0x0/0xf
[ 25.660504] [<ffffffff81179cd7>] sysfs_permission+0x47/0x80
[ 25.660510] [<ffffffff81126bfa>] link_path_walk+0x1ea/0xdb0
[ 25.660515] [<ffffffff81127568>] link_path_walk+0xb58/0xdb0
[ 25.660519] [<ffffffff81127ab6>] do_path_lookup+0x56/0x130
[ 25.660523] [<ffffffff81127f92>] user_path_at+0x52/0xa0
[ 25.660526] [<ffffffff8111e634>] vfs_fstatat+0x34/0x70
[ 25.660532] [<ffffffff8111e6a6>] vfs_stat+0x16/0x20
[ 25.660536] [<ffffffff8111ea4f>] sys_newstat+0x1f/0x40
[ 25.660540] [<ffffffff81002d7b>] system_call_fastpath+0x16/0x1b
[ 25.660546] irq event stamp: 393974
[ 25.660548] hardirqs last enabled at (393971): [<ffffffff8100c03a>]
default_idle+0x5a/0xf0
[ 25.660553] hardirqs last disabled at (393972): [<ffffffff81345227>]
save_args+0x67/0x70
[ 25.660557] softirqs last enabled at (393974): [<ffffffff810501de>]
_local_bh_enable+0xe/0x10
[ 25.660562] softirqs last disabled at (393973): [<ffffffff8105062d>]
irq_enter+0x6d/0x80
[ 25.660566]
[ 25.660567] other info that might help us debug this:
[ 25.660570] 1 lock held by kworker/0:0/0:
[ 25.660572] #0: (&(&rtlpriv->locks.irq_th_lock)->rlock){-.-...}, at:
[<ffffffffa02f0daf>] _rtl_pci_interrupt+0x5f/0x890 [rtlwifi]
[ 25.660585]
[ 25.660586] stack backtrace:
[ 25.660589] Pid: 0, comm: kworker/0:0 Tainted: G W
2.6.37-Linus-03737-g0c21e3a-dirty #251
[ 25.660592] Call Trace:
[ 25.660594] <IRQ> [<ffffffff8107e152>] ? print_usage_bug+0x182/0x1d0
[ 25.660601] [<ffffffff8107e571>] ? mark_lock+0x3d1/0x640
[ 25.660605] [<ffffffff8107f3bd>] ? __lock_acquire+0xbdd/0x1cc0
[ 25.660610] [<ffffffff811d2aae>] ? check_unmap+0x3be/0x7e0
[ 25.660615] [<ffffffff8107bc2d>] ? trace_hardirqs_off+0xd/0x10
[ 25.660619] [<ffffffff81080a73>] ? lock_acquire+0x93/0x130
[ 25.660622] [<ffffffff812a2746>] ? skb_queue_tail+0x26/0x60
[ 25.660627] [<ffffffff810af978>] ? rcu_start_gp+0x258/0x350
[ 25.660630] [<ffffffff813447cc>] ? _raw_spin_lock_irqsave+0x3c/0x60
[ 25.660634] [<ffffffff812a2746>] ? skb_queue_tail+0x26/0x60
[ 25.660637] [<ffffffff812a2746>] ? skb_queue_tail+0x26/0x60
[ 25.660647] [<ffffffffa029e166>] ? ieee80211_tx_status_irqsafe+0x36/0xb0
[mac80211]
[ 25.660653] [<ffffffffa02f0b90>] ? _rtl_pci_tx_isr+0x180/0x340 [rtlwifi]
[ 25.660659] [<ffffffffa02f0e75>] ? _rtl_pci_interrupt+0x125/0x890 [rtlwifi]
[ 25.660665] [<ffffffff810ab299>] ? handle_IRQ_event+0x49/0x170
[ 25.660670] [<ffffffff810ada52>] ? handle_fasteoi_irq+0x92/0x110
[ 25.660674] [<ffffffff81005d44>] ? handle_irq+0x44/0xa0
[ 25.660677] [<ffffffff81005968>] ? do_IRQ+0x58/0xe0
[ 25.660681] [<ffffffff813452d3>] ? ret_from_intr+0x0/0xf
[ 25.660683] <EOI> [<ffffffff8100c03c>] ? default_idle+0x5c/0xf0
[ 25.660690] [<ffffffff8100c03a>] ? default_idle+0x5a/0xf0
[ 25.660694] [<ffffffff8100c124>] ? c1e_idle+0x54/0x100
[ 25.660698] [<ffffffff810011eb>] ? cpu_idle+0x5b/0x120
[ 25.660703] [<ffffffff8133dd72>] ? start_secondary+0x190/0x194
^ permalink raw reply
* Re: [PATCH] ath9k: Restart xmit logic in xmit watchdog.
From: Felix Fietkau @ 2011-01-10 5:02 UTC (permalink / raw)
To: Ben Greear; +Cc: linux-wireless, ath9k-devel
In-Reply-To: <4D2A8D74.80304@candelatech.com>
On 2011-01-09 9:39 PM, Ben Greear wrote:
> On 01/09/2011 10:19 AM, Felix Fietkau wrote:
>> On 2011-01-09 12:46 AM, greearb@candelatech.com wrote:
>>> diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c
>>> index d9a4144..1b3a62c 100644
>>> --- a/drivers/net/wireless/ath/ath9k/xmit.c
>>> +++ b/drivers/net/wireless/ath/ath9k/xmit.c
>>> @@ -1988,19 +1988,30 @@ static void ath_tx_rc_status(struct ath_buf *bf, struct ath_tx_status *ts,
>>> tx_info->status.rates[tx_rateindex].count = ts->ts_longretry + 1;
>>> }
>>>
>>> -static void ath_wake_mac80211_queue(struct ath_softc *sc, int qnum)
>>> +/* Has no locking. */
>>> +static void __ath_wake_mac80211_queue(struct ath_softc *sc, struct ath_txq *txq)
>>> {
>>> - struct ath_txq *txq;
>>> -
>>> - txq = sc->tx.txq_map[qnum];
>>> - spin_lock_bh(&txq->axq_lock);
>>> if (txq->stopped&& txq->pending_frames< ATH_MAX_QDEPTH) {
>>> - if (ath_mac80211_start_queue(sc, qnum))
>>> + if (ath_mac80211_start_queue(sc, txq->axq_qnum))
>>> txq->stopped = 0;
>>> }
>>> +}
>> This part is quite broken, I think you got confused with various types of queue numbers. txq->axq_qnum refers to the atheros hw queue index, whereas the qnum
>> argument to this function refers to the mac80211 queue index (which is also the correct index for sc->tx.txq_map - not to be confused with the sc->tx.txq array).
>
> Yeah, I am confused on all of this. Looks like I should add a member to the txq struct to
> record it's mac80211 index and use that instead?
How about just passing the proper qnum? You can get it from the skb
queue mapping anyway.
> In the upstream code, is this correct? It seems to me that it should always
> be waking 'txq' since it just completed a packet. Why the check
> against txq_map?
>
> if (txq == sc->tx.txq_map[qnum])
> ath_wake_mac80211_queue(sc, qnum);
Things like CAB (or maybe UAPSD at some point), where a frame might go
out through a queue other than the 4 WMM data queues.
- Felix
^ permalink raw reply
* Re: [PATCH] ath9k: Restart xmit logic in xmit watchdog.
From: Ben Greear @ 2011-01-10 4:39 UTC (permalink / raw)
To: Felix Fietkau; +Cc: linux-wireless, ath9k-devel
In-Reply-To: <4D29FC3F.2030103@openwrt.org>
On 01/09/2011 10:19 AM, Felix Fietkau wrote:
> On 2011-01-09 12:46 AM, greearb@candelatech.com wrote:
>> From: Ben Greear<greearb@candelatech.com>
>>
>> The system can get into a state where the xmit queue
>> is stopped, but there are no packets pending, so
>> the queue will not be restarted.
>>
>> Add logic to the xmit watchdog to attempt to restart
>> the xmit logic if this situation is detected.
>>
>> Signed-off-by: Ben Greear<greearb@candelatech.com>
>> ---
>>
>> NOTE: This is basically the same as a patch I posted
>> a day or two ago. It doesn't address the concern of the
>> reviewer who NACK'd it, but my system will not properly
>> transmit packets without this patch applied. I realize
>> this is a bit of a hack, but until we find and fix all
>> of the other bugs, I think this patch or something similar
>> should be applied.
>>
>> Still, this patch should not be applied unless given positive
>> ACK by the ath9k developers.
>>
>> diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c
>> index d9a4144..1b3a62c 100644
>> --- a/drivers/net/wireless/ath/ath9k/xmit.c
>> +++ b/drivers/net/wireless/ath/ath9k/xmit.c
>> @@ -1988,19 +1988,30 @@ static void ath_tx_rc_status(struct ath_buf *bf, struct ath_tx_status *ts,
>> tx_info->status.rates[tx_rateindex].count = ts->ts_longretry + 1;
>> }
>>
>> -static void ath_wake_mac80211_queue(struct ath_softc *sc, int qnum)
>> +/* Has no locking. */
>> +static void __ath_wake_mac80211_queue(struct ath_softc *sc, struct ath_txq *txq)
>> {
>> - struct ath_txq *txq;
>> -
>> - txq = sc->tx.txq_map[qnum];
>> - spin_lock_bh(&txq->axq_lock);
>> if (txq->stopped&& txq->pending_frames< ATH_MAX_QDEPTH) {
>> - if (ath_mac80211_start_queue(sc, qnum))
>> + if (ath_mac80211_start_queue(sc, txq->axq_qnum))
>> txq->stopped = 0;
>> }
>> +}
> This part is quite broken, I think you got confused with various types of queue numbers. txq->axq_qnum refers to the atheros hw queue index, whereas the qnum
> argument to this function refers to the mac80211 queue index (which is also the correct index for sc->tx.txq_map - not to be confused with the sc->tx.txq array).
Yeah, I am confused on all of this. Looks like I should add a member to the txq struct to
record it's mac80211 index and use that instead?
In the upstream code, is this correct? It seems to me that it should always
be waking 'txq' since it just completed a packet. Why the check
against txq_map?
if (txq == sc->tx.txq_map[qnum])
ath_wake_mac80211_queue(sc, qnum);
> Pushing the locking out to the caller side (with a wrapper) does sound like a good idea though.
Thanks,
Ben
--
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc http://www.candelatech.com
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox