Re: [PATCH v2] usb: fsl_udc_core: prime status stage once data stage is primed

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

 



Hi,

On Thu, Feb 16, 2012 at 09:36:41AM +0800, Peter Chen wrote:
> - For Control Read transfer, the ACK handshake on an IN transaction
> may be corrupted, so the device may can't recevice the ACK for data
> stage, the complete irq will not occur at this situation.
> Therefore, we need to move prime status stage from complete irq
> routine to the place where the data stage is just primed, or the
> host will never get ACK for status stage.
> The above issue has described at USB2.0 spec 8.5.3.3.
> 
> - After adding prime status just after prime the data, there is a potential
> problem when the status dTD is added before the data prime has finished
> by hardware. The reason is the device's dTD descritor has NO direction bit,
> if data stage (IN) prime hasn't finished, the status stage(OUT)
> dTD will be added at data stage dTD's Next dTD Pointer, so when the data
> transfer has finishes, the status dTD will be primed as IN by hardware,
> then the host will never receive ACK from the device side at status stage.
> 
> - Delete below code at fsl_ep_queue:
>        /* Update ep0 state */
>        if ((ep_index(ep) == 0))
>                udc->ep0_state = DATA_STATE_XMIT;
> the udc->ep0_state will be updated again after udc->driver->setup
> finishes.
> 
> It is tested at i.mx51 bbg board with g_mass_storage, g_ether, g_serial.

please fix the typos, so I can apply.

-- 
balbi

Attachment: signature.asc
Description: Digital 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