RFC: leave bulk stream endpoints disabled until streams are allocated

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi All,

As a result of all my streams work, I've started to wonder if it would not
be better to leave bulk endpoints with streams disabled until streams are
allocated. It seems to me that allowing to submit non stream bulk transfers
on stream eps is not useful, and could even be harmful if it causes the
hardware to act up.

I've also come up with a plan for implementing this, but before spending
time on this, I would like to get some feedback on it.

The plan is:

1) Alloc / free streams is part of setting up an interface, normally a
   driver would only call set_interface for this, but with streams a second
   call is necessary to let the hcd know how much streams the driver plans
   to use. Only one set_interface can run at a time due to the
   hcd->bandwidth_mutex lock, the xhci driver uses this to protect
   dev->in_ctx. Make usb_alloc_streams and usb_free_streams also take
   hcd->bandwidth_mutex, so that they cannot run at the same time as a
   set_interface and use dev->in_ctx

2) Change xhci_endpoint_init to take a streams argument. If this is non
   0, no regular ring will be allocated, instead xhci_alloc_streaminfo will
   be called.

3.1) modify xhci_add_endpoint to be a nop for eps with streams, thus
   leaving them disabled

3.2) Make xhci_alloc_streams use dev->in_ctx, call xhci_endpoint_init
   for the eps on which streams are to be enabled, then do a
   xhci_configure_endpoint

3.3) Make xhci_free_streams use dev->in_ctx, make it drop all endpoints
   rather then reconfigure them, thus moving the endpoints to disabled.

4) Drop the no longer needed free_streams_command from stream_info

So good idea or bad idea ?

Regards,

Hans
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux