Date: Tue, 13 Oct 2009 10:42:01 -0700 From: Weongyo Jeong <weongyo.jeong@gmail.com> To: Poul-Henning Kamp <phk@phk.freebsd.dk> Cc: current@freebsd.org Subject: Re: if_rum dies on transmit... Message-ID: <20091013174201.GC67082@weongyo> In-Reply-To: <86051.1254232666@critter.freebsd.dk> References: <86051.1254232666@critter.freebsd.dk>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
On Tue, Sep 29, 2009 at 01:57:46PM +0000, Poul-Henning Kamp wrote:
>
> Has anybody else seen if_rum die when you try to transmit a file over
> a TCP connection ?
>
> If I try to print across the network, upload a file with ftp or anything
> else of that general tenor, if_rum seems to hang the output queue and
> stops transmitting packets.
>
> Restarting wpa_supplicant mostly resolves the issue, but it does not
> on its own discover the problem.
>
> According to tcpdump(8), packets are still received.
>
> Any ideas ?
Could you please test with attached patch?
regards,
Weongyo Jeong
[-- Attachment #2 --]
Index: if_rum.c
===================================================================
--- if_rum.c (revision 198036)
+++ if_rum.c (working copy)
@@ -826,6 +826,9 @@
usbd_transfer_submit(xfer);
}
+ RUM_UNLOCK(sc);
+ rum_start(ifp);
+ RUM_LOCK(sc);
break;
default: /* Error */
@@ -930,8 +933,8 @@
* the private mutex of a device! That is why we do the
* "ieee80211_input" here, and not some lines up!
*/
+ RUM_UNLOCK(sc);
if (m) {
- RUM_UNLOCK(sc);
ni = ieee80211_find_rxnode(ic,
mtod(m, struct ieee80211_frame_min *));
if (ni != NULL) {
@@ -941,8 +944,11 @@
} else
(void) ieee80211_input_all(ic, m, rssi,
RT2573_NOISE_FLOOR);
- RUM_LOCK(sc);
}
+ if ((ifp->if_drv_flags & IFF_DRV_OACTIVE) == 0 &&
+ !IFQ_IS_EMPTY(&ifp->if_snd))
+ rum_start(ifp);
+ RUM_LOCK(sc);
return;
default: /* Error */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20091013174201.GC67082>
