From nobody Thu May 16 17:56:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+75808+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+75808+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1622117307; cv=none; d=zohomail.com; s=zohoarc; b=XKvgGYF76W5HYijLwppgHt7BxknOYVCY913hdHEceywfwxZRp6+pFRFoB32mhz9tHBNbTvyKrC+vwaMo6Alyy4smxwOnQlJLMF7zKiV+sPC96T0lULW4mYQUHtubOufF5A/BBuqEoY3jcIzzl0ZHgSCbtImCehvJRkZAOj+9Ym0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1622117307; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=sECMFTExU7s8NwGABFLuLswxHyYC/UHFUNDFnzoaOzE=; b=T615p8g2sUiOT74tCvGiDkCCCpOlPBFZ7kz+ZDp+kA/rPubFZaQXsipU0ZVfQK3zBEtHZedcDfktDOOwOCW/Kx91kveealiGUxnqG9uThYflQq14JiQ4OZavS5dM/+MXl9R5PSkDCSEf/JZN+Zm6QYp3lJv640NEOmYSBvNZt2A= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+75808+1787277+3901457@groups.io Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 16221173077572.0776967671952207; Thu, 27 May 2021 05:08:27 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id iGM4YY1788612xKoMbQoatqO; Thu, 27 May 2021 05:08:27 -0700 X-Received: from szxga08-in.huawei.com (szxga08-in.huawei.com [45.249.212.255]) by mx.groups.io with SMTP id smtpd.web08.5842.1622117301445173328 for ; Thu, 27 May 2021 05:08:21 -0700 X-Received: from dggeml708-chm.china.huawei.com (unknown [172.30.72.55]) by szxga08-in.huawei.com (SkyGuard) with ESMTP id 4FrRL62HMrz1BFTr for ; Thu, 27 May 2021 20:03:42 +0800 (CST) X-Received: from dggpemm000003.china.huawei.com (7.185.36.128) by dggeml708-chm.china.huawei.com (10.3.17.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2176.2; Thu, 27 May 2021 20:08:17 +0800 X-Received: from HGH1000039998.huawei.com (10.184.68.188) by dggpemm000003.china.huawei.com (7.185.36.128) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Thu, 27 May 2021 20:08:16 +0800 From: "wenyi,xie via groups.io" To: , , , CC: , Subject: [edk2-devel] [PATCH EDK2 v1 1/1] MdeModulePkg/Xhci: Fix TRT when data length is 0 Date: Thu, 27 May 2021 20:04:26 +0800 Message-ID: <1622117066-67642-2-git-send-email-xiewenyi2@huawei.com> In-Reply-To: <1622117066-67642-1-git-send-email-xiewenyi2@huawei.com> References: <1622117066-67642-1-git-send-email-xiewenyi2@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.184.68.188] X-ClientProxiedBy: dggems705-chm.china.huawei.com (10.3.19.182) To dggpemm000003.china.huawei.com (7.185.36.128) X-CFilter-Loop: Reflected Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,xiewenyi2@huawei.com X-Gm-Message-State: 3q6JIhW48jxNXFTrPob3YjM8x1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1622117307; bh=E6V85tJdl+eY0i/bUPY8Rr/hCvncU5eTRFvz1Psz9os=; h=CC:Content-Type:Date:From:Reply-To:Subject:To; b=vk3aEOYWExn9MT6pR9er17IDct49x52OKKsgxNJyiXyKXx09drfUCTjDJACuYxI3+uv wDrj51ekV56beY8EiuLNMZMig4yGiAKRbBrtLZTtl02ZXlvF+wQIg5bzHj1BKDqe0xyEU +aPYdHPSY0kp5cM8wHTcq6hVVxiAZ2gAT54= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3418 According to xhci spec, at USB packet level, a Control Transfer consists of multiple transactions partitioned into stages: a setup stage, an optional data stage, and a terminating status stage. If Data Stage does not exist, the Transfer Type flag(TRT) should be No Data Stage. So if data length equals to 0, TRT is set to 0. Cc: Jian J Wang Cc: Hao A Wu Cc: Ray Ni Signed-off-by: Wenyi Xie Reviewed-by: Hao A Wu --- MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c | 13 +++++++++---- MdeModulePkg/Bus/Pci/XhciPei/XhciSched.c | 13 +++++++++---- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c b/MdeModulePkg/Bus/Pc= i/XhciDxe/XhciSched.c index dc36945962a0..7cbc9a8502ea 100644 --- a/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c +++ b/MdeModulePkg/Bus/Pci/XhciDxe/XhciSched.c @@ -298,10 +298,15 @@ XhcCreateTransferTrb ( TrbStart->TrbCtrSetup.IOC =3D 1; TrbStart->TrbCtrSetup.IDT =3D 1; TrbStart->TrbCtrSetup.Type =3D TRB_TYPE_SETUP_STAGE; - if (Urb->Ep.Direction =3D=3D EfiUsbDataIn) { - TrbStart->TrbCtrSetup.TRT =3D 3; - } else if (Urb->Ep.Direction =3D=3D EfiUsbDataOut) { - TrbStart->TrbCtrSetup.TRT =3D 2; + if (Urb->DataLen > 0) { + if (Urb->Ep.Direction =3D=3D EfiUsbDataIn) { + TrbStart->TrbCtrSetup.TRT =3D 3; + } else if (Urb->Ep.Direction =3D=3D EfiUsbDataOut) { + TrbStart->TrbCtrSetup.TRT =3D 2; + } else { + DEBUG ((DEBUG_ERROR, "XhcCreateTransferTrb: Direction sholud be = IN or OUT when Data exists!\n")); + ASSERT (FALSE); + } } else { TrbStart->TrbCtrSetup.TRT =3D 0; } diff --git a/MdeModulePkg/Bus/Pci/XhciPei/XhciSched.c b/MdeModulePkg/Bus/Pc= i/XhciPei/XhciSched.c index 32d72ef03c2d..5b9892a1cbbb 100644 --- a/MdeModulePkg/Bus/Pci/XhciPei/XhciSched.c +++ b/MdeModulePkg/Bus/Pci/XhciPei/XhciSched.c @@ -291,10 +291,15 @@ XhcPeiCreateTransferTrb ( TrbStart->TrbCtrSetup.IOC =3D 1; TrbStart->TrbCtrSetup.IDT =3D 1; TrbStart->TrbCtrSetup.Type =3D TRB_TYPE_SETUP_STAGE; - if (Urb->Ep.Direction =3D=3D EfiUsbDataIn) { - TrbStart->TrbCtrSetup.TRT =3D 3; - } else if (Urb->Ep.Direction =3D=3D EfiUsbDataOut) { - TrbStart->TrbCtrSetup.TRT =3D 2; + if (Urb->DataLen > 0) { + if (Urb->Ep.Direction =3D=3D EfiUsbDataIn) { + TrbStart->TrbCtrSetup.TRT =3D 3; + } else if (Urb->Ep.Direction =3D=3D EfiUsbDataOut) { + TrbStart->TrbCtrSetup.TRT =3D 2; + } else { + DEBUG ((DEBUG_ERROR, "XhcPeiCreateTransferTrb: Direction sholud = be IN or OUT when Data exists!\n")); + ASSERT (FALSE); + } } else { TrbStart->TrbCtrSetup.TRT =3D 0; } --=20 2.20.1.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#75808): https://edk2.groups.io/g/devel/message/75808 Mute This Topic: https://groups.io/mt/83122568/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-