On Tue, Dec 2, 2008 at 5:58 PM, Sujith <m.sujith@xxxxxxxxx> wrote: > Luis R. Rodriguez wrote: >> On Tue, Dec 2, 2008 at 5:06 AM, Sujith <Sujith.Manoharan@xxxxxxxxxxx> wrote: >> >> > --- a/drivers/net/wireless/ath9k/xmit.c >> > +++ b/drivers/net/wireless/ath9k/xmit.c >> > @@ -1787,7 +1793,12 @@ int ath_tx_start(struct ath_softc *sc, struct sk_buff *skb, >> > return -1; >> > } >> > >> > - ath_tx_setup_buffer(sc, bf, skb, txctl); >> > + ret = ath_tx_setup_buffer(sc, bf, skb, txctl); >> > + if (ret) { >> > + DPRINTF(sc, ATH_DBG_FATAL, "TX mem alloc failure\n"); >> > + return ret; >> >> Hm, this doesn't add the bf back to the txq, so we'd run out of bf's >> completely when on low memory, eventually leaving the list always >> empty. I'll resend with that added and a few more changes. >> > > Right. > > I think the queue has to be stopped too (ieee80211_stop_queue()), > and resumed when memory is available again. > > What do you think ? Interesting, I hadn't thought about stopping the queues, when would they be resumed then though, or rather who? I'll a rework of this ontop of more DMA fun, let me know what you think. I just tested this. Luis -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html