Re: [PATCH] usb: dwc3: gadget: Remove incomplete check

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

 



Hi,

Thinh Nguyen <Thinh.Nguyen@xxxxxxxxxxxx> writes:
>> One thing I don't get from your patch is why you're completely removing
>> the function and why isn't req->direction and actual == length not
>> needed anymore. Could you explain?
>
> It's because there's no use for that function outside of checking for 
> number of pending SGs and resume.

wait, huh? What about cases when user unplugs cable midtransfer? We have
versions of dwc3 HW which fail to produce disconnect interrupt, right?

>> @@ -2491,6 +2492,16 @@ static bool dwc3_gadget_ep_request_completed(struct dwc3_request *req)
>>   	if (!req->direction)
>>   		return true;
>>   
>> +	/*
>> +	 * If there are pending scatterlist entries, we should
>> +	 * continue processing them.
>> +	 */
>> +	if (req->num_pending_sgs)
>> +		return false;
>> +
>> +	if (usb_endpoint_xfer_isoc(dep->endpoint.desc))
>> +		do_something();
>
> do_something() will always return true here.

Will do "do_something", then return true or simply return true?

>>   	return req->request.actual == req->request.length;
>
> This should always be true if the request completes. By spec, bulk and 
> interrupt endpoints data delivery are guaranteed, and the retry/error 
> detection is done at the lower level.  If by chance that the host fails 
> to request for data multiple times at the packet level, it will issue a 
> ClearFeature(halt_ep) request to the endpoint. This will trigger dwc3 to 
> stop the endpoint and cancel the transfer, and we still won't resume 
> this transfer.

we can unplug the cable at any time, even mid-transfer.

-- 
balbi

Attachment: signature.asc
Description: PGP signature


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

  Powered by Linux