Hi Paul,

> I would prefer to keep that part of the code as-is for now. I haven't
> quite convinced myself that the function can never be called with
> halt_status = DWC2_HC_XFER_URB_DEQUEUE.
Ok. For arguments sake, it should be easy to convince yourself:

dwc2_hc_chhltd_intr is a static function only referenced from
dwc2_hc_n_intr. The latter basically does:

static void dwc2_hc_n_intr(struct dwc2_hsotg *hsotg, int chnum)
{
        (...)
        if (chan->halt_status == DWC2_HC_XFER_URB_DEQUEUE) {
                (...)
                return;
        }

        (...)

        dwc2_hc_chhltd_intr(hsotg, chan, chnum, qtd);
        (...)
}

This of course only holds provided that halt_status doesn't get set to
DWC2_HC_XFER_URB_DEQUEUE in the meanwhile, which only happens in
dwc2_hcd_urb_enqueue. AFAIU it should be safe to assume the driver
doesn't start dequeuing urbs on its own in the interrupt handler.

> > Why change this function? AFAICS it's never called with qtd = NULL with
> > the patch?
> 
> You're probably right, but I feel better adding a little defensive
> programming here, just in case.
Absolutely right, I was just wondering :-)

Gr.

Matthijs
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to