Thread: [Madwifi-devel] Checkin 2005 - ath_mgtstart?
Status: Beta
Brought to you by:
otaku
From: Ron D. <si...@sa...> - 2007-01-29 22:47:07
|
From madwifi-cvs, trimmed for brevity: ----------------------------------- Revision : 2005 Author : proski (Pavel Roskin) Log Message : Fix failure to unlock on error, found by sparse Modified: trunk/ath/if_ath.c @@ -6068,11 +6068,13 @@ DPRINTF(sc, ATH_DEBUG_XMIT, "%s: No more TxBufs\n", __func__); + ATH_TXBUF_UNLOCK_IRQ_EARLY(sc); ... DPRINTF(sc, ATH_DEBUG_XMIT, "%s: No more TxBufs left\n", __func__); + ATH_TXBUF_UNLOCK_IRQ_EARLY(sc); --------------------------------------- I wonder if this was the cause of the dreaded 'ath_mgtstart: discard, no xmit buf' problem? It would seem to fit the bill at first blush but I haven't looked deeply enough at it yet. http://madwifi.org/ticket/717 Ron |
From: Pavel R. <pr...@gn...> - 2007-01-29 23:05:41
|
On Mon, 2007-01-29 at 14:46 -0800, Ron Dippold wrote: > From madwifi-cvs, trimmed for brevity: > > ----------------------------------- > Revision : 2005 > Author : proski (Pavel Roskin) > > Log Message : Fix failure to unlock on error, found by sparse > > Modified: trunk/ath/if_ath.c > @@ -6068,11 +6068,13 @@ > DPRINTF(sc, ATH_DEBUG_XMIT, "%s: No more TxBufs\n", __func__); > + ATH_TXBUF_UNLOCK_IRQ_EARLY(sc); > ... > > DPRINTF(sc, ATH_DEBUG_XMIT, "%s: No more TxBufs left\n", __func__); > + ATH_TXBUF_UNLOCK_IRQ_EARLY(sc); > --------------------------------------- > > I wonder if this was the cause of the dreaded 'ath_mgtstart: discard, no > xmit buf' problem? It would seem to fit the bill at first blush but I > haven't looked deeply enough at it yet. I don't think so. The problem in ath_mgtstart can be remedied by bringing the interface down. Stale lock would not be removed. Most likely, it would lock the network subsystem. Also, this code can only be executed as a result of buffer shortage. It cannot be the reason and the consequence of the same thing. By the way, sparse reports another bad locking bug in Tx path. The definition of ATH_HARDSTART_GET_TX_BUF_WITH_LOCK contains goto hardstart_fail", but it's a wrong thing to do when the txq lock is held. It's currently line 2613 in if_ath.c. Again, it affects handling of buffer shortage once it exists already. I don't have a nice fix for that. In my opinion, the buffer shortage is caused by power saving feature of ipw3945 chip under Windows. Most likely, the station sends some packets that cause the Atheros chipset to fail to release free buffers. -- Regards, Pavel Roskin |
From: Georg L. <ge...@bo...> - 2007-01-31 16:42:29
|
* Pavel Roskin <pr...@gn...> [2007-01-30 09:06]: > In my opinion, the buffer shortage is caused by power saving feature of > ipw3945 chip under Windows. Most likely, the station sends some packets > that cause the Atheros chipset to fail to release free buffers. this also happens ocassionally in a pure atheros-based ad-hoc network with power management disabled ("iwpriv ath0 uapsd 0"), where the device ceases to send furher packets and only can be "fixed" by ath_reset(). I don't know how to further debug or fix the problem permanently. regards, Georg -- || http://op-co.de ++ GCS/CM d? s: a-- C+++ UL+++ !P L+++ E--- W++ ++ || gpg: 0x962FD2DE || N++ o? K- w---() O M V? PS+ PE-- Y+ PGP++ t* || || Ge0rG: euIRCnet || 5 X+ R tv b+(+++) DI+(+++) D+ G e* h! r* !y+ || ++ IRCnet OFTC OPN ||________________________________________________|| |