On 24 December 2012 17:01, Ryan Stone <ryst...@gmail.com> wrote:
> I don't believe that this is fixed in later versions of the driver. The
> problem is that when the interface loses link the transmit queue can fill
> up. Once that happens the driver never gets any more calls from the network
> stack to make it send packets. Pinging the interface fixes it because the
> driver processes rx.and tx from the same context, so when it receives a
> packet it starts transmitting again.
>
> The patch that I sent fixes the problem by forcing the driver to process
> the tx queue when ever links goes from down to up.

This is a cute fix, and I've noticed similar issues in net80211.

In net80211, the stack currently calls if_start() to re-attempt frame
transmission during a VAP state transition to RUN.
This has similar issues (ie, it assumes that if_start() DTRT; it
assumes OACTIVE has been cleared, etc.)

I think we may need another if_* method which specifically attempts to
service the TX queue again; versus just waiting for if_transmit() to
make some progress.


Adrian
_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"

Reply via email to