diff mbox series

[v1] dfu: Reset timeout in case of DFU request

Message ID 20200129152314.86550-1-andriy.shevchenko@linux.intel.com
State Accepted
Commit 53d9bd4a568d6d187c894ce539ad2595023dfc2b
Delegated to: Lukasz Majewski
Headers show
Series [v1] dfu: Reset timeout in case of DFU request | expand

Commit Message

Andy Shevchenko Jan. 29, 2020, 3:23 p.m. UTC
In case dfu command is being executed with timeout option,
the timer may expire in the middle of DFU operation. If there
is DFU request coming, we may simple reset timeout value
to prevent aborting of ongoing DFU operation.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 drivers/usb/gadget/f_dfu.c | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Ferry Toth Jan. 30, 2020, 9:27 a.m. UTC | #1
Op 29-01-2020 om 16:23 schreef Andy Shevchenko:
> In case dfu command is being executed with timeout option,
> the timer may expire in the middle of DFU operation. If there
> is DFU request coming, we may simple reset timeout value
> to prevent aborting of ongoing DFU operation.
> 
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
>   drivers/usb/gadget/f_dfu.c | 5 +++++
>   1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/usb/gadget/f_dfu.c b/drivers/usb/gadget/f_dfu.c
> index 6756155133..a4a57ba5f5 100644
> --- a/drivers/usb/gadget/f_dfu.c
> +++ b/drivers/usb/gadget/f_dfu.c
> @@ -596,6 +596,11 @@ dfu_handle(struct usb_function *f, const struct usb_ctrlrequest *ctrl)
>   	debug("req_type: 0x%x ctrl->bRequest: 0x%x f_dfu->dfu_state: 0x%x\n",
>   	       req_type, ctrl->bRequest, f_dfu->dfu_state);
>   
> +#ifdef CONFIG_DFU_TIMEOUT
> +	/* Forbid aborting by timeout. Next dfu command may update this */
> +	dfu_set_timeout(0);
> +#endif
> +
>   	if (req_type == USB_TYPE_STANDARD) {
>   		if (ctrl->bRequest == USB_REQ_GET_DESCRIPTOR &&
>   		    (w_value >> 8) == DFU_DT_FUNC) {
> 
Tested-by: Ferry Toth <ftoth@exalondelft.nl>
Andy Shevchenko Feb. 10, 2020, 4:42 p.m. UTC | #2
On Thu, Jan 30, 2020 at 10:27:20AM +0100, Ferry Toth wrote:
> Op 29-01-2020 om 16:23 schreef Andy Shevchenko:
> > In case dfu command is being executed with timeout option,
> > the timer may expire in the middle of DFU operation. If there
> > is DFU request coming, we may simple reset timeout value
> > to prevent aborting of ongoing DFU operation.
> > 
> > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> > ---
> >   drivers/usb/gadget/f_dfu.c | 5 +++++
> >   1 file changed, 5 insertions(+)
> > 
> > diff --git a/drivers/usb/gadget/f_dfu.c b/drivers/usb/gadget/f_dfu.c
> > index 6756155133..a4a57ba5f5 100644
> > --- a/drivers/usb/gadget/f_dfu.c
> > +++ b/drivers/usb/gadget/f_dfu.c
> > @@ -596,6 +596,11 @@ dfu_handle(struct usb_function *f, const struct usb_ctrlrequest *ctrl)
> >   	debug("req_type: 0x%x ctrl->bRequest: 0x%x f_dfu->dfu_state: 0x%x\n",
> >   	       req_type, ctrl->bRequest, f_dfu->dfu_state);
> > +#ifdef CONFIG_DFU_TIMEOUT
> > +	/* Forbid aborting by timeout. Next dfu command may update this */
> > +	dfu_set_timeout(0);
> > +#endif
> > +
> >   	if (req_type == USB_TYPE_STANDARD) {
> >   		if (ctrl->bRequest == USB_REQ_GET_DESCRIPTOR &&
> >   		    (w_value >> 8) == DFU_DT_FUNC) {
> > 
> Tested-by: Ferry Toth <ftoth@exalondelft.nl>

Thanks, Ferry!

Lukasz, can this be applied for 2020.04 release?
Andy Shevchenko Feb. 17, 2020, 8:20 a.m. UTC | #3
On Wed, Jan 29, 2020 at 05:23:14PM +0200, Andy Shevchenko wrote:
> In case dfu command is being executed with timeout option,
> the timer may expire in the middle of DFU operation. If there
> is DFU request coming, we may simple reset timeout value
> to prevent aborting of ongoing DFU operation.
> 

Any news here? Can we get this applied for the 2020.04 release?

> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
>  drivers/usb/gadget/f_dfu.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/usb/gadget/f_dfu.c b/drivers/usb/gadget/f_dfu.c
> index 6756155133..a4a57ba5f5 100644
> --- a/drivers/usb/gadget/f_dfu.c
> +++ b/drivers/usb/gadget/f_dfu.c
> @@ -596,6 +596,11 @@ dfu_handle(struct usb_function *f, const struct usb_ctrlrequest *ctrl)
>  	debug("req_type: 0x%x ctrl->bRequest: 0x%x f_dfu->dfu_state: 0x%x\n",
>  	       req_type, ctrl->bRequest, f_dfu->dfu_state);
>  
> +#ifdef CONFIG_DFU_TIMEOUT
> +	/* Forbid aborting by timeout. Next dfu command may update this */
> +	dfu_set_timeout(0);
> +#endif
> +
>  	if (req_type == USB_TYPE_STANDARD) {
>  		if (ctrl->bRequest == USB_REQ_GET_DESCRIPTOR &&
>  		    (w_value >> 8) == DFU_DT_FUNC) {
> -- 
> 2.24.1
>
diff mbox series

Patch

diff --git a/drivers/usb/gadget/f_dfu.c b/drivers/usb/gadget/f_dfu.c
index 6756155133..a4a57ba5f5 100644
--- a/drivers/usb/gadget/f_dfu.c
+++ b/drivers/usb/gadget/f_dfu.c
@@ -596,6 +596,11 @@  dfu_handle(struct usb_function *f, const struct usb_ctrlrequest *ctrl)
 	debug("req_type: 0x%x ctrl->bRequest: 0x%x f_dfu->dfu_state: 0x%x\n",
 	       req_type, ctrl->bRequest, f_dfu->dfu_state);
 
+#ifdef CONFIG_DFU_TIMEOUT
+	/* Forbid aborting by timeout. Next dfu command may update this */
+	dfu_set_timeout(0);
+#endif
+
 	if (req_type == USB_TYPE_STANDARD) {
 		if (ctrl->bRequest == USB_REQ_GET_DESCRIPTOR &&
 		    (w_value >> 8) == DFU_DT_FUNC) {