Date: Wed, 4 Nov 2015 10:11:49 -0800 From: Adrian Chadd <adrian@freebsd.org> To: Andriy Voskoboinyk <avos@freebsd.org> Cc: "freebsd-wireless@freebsd.org" <freebsd-wireless@freebsd.org>, Mark Felder <feld@freebsd.org> Subject: Re: (untested) ath fix upon error Message-ID: <CAJ-Vmon8L2gi=N1SYUN38OmzQRzCaS1MicbOQjXVnuHPsuQ6%2BQ@mail.gmail.com> In-Reply-To: <op.x7i8nmgh4dikkl@localhost> References: <CAJ-Vmom3hOt63Tc1332hPFpqkEcbSvrCA=nRGgwMLLf02Pbr2Q@mail.gmail.com> <op.x7i8nmgh4dikkl@localhost>
index | next in thread | previous in thread | raw e-mail
On 3 November 2015 at 08:12, Andriy Voskoboinyk <avos@freebsd.org> wrote:
> Tue, 03 Nov 2015 17:31:18 +0200 було написано Adrian Chadd
> <adrian@freebsd.org>:
>
>
>> hiya,
>>
>> what do people think about this to fix ath(4) transmit errors:
>>
>> adrian@victoria:~/work/freebsd/head-embedded/src % svn diff sys/dev/ath
>> Index: sys/dev/ath/if_ath.c
>> ===================================================================
>> --- sys/dev/ath/if_ath.c (revision 290048)
>> +++ sys/dev/ath/if_ath.c (working copy)
>> @@ -3320,6 +3320,9 @@
>> *
>> * Note: if this fails, then the mbufs are freed but
>> * not the node reference.
>> + *
>> + * So, we now have to free the node reference ourselves here
>> + * and return OK up to the stack.
>> */
>> next = m->m_nextpkt;
>> if (ath_tx_start(sc, ni, bf, m)) {
>> @@ -3336,7 +3339,14 @@
>> */
>> ath_txfrag_cleanup(sc, &frags, ni);
>> ATH_TXBUF_UNLOCK(sc);
>> - retval = ENOBUFS;
>> +
>> + /*
>> + * XXX: And free the node/return OK; ath_tx_start() may
>> have
>> + * modified the buffer. We currently have no way to
>> + * signify that the mbuf was freed but there was an
>> error.
>> + */
>> + ieee80211_node_free(ni);
>> + retval = 0;
>> goto finish;
>> }
>>
>>
>> .. the idea is that we can't return failure once we've called
>> ath_tx_start(), as the mbuf needs to be consumed. So we return OK and
>> just count an error.
>>
>
> Yes, I think this (temporary?) workaround should fix the issue.
>
Cool, thanks!
-a
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-Vmon8L2gi=N1SYUN38OmzQRzCaS1MicbOQjXVnuHPsuQ6%2BQ>
