| Age | Commit message (Collapse) | Author | Files | Lines |
|
found by and fix confirmed by jsg@.
|
|
Sean Levy, aka attila, <attila + stalphonsos ! com>, thanks!
ok deraadt@
|
|
fails it's impossible to debug and you cannot use your device.
So instead of calling usbd_set_config_index(), match the right interface.
This is trivial with this device because it has only one configuration
and interface.
|
|
because it submits synchronous transfers, so schedule a task when
necessary.
|
|
Bug reported and fix tested by Thomas Pfaff, thanks!
|
|
there's no need to do it in m_devget(9).
Stop passing an ``ifp'' will help for upcoming interface pointer -> index
conversion.
While here remove unused ``ifp'' argument from m_clget(9) and kill two
birds^W layer violations in one commit.
ok henning@
|
|
|
|
scheduling.
More work is required to properly budget and schedule micro-frames, most
of it at the HUB level. But this let people use USB1.1 uaudio(4) devices
on ehci(4)-only systems.
Thanks to all the testers!
ok ratchov@, sthen@, naddy@
|
|
ok dlg@
|
|
"sure" deraadt@
|
|
|
|
Tested by and ok uaa@
|
|
(such as if_udav.c).
ok by mpi@
|
|
ehci(4) is using a TAILQ_* to keep track of the pending transfers. In
this context "pending" means submitted to the hardware. Now that we
are no longer fiddling with the internal of the TAILQ_* there's no good
reason to keep these macro, but more importantly this will let us reuse
the 'inext' field to get rid of the other hand-rolled lists of xfers.
No functional change.
|
|
what's done with other transfer types. No functional change.
|
|
|
|
xhci(4) does.
|
|
Over the years I understood that debugging USB HCD problems without
hardware access do not work and even in this case it's easier to write
a specific debug/prinf diff.
|
|
(newer) machine can't set the device in a configurated state. But this
is a USB-related problem.
|
|
from Patrick Wildt
|
|
Avoids a NULL dereference encountered with a device I have.
ok mpi@
|
|
|
|
|
|
|
|
type, from Patrick Wildt.
|
|
half configured control pipe, from Patrick Wildt.
|
|
from Patrick Wildt
|
|
As soon as a transfer is being cancelled, remove it from the list of pending
xfers. This way the soft interrupt routine won't try to process it before
ehci_abort() gives it back to the stack.
Problem analysed by and previous diff ok stsp@
|
|
have any direct symbols used. Tested for indirect use by compiling
amd64/i386/sparc64 kernels.
ok tedu@ deraadt@
|
|
Tested and ok armani@
|
|
reported by Remi Locherer on bugs@.
ok deraadt@
|
|
|
|
Count these dropped frames as input errors.
|
|
Sending the firmware a NODE_ADD command for our BSS doesn't seem to have the
desired effect in station mode. It made a new association after ifconfig
down/up impossible until the device was re-plugged. Leave the code in place
but limit it to hostap mode, just in case it is needed there (hard to tell
since hostap mode seems to be broken -- no beacons are sent by the device).
Also, when leaving run state, reset the RX filer to allow all beacons again.
ok mpi@
|
|
The previous code was racy and could dead-lock the USB task thread when a
firmware command timed out (e.g. because the user pulled out the device).
Handle this condition by marking the device as dying as soon as the interrupt
handler gets an IOERROR and making sleeping firmware command threads check
for a dying device when waking up.
Ensure that no thread will try to send a command before the previous one
has completed. There is only a single xfer data structure for firmware
command transfers and reusing an in-flight xfer will give the USB stack
curly toenails ("xfer not free").
Allow up to ATHN_USB_HOST_CMD_RING_COUNT firmware commands to be enqueued
on the command ring, rather than just one. Use standard usdb_wait_task()
when waiting for command ring completion instead of hand-rolled tsleep()s.
discussed with and ok mpi@
|
|
The driver artificially limited the number of slots for nodes in its net80211
node cache to 8, the rationale being the device firmware can only handle 8
associated nodes at a time. But that's not a good reason to only cache 8 of
potentially many APs in the area.
Instead of crippling upper layer data structures, impose the limit locally
by raising an error if more than 8 nodes are trying to associate (which can
only happen in hostap mode, and hostap mode seems to be broken anyway).
This matches what Linux ath9k does.
Also, use a USB-specific scan timeout callback to we can do USB refcounting
while scanning.
ok mpi@
|
|
required since this code runs during device detach but looks prettier.
Also remove an unneeded call to usbd_abort_pipe() which is implied by
usbd_close_pipe().
ok mpi@
|
|
confusion in the USB stack. Also add some usbd_is_dying checks.
suggested by + ok mpi@
|
|
As soon as a transfer is being cancelled, remove it from the list of pending
xfers. This way the soft interrupt routine won't try to process it before
ehci_abort() gives it back to the stack.
Problem analysed by and ok stsp@
|
|
|
|
|
|
|
|
|
|
|
|
ports as enabled/connected.
|
|
ok dlg@
|
|
|
|
|
|
ok dlg@
|
|
|