David Brownell wrote:

>>If INTs could be queued, there would not really even be a need to
>>'resubmit' the URBs.  The completion handler can simply resubmit a
>>completed URB (if desired) without any loss of data or polling time.
>>
>
>For the record, this is going down the path of the "support
>multi-buffering" proposal I sketched out (API change #2) ...
>you might look at that a bit more, and share comments on
>that part of the original RFC.
>
>One difference between that and what Roman sketched
>was that I did was in the model for schedule management:
>
>- He suggested a new HCD level "set_endpoint_properties"
>  call (perhaps coupled to set_config and set_interface?)
>  to schedule the bandwidth.
>
This is just the old idea of a static, consistent and valid 'endpoint 
property descriptor'.
Basically a URB is a container that contains the data and has a big label.
At the moment we put some informations of an endpoint onto that label
(type of transfer, interrupt interval,..) and some other informations of 
an endpoint
 into core-structures (toggle bit, max-packet size,...).
And labels of two different URBs to an endpoint can contain inconsistent 
data.
So I think a URB should just contain the data/length/status and
an address (endpoint/device or pointer to an endpoint descriptor) but 
not any property of
an endpoint.

>
>- I'd suggested that the bandwidth would stay scheduled until
>  after an interrupt transfer completed, there was no transfer
>  queued.
>
If I understand you right here, I think you lose the offset (or phase) 
information
of the interrupt schedule of the endpoint.
E.g. if we send single shot interrupt URBs every 10ms to a 255ms 
endpoint. Then I
think the transfer should take place every 255 ms.
With your model there would be a transfer every 10ms.

- Roman

>
>Yes, I tend to think that it might be worth breaking existing
>interrupt transfer code in this way to get an improved API.
>But it'd be work...
>
>- Dave
>
>p.s. I have similar comments about ISO transfers... :)
>
>    Apart from some wire-level differences, the main
>    structural difference between INTR and ISO is
>    supposed to be that (a) no lowspeed ISO, (b) for
>    fullspeed, INTR has a smaller maxpacket (64 bytes
>    vs 1023 for ISO), (c) at all speeds, errors on INTR
>    transfers are supposed to get retried, but ISO ones
>    get reported.  Both are supposed to respect the
>    endpoint poll period, and "high bandwidth" mode
>    (up to 24 MByte/sec, highspeed) works much the same.
>
>    In short, we may want to consider corresponding
>    updates to the ISO transfer model, since it's not
>    intended to be as different from the INTR one as
>    it is today in Linux.
>
>
>
>
>





_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to