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? 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. >+ * This function is called for each endpoint when it is being enabled >+ * but is triggered only when called for EP0-out, which always happens >+ * first, and which should only happen in one of the above conditions. >+ */ Regards Ravi -- 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