Received: by 2002:a05:6358:4e97:b0:b3:742d:4702 with SMTP id ce23csp3127745rwb; Mon, 15 Aug 2022 18:49:49 -0700 (PDT) X-Google-Smtp-Source: AA6agR7kh2lo9DgCndU80W8U9opBHuDYD1TloiDbcpRLLdBm9F7yPUgq9g3KBtzO84zwHjsrYhqh X-Received: by 2002:a17:906:98c9:b0:730:a23e:2785 with SMTP id zd9-20020a17090698c900b00730a23e2785mr12027045ejb.622.1660614589236; Mon, 15 Aug 2022 18:49:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1660614589; cv=none; d=google.com; s=arc-20160816; b=OyS8ODja1eyvyTGT4yqnyfXd8tGxNtHB2Vdpjs5eAuOZp9wW7AEBaB8cG7BJ91HrZr 9zsot3Qv/B8yWtkLY6fQ/5BxY1r17vlFo7o0vhcYW8UsrggMMy9P8hDdk+xYexXoPoFh 9/iCyKez7DB+0Q30PpWdXZGpbIxdWDUaKS+LNivao2eR1Q/HsiOycWcHUEw4emhnjcPV dw7RxWjNlV7K+Cudx2ENXYOpqHH6mHkc8LMdlpjeJCQ9MjX00w5mkrn1jf2g8Jwbdf40 cfrvZrHYvJlzTBKFeqGxvTR5PFsd7eYQt3sowou1GhmVNsWi4hLFPlvXUsmRRPIo2Lv+ rv0Q== 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=PZAj10NRwfPL26L1kAV5CZMi/CjAKw0BNb2i1v94acc=; b=FYQ8AZcAnzmWR8CZXV7Dg4+X0ysuMy4EDs9fS21kgaT/CGwUC5MFu14ooKrpYIZtyo AM3mhfeBeDB0I1WwgvWwbVCWDuMdryi7Vx8ZslVt3Nr3J/f01WgFX/qgL4UqoqWAgIVo M1nzUQFVfddIN414gwR0OqyD+zob3UH3sd/B30juOAY6eEQDj6D8IHzhUdawnItBtWZr e2ejAVNXBhqv2L9Dy3Z4hWL/OLB4mJ9HNbJlrDxX7jwgF6gmErld84AV9DZvs+j+HF5u PYNOdjmJQdwhRJ6zxND40AI3K1vXpW0Slrwrjg+0yAifEgtbTUHmf32LAwjInxFfG3Cb g6Rg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcppdkim1 header.b=UYlw9+S1; 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 qf7-20020a1709077f0700b00730a4e61c65si8341590ejc.722.2022.08.15.18.49.21; Mon, 15 Aug 2022 18:49:49 -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=UYlw9+S1; 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 S243138AbiHPBjt (ORCPT + 99 others); Mon, 15 Aug 2022 21:39:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37362 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236100AbiHPBip (ORCPT ); Mon, 15 Aug 2022 21:38:45 -0400 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3E584EEF14; Mon, 15 Aug 2022 14:31:59 -0700 (PDT) Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 27FLStK8009727; Mon, 15 Aug 2022 21:31:56 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=PZAj10NRwfPL26L1kAV5CZMi/CjAKw0BNb2i1v94acc=; b=UYlw9+S1hRJJEsOhF+U5sBjoDPdNPf6U8mfShbEgy6GmIqobybp+OPi0VIM55zKM9cq7 Xs4z69N7gv6GvR+pgwvXa0VKFnyEazmjzORYdguQqffFcbtNNXrm8a9T09hIo3DzVyqh K8YTaH9GIgvKSATuLVYJvLvg5SFujiYJEfW3JCnfEyBMUZGejkLGIWNF1Wvk1MHRaLrl E5UhHAkcGcBKNUqvgouqqguYiOVXfJ2s4fgYWRpZWKUJIAQXNhIPKFZAMUhuRRbx5PDD ckjno64Nz6pEtr2K2zjmKZ039oJXKr+b4JszQfuoCBxBGbK1KJSbxpVdbohsGeIS086M EQ== Received: from nalasppmta04.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3hx4qpxg9x-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 15 Aug 2022 21:31:55 +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 27FLVtnP021073 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 15 Aug 2022 21:31:55 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:54 -0700 From: Wesley Cheng To: , CC: , , , , Wesley Cheng Subject: [PATCH v3 8/8] usb: dwc3: gadget: Submit endxfer command if delayed during disconnect Date: Mon, 15 Aug 2022 14:31:34 -0700 Message-ID: <20220815213134.23783-9-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: gF3o3sktxT0IxfEGNz6GVshDNukNfJiG X-Proofpoint-GUID: gF3o3sktxT0IxfEGNz6GVshDNukNfJiG 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 spamscore=0 lowpriorityscore=0 suspectscore=0 clxscore=1015 mlxscore=0 phishscore=0 mlxlogscore=789 priorityscore=1501 malwarescore=0 impostorscore=0 adultscore=0 bulkscore=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 a cable disconnect sequence, if ep0state is not in the SETUP phase, then nothing will trigger any pending end transfer commands. Force stopping of any pending SETUP transaction, and move back to the SETUP phase. Signed-off-by: Wesley Cheng --- drivers/usb/dwc3/gadget.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index 5e8d3f02f99c..757ecb04b55a 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -3776,13 +3776,24 @@ static void dwc3_gadget_disconnect_interrupt(struct dwc3 *dwc) reg &= ~DWC3_DCTL_INITU2ENA; dwc3_gadget_dctl_write_safe(dwc, reg); + dwc->connected = false; + dwc3_disconnect_gadget(dwc); dwc->gadget->speed = USB_SPEED_UNKNOWN; dwc->setup_packet_pending = false; usb_gadget_set_state(dwc->gadget, USB_STATE_NOTATTACHED); - dwc->connected = false; + if (dwc->ep0state != EP0_SETUP_PHASE) { + unsigned int dir; + + dir = !!dwc->ep0_expect_in; + if (dwc->ep0state == EP0_DATA_PHASE) + dwc3_ep0_end_control_data(dwc, dwc->eps[dir]); + else + dwc3_ep0_end_control_data(dwc, dwc->eps[!dir]); + dwc3_ep0_stall_and_restart(dwc); + } } static void dwc3_gadget_reset_interrupt(struct dwc3 *dwc)