Project : madwifi
Revision : 2786
Author : mtaylor (Michael Taylor)
Date : 2007-10-26 00:29:43 +0200 (Fri, 26 Oct 2007)
Log Message :
Add the type of queue (unicast or multicast) and queue index to txq depth
debug output. Re-enable CAB and multicast traffic for non-IBSS. Benoit is
going to check this out again and see if we can fix it for IBSS as well.
Without this fix, multicast traffic quickly consumes all tx dma buffers until
no more buffers are available. If we can't turn this section of code on for
IBSS, then we should at least drain that queue instead.
Affected Files:
* madwifi/branches/madwifi-dfs/ath/if_ath.c updated
Modified: madwifi/branches/madwifi-dfs/ath/if_ath.c
===================================================================
--- madwifi/branches/madwifi-dfs/ath/if_ath.c 2007-10-25 22:27:12 UTC (rev
2785)
+++ madwifi/branches/madwifi-dfs/ath/if_ath.c 2007-10-25 22:29:43 UTC (rev
2786)
@@ -2534,7 +2534,7 @@
*/
ath_hal_intrset(ah, sc->sc_imask & ~HAL_INT_SWBA);
ATH_TXQ_INSERT_TAIL(txq, bf, bf_list);
- DPRINTF(sc, ATH_DEBUG_TX_PROC, "%s: txq depth = %d\n",
__func__, txq->axq_depth);
+ DPRINTF(sc, ATH_DEBUG_TX_PROC, "%s: MC txq [%d] depth = %d\n",
__func__, txq->axq_qnum, txq->axq_depth);
if (txq->axq_link != NULL) {
#ifdef AH_NEED_DESC_SWAP
*txq->axq_link = cpu_to_le32(bf->bf_daddr);
@@ -2547,10 +2547,12 @@
ito64(bf->bf_daddr), bf->bf_desc);
}
txq->axq_link = &lastds->ds_link;
+ /* We do not start tx on this queue as it will be done as
+ "CAB" data at DTIM intervals. */
ath_hal_intrset(ah, sc->sc_imask);
} else {
ATH_TXQ_INSERT_TAIL(txq, bf, bf_list);
- DPRINTF(sc, ATH_DEBUG_TX_PROC, "%s: txq depth = %d\n",
__func__, txq->axq_depth);
+ DPRINTF(sc, ATH_DEBUG_TX_PROC, "%s: UC txq [%d] depth = %d\n",
__func__, txq->axq_qnum, txq->axq_depth);
if (txq->axq_link == NULL) {
ath_hal_puttxbuf(ah, txq->axq_qnum, bf->bf_daddr);
DPRINTF(sc, ATH_DEBUG_XMIT, "%s: TXDP[%u] = %llx
(%p)\n",
@@ -4422,10 +4424,15 @@
* Enable the CAB queue before the beacon queue to
* ensure cab frames are triggered by this beacon.
*/
- /*
- * This code is currently disabled since it prevents beacons to be sent
- * in adhoc mode */
- if (0 && (avp->av_boff.bo_tim[4] & 1)) { /* NB: only at DTIM */
+ /*
+ Currently CABQ is disabled for IBSS because it was reported that this
+ prevented beaconing in IBSS mode, but we *need* to flush stuff in this
+ queue or else it is a source of buffer leaks, as it is *never* reclaimed
+ if it isn't processed....
+ */
+ /* NB: only at DTIM */
+ if (sc->sc_ic.ic_opmode != IEEE80211_M_IBSS && (avp->av_boff.bo_tim[4]
& 1)) {
+
struct ath_txq *cabq = sc->sc_cabq;
struct ath_buf *bfmcast;
/*
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
|