Re: [PATCH v3] usb: dwc3: Fix assignment of EP transfer resources

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

 



On 2/17/2016 5:51 AM, B, Ravi wrote:
> Hi John
> 
> 
>> Fixes: aebda6187181 ("usb: dwc3: Reset the transfer resource index on SET_INTERFACE")
>> Cc: <stable@xxxxxxxxxxxxxxx> # v3.2+
>> Reported-by: Ravi Babu <ravibabu@xxxxxx>
>> Signed-off-by: John Youn <johnyoun@xxxxxxxxxxxx>
>> ---
> 
>> Hi Ravi,
> 
>> Could you verify that it works with your test scenario?
> 
> Yes, it is working fine for me. 
> 
>> Thanks,
>> John
> 
>> +static int dwc3_gadget_set_xfer_resource(struct dwc3 *dwc, struct dwc3_ep *dep);
>> +
>> +/**
>> + * dwc3_gadget_start_config - Configure EP resources
>> + * @dwc: pointer to our controller context structure
>> + * @dep: endpoint that is being enabled
>> + *
>> + * The assignment of transfer resources cannot perfectly follow the
>> + * data book due to the fact that the controller driver does not have
>> + * all knowledge of the configuration in advance. It is given this
>> + * information piecemeal by the composite gadget framework after every
>> + * SET_CONFIGURATION and SET_INTERFACE. Trying to follow the databook
>> + * programming model in this scenario can cause errors. For two
>> + * reasons:
>> + *
>> + * 1) The databook says to do DEPSTARTCFG for every SET_CONFIGURATION
>> + * and SET_INTERFACE (8.1.5). This is incorrect in the scenario of
>> + * multiple interfaces.
>> + *
>> + * 2) The databook does not mention doing more DEPXFERCFG for new
>> + * endpoint on alt setting (8.1.6).
>> + *
>> + * The following simplified method is used instead:
>> + *
>> + * All hardware endpoints can be assigned a transfer resource and this
>> + * setting will stay persistent until either a core reset or
>> + * hibernation. So whenever we do a DEPSTARTCFG(0) we can go ahead and
>> + * do DEPXFERCFG for every hardware endpoint as well. We are
>> + * guaranteed that there are as many transfer resources as endpoints.
>> + *
> 
> The databook says the resource is released after transfer completion event on ep,  in this case whether resource
> is still valid which was pre-allocated to all eps during initial setup? 

Hi Ravi,

The resource is released in the sense that it is not actively being
used. The same resource is still assigned to the hw endpoint and will
be re-used when a start transfer happens.

Theoretically, when a resource is not being used it could be used by
another endpoint or reassigned, but in practice there is no need to do
any of this shuffling as there are always as many resources as
endpoints.

> If the core is designed to reuse of unused ep's resources, whether is there any performance impact by core
> due resource pre-allocated for eps ?
> Please confirm with IP folks as well.

I check with IP team. There is no performance impact. It is the same
as if you never used those endpoints.

Regards,
John
--
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