Source-Changes-D archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: CVS commit: src/sys/dev/usb
On Fri, Jun 28, 2019 at 1:57 AM matthew green <mrg%netbsd.org@localhost> wrote:
>
> Module Name: src
> Committed By: mrg
> Date: Fri Jun 28 01:57:43 UTC 2019
>
> Modified Files:
> src/sys/dev/usb: if_axen.c if_cdce.c if_ure.c
>
> Log Message:
> more smp cleanup for ure(4)/axen(4)/cdce(4):
Thank you for working!
> - convert IFF_ALLMULTI to ETHER_F_ALLMULTI, using ETHER_LOCK()
> - remove IFF_OACTIVE use, and simply check the ring count in start
cdce_start_locked() has the last one.
> - assert/take more locks
> - XXX: IFF_RUNNING is not properly protected (all driver problem)
> - fix axen_timer setting so it actually runs
> - document a locking issue in stop callback:
> stop is called with the softc lock held, but the lock order
> in all other places is ifnet -> softc -> rx -> tx, so taking
> ifnet lock when softc lock is held would be problematic
ure_init_locked() calls ure_stop() with sc->ure_lock held,
so it would cause 'locking against myself' perhaps when
ifconfig such as IFF_DEBUG while the interface is up.
> - in rxeof check for stopping/dying more often. i managed to
> trigger a pagefault in cdce_rxeof() when yanking an active
> device as it attempted to usbd_setup_xfer() on closed pipes.
> - add missing USBD_MPSAFE and cdce_stopping resetting for cdce(4)
>
> between this and other recent clean ups increase performance of
> these drivers mostly. some numbers (in mbit/sec):
>
> old: new:
> driver in out in+out in out in+out
> ---- -- --- ------ -- --- ------
> cdce 39 32 44 38 33 54
> axen 44 34 45 48 37 42
> ure 36 34 35 36 38 38
>
> i'm not sure why axen drops a little with in+out. cdce is
> helped quite a lot, and ure a little. it is disappointing that
> ure does not outperform cdce -- it's the same actual hardware,
> and the device-specific (ure) should outperform the generic
> cdce driver...
>
>
> To generate a diff of this commit:
> cvs rdiff -u -r1.48 -r1.49 src/sys/dev/usb/if_axen.c
> cvs rdiff -u -r1.50 -r1.51 src/sys/dev/usb/if_cdce.c
> cvs rdiff -u -r1.12 -r1.13 src/sys/dev/usb/if_ure.c
>
> Please note that diffs are not public domain; they are subject to the
> copyright notices on the relevant files.
>
Home |
Main Index |
Thread Index |
Old Index