Received: by 2002:a05:6358:4e97:b0:b3:742d:4702 with SMTP id ce23csp3127508rwb; Mon, 15 Aug 2022 18:49:24 -0700 (PDT) X-Google-Smtp-Source: AA6agR6FtTo+AEW6cH3tJ+r0NlTY9zbsDYxO8o1VO3ZqHLNuCVrTLjUtZh1XHQYeoGqymHhzBLo/ X-Received: by 2002:a17:907:272a:b0:731:4699:b375 with SMTP id d10-20020a170907272a00b007314699b375mr12054760ejl.633.1660614564143; Mon, 15 Aug 2022 18:49:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1660614564; cv=none; d=google.com; s=arc-20160816; b=TvDJsXR3eMSrIUSEH8RakplPfKUvpT/mqZiGZ2U/Hdmqly5O2WCi/y1mK9Bme+TQqP Kr9M2oQrbQGeHWqC9qlwj2EHx+wtgnk//PqAx0KyA3+GelzKsuBod2qV/pBtuCs6hHKc e+B8jGvXGl6VTZj7EKBGg88b+e3Mh3Fw850Ts1PtfQAjPaN0w0eSY24TfOZNeEvjtPB1 /Qk4zLihjuoP5v1OU1oRhfs2NUoxaRIq6eaEbAw9J5MI+dvB4hbn3SMxQFoT0kNRvyXh 870SUVr5LoE/FIDEneNDGnMkGtfWbfYRmICkf8UQDpr84/bbRfaV2Y5uwiV9xiQsLIvp SeJg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=gqv7RuY3HKJRgabXSovUoQVzGjAU4nIg6tuJOsRmPyM=; b=PQ6D0tbY+mA362QNAHziMIoDtp1bZUeo6RgdH811gPlJ9A7hVe2qv4dubiRBCpCl+y tQr9I0opmLFd9Jt4WgSCRlJttW/NdH1a4KBRTkgk3Bv8YPmtLVSDN4Zb2SfoprpGn/vY l46n8kI9T91jmdbaKqNSLyY5+RgwOTGVwfzb7Ik0KkKreI33J24qq2OZrfYrbh6IQ9Tj OfybMPnj+pUvzTjqDMkAki5mq3qDmAdkZUx5XiOEmjPosnfpLpdiaWZmv9EbcRzESs7p /mQ5UPg4kup0Hw4tZzDr5RozpiplTL0J9hg/r8NOxxvQTCZHGPYl3nwJgAX65TtOHDaG CkWQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=K7++aF2+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id gb3-20020a170907960300b00730d5c88eaasi10392412ejc.732.2022.08.15.18.48.57; Mon, 15 Aug 2022 18:49:24 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=K7++aF2+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240216AbiHPBjI (ORCPT + 99 others); Mon, 15 Aug 2022 21:39:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38698 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229725AbiHPBik (ORCPT ); Mon, 15 Aug 2022 21:38:40 -0400 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 82D06EEF07; Mon, 15 Aug 2022 14:31:58 -0700 (PDT) Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 27FKno0k010028; Mon, 15 Aug 2022 21:31:54 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=qcppdkim1; bh=gqv7RuY3HKJRgabXSovUoQVzGjAU4nIg6tuJOsRmPyM=; b=K7++aF2+ll+koiMl3U9yYntju2gIa1OI+JD+C/+xcdzg+pr8ZLElnaJq4TN2s9dOHFuz SgG5iZcyE/8gqRrMOZ/7yZ9GWrOgeeQ1yCgCETvKXcZO/9e/elje5TzbvfL9zrl8R4cI H7CR4ESBAyUiTUWZVkoSzpTsZ8OSq+wtYlaJYH2U7XlUKsxYZhhEwSF2+dtguNnvS7L5 +FFe1rwDziOQ4iXn3bTe2MduJGbqJrprqX9nw15SkB+KvxwQkgzJ0ULJz1aNIzmgGGXv LUVHWsdmzG47OfQzSVBPt6ccFCN7ll+OSPFjXLiHdVXv9uA6GH+3BWhCoYl+rwwFZ45Q 8Q== Received: from nalasppmta04.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3hx2wxxn1x-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 15 Aug 2022 21:31:54 +0000 Received: from nalasex01b.na.qualcomm.com (nalasex01b.na.qualcomm.com [10.47.209.197]) by NALASPPMTA04.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 27FLVrFM021067 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 15 Aug 2022 21:31:53 GMT Received: from hu-wcheng-lv.qualcomm.com (10.49.16.6) by nalasex01b.na.qualcomm.com (10.47.209.197) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.22; Mon, 15 Aug 2022 14:31:53 -0700 From: Wesley Cheng To: , CC: , , , , Wesley Cheng Subject: [PATCH v3 4/8] usb: dwc3: gadget: Continue handling EP0 xfercomplete events Date: Mon, 15 Aug 2022 14:31:30 -0700 Message-ID: <20220815213134.23783-5-quic_wcheng@quicinc.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20220815213134.23783-1-quic_wcheng@quicinc.com> References: <20220815213134.23783-1-quic_wcheng@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.49.16.6] X-ClientProxiedBy: nalasex01b.na.qualcomm.com (10.47.209.197) To nalasex01b.na.qualcomm.com (10.47.209.197) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-ORIG-GUID: t5GnbCYoQijY-XeFto117t25el7WPRID X-Proofpoint-GUID: t5GnbCYoQijY-XeFto117t25el7WPRID X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.883,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-08-15_08,2022-08-15_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 phishscore=0 impostorscore=0 malwarescore=0 lowpriorityscore=0 mlxscore=0 bulkscore=0 clxscore=1015 priorityscore=1501 spamscore=0 mlxlogscore=447 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2207270000 definitions=main-2208150082 X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org During soft disconnect, EP0 events are expected to be handled in order to allow the controller to successfully move into the halted state. Since __dwc3_gadget_stop() is executed before polling, EP0 has been disabled, and events are being blocked. Allow xfercomplete events to be handled, so that cached SETUP packets can be read out from the internal controller memory. Without doing so, it will lead to endxfer timeouts, which results to controller halt failures. Signed-off-by: Wesley Cheng --- drivers/usb/dwc3/gadget.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index 3b83e3c4b932..aff288b7baeb 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -2721,6 +2721,7 @@ static int __dwc3_gadget_start(struct dwc3 *dwc) dwc3_gadget_ep0_desc.wMaxPacketSize = cpu_to_le16(512); dep = dwc->eps[0]; + dep->flags = 0; ret = __dwc3_gadget_ep_enable(dep, DWC3_DEPCFG_ACTION_INIT); if (ret) { dev_err(dwc->dev, "failed to enable %s\n", dep->name); @@ -2728,6 +2729,7 @@ static int __dwc3_gadget_start(struct dwc3 *dwc) } dep = dwc->eps[1]; + dep->flags = 0; ret = __dwc3_gadget_ep_enable(dep, DWC3_DEPCFG_ACTION_INIT); if (ret) { dev_err(dwc->dev, "failed to enable %s\n", dep->name); @@ -3599,11 +3601,12 @@ static void dwc3_endpoint_interrupt(struct dwc3 *dwc, dep = dwc->eps[epnum]; if (!(dep->flags & DWC3_EP_ENABLED)) { - if (!(dep->flags & DWC3_EP_TRANSFER_STARTED)) + if ((epnum > 1) && !(dep->flags & DWC3_EP_TRANSFER_STARTED)) return; /* Handle only EPCMDCMPLT when EP disabled */ - if (event->endpoint_event != DWC3_DEPEVT_EPCMDCMPLT) + if ((event->endpoint_event != DWC3_DEPEVT_EPCMDCMPLT) && + !(epnum <= 1 && event->endpoint_event == DWC3_DEPEVT_XFERCOMPLETE)) return; }