From nobody Wed May 1 22:22:26 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+59083+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+59083+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1589208942; cv=none; d=zohomail.com; s=zohoarc; b=IBo8+sI11t3JT4M5JxrwVqHnBZ8iWvETG/SVIjxFkbz0+oau6LoNS0VKIcMwFQmSRQrMb/lyNZEQyEbmDTsBNHYqK3fvPwG9AdmVowL0Dv/BluIf3YIybfpAdRahWVIzCtduae2aj+lndBLYm9/8nLHsmx3Or+lGXpd00B29NMs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589208942; h=Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=pLfKxR40LLuns9Jh6wyHgwvrmMkCFHOKvPW03kNyaFM=; b=Y+vC0bVtZU9gPZpJp2CFfVOf/45X6B/4YqXR+94NFZRmfbHK4SLp/U9wXbyASvRU+wLmGyvO2SC+BnGvZntQyT9TZLcPooNgJgBaFH910ggM5e+mr5e2IKYUqqM2RFuAtrvBTKTxk/Iy2NKZquyfXiyq5bg8CgjrAULUynhoUjU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+59083+1787277+3901457@groups.io Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1589208942539911.2647589599463; Mon, 11 May 2020 07:55:42 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id euBhYY1788612xMPqcPISgWC; Mon, 11 May 2020 07:55:42 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web10.13624.1589208941515432652 for ; Mon, 11 May 2020 07:55:41 -0700 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 284BFD6E; Mon, 11 May 2020 07:55:41 -0700 (PDT) X-Received: from e123331-lin.nice.arm.com (unknown [10.37.8.255]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id B58853F68F; Mon, 11 May 2020 07:55:38 -0700 (PDT) From: "Ard Biesheuvel" To: devel@edk2.groups.io Cc: Ard Biesheuvel , Pete Batard , Jared McNeill , Andrei Warkentin , Samer El-Haj-Mahmoud , Jeremy Linton Subject: [edk2-devel] [PATCH edk2-platforms v4 1/9] Silicon/Broadcom/BcmGenetDxe: whitespace/cosmetic cleanup Date: Mon, 11 May 2020 16:55:19 +0200 Message-Id: <20200511145527.23453-2-ard.biesheuvel@arm.com> In-Reply-To: <20200511145527.23453-1-ard.biesheuvel@arm.com> References: <20200511145527.23453-1-ard.biesheuvel@arm.com> Precedence: Bulk List-Unsubscribe: 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,ard.biesheuvel@arm.com X-Gm-Message-State: bWblKXkg1UaYTtaudY54Di7Ix1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1589208942; bh=fqVS6r0LZZMK9BIWofO7xBRCwv5wfgmBHgQbomN4xmQ=; h=Cc:Date:From:Reply-To:Subject:To; b=hv/+xvXwnciTw2ZSTNFBx+e+r5cCgdI9+D0xwTN0W92qPEz6vmklta3DQq+T7EEEy+C 2slbsXfXoET3piN6PDU2qfO+b6Gq2RPeiPRpBj4Wr4nA1R+Bak3fOTOTPwoSIl9G430Cn TgYkUOSFLMJXpKb2nmoWe0gM/1SjZIJk3QQ= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Ard Biesheuvel Reviewed-by: Jeremy Linton Reviewed-by: Philippe Mathieu-Daude Reviewed-by: Samer El-Haj-Mahmoud --- Silicon/Broadcom/Drivers/Net/BcmGenetDxe/BcmGenetDxe.inf | 2 + Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.h | 38 +- Silicon/Broadcom/Drivers/Net/BcmGenetDxe/DriverBinding.c | 19 +- Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenericPhy.c | 16 +- Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.c | 744 ++++++++++-= --------- Silicon/Broadcom/Drivers/Net/BcmGenetDxe/SimpleNetwork.c | 90 ++- 6 files changed, 456 insertions(+), 453 deletions(-) diff --git a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/BcmGenetDxe.inf b/Sil= icon/Broadcom/Drivers/Net/BcmGenetDxe/BcmGenetDxe.inf index e74fa02ad209..1f1aeca7dd6b 100644 --- a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/BcmGenetDxe.inf +++ b/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/BcmGenetDxe.inf @@ -21,7 +21,9 @@ [Sources] ComponentName.c DriverBinding.c GenericPhy.c + GenericPhy.h GenetUtil.c + GenetUtil.h SimpleNetwork.c =20 [Packages] diff --git a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.h b/Silicon= /Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.h index 2e7b78322bcd..b21a284b6221 100644 --- a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.h +++ b/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.h @@ -185,7 +185,7 @@ #define GENET_TX_SCB_BURST_SIZE (GENET_TX_BASE + 0x1040 + = 0x0c) =20 typedef struct { - EFI_PHYSICAL_ADDRESS Pa; + EFI_PHYSICAL_ADDRESS PhysAddress; VOID * Mapping; } GENET_MAP_INFO; =20 @@ -198,32 +198,32 @@ typedef enum { } GENET_PHY_MODE; =20 typedef struct { - UINT32 Signature; - EFI_HANDLE ControllerHandle; + UINT32 Signature; + EFI_HANDLE ControllerHandle; =20 - EFI_LOCK Lock; + EFI_LOCK Lock; =20 - EFI_SIMPLE_NETWORK_PROTOCOL Snp; - EFI_SIMPLE_NETWORK_MODE SnpMode; + EFI_SIMPLE_NETWORK_PROTOCOL Snp; + EFI_SIMPLE_NETWORK_MODE SnpMode; =20 - BCM_GENET_PLATFORM_DEVICE_PROTOCOL *Dev; + BCM_GENET_PLATFORM_DEVICE_PROTOCOL *Dev; =20 - GENERIC_PHY_PRIVATE_DATA Phy; + GENERIC_PHY_PRIVATE_DATA Phy; =20 - UINT8 * TxBuffer[GENET_DMA_DESC_COUNT]; - UINT8 TxQueued; - UINT16 TxNext; - UINT16 TxConsIndex; - UINT16 TxProdIndex; + UINT8 *TxBuffer[GENET_DMA_DESC_COUNT]; + UINT8 TxQueued; + UINT16 TxNext; + UINT16 TxConsIndex; + UINT16 TxProdIndex; =20 - UINT8 * RxBuffer[GENET_DMA_DESC_COUNT]; - GENET_MAP_INFO RxBufferMap[GENET_DMA_DESC_COUNT]; - UINT16 RxConsIndex; - UINT16 RxProdIndex; + UINT8 *RxBuffer[GENET_DMA_DESC_COUNT]; + GENET_MAP_INFO RxBufferMap[GENET_DMA_DESC_COUNT]; + UINT16 RxConsIndex; + UINT16 RxProdIndex; =20 - GENET_PHY_MODE PhyMode; + GENET_PHY_MODE PhyMode; =20 - UINTN RegBase; + UINTN RegBase; } GENET_PRIVATE_DATA; =20 extern EFI_COMPONENT_NAME_PROTOCOL gGenetComponentName; diff --git a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/DriverBinding.c b/Sil= icon/Broadcom/Drivers/Net/BcmGenetDxe/DriverBinding.c index e3d015dd0820..c23847ba9b52 100644 --- a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/DriverBinding.c +++ b/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/DriverBinding.c @@ -55,14 +55,12 @@ GenetDriverBindingSupported ( // Status =3D gBS->OpenProtocol (ControllerHandle, &gBcmGenetPlatformDeviceProtocolGuid, - (VOID **) &Dev, + (VOID **)&Dev, This->DriverBindingHandle, ControllerHandle, EFI_OPEN_PROTOCOL_BY_DRIVER); if (EFI_ERROR (Status)) { return Status; - } else { - Status =3D EFI_SUCCESS; } =20 // @@ -73,7 +71,7 @@ GenetDriverBindingSupported ( This->DriverBindingHandle, ControllerHandle); =20 - return Status; + return EFI_SUCCESS; } =20 =20 @@ -111,7 +109,7 @@ GenetDriverBindingStart ( Genet =3D AllocateZeroPool (sizeof (GENET_PRIVATE_DATA)); if (Genet =3D=3D NULL) { DEBUG ((DEBUG_ERROR, - "GenetDriverBindingStart: Couldn't allocate private data\n")); + "%a: Couldn't allocate private data\n", __FUNCTION__)); return EFI_OUT_OF_RESOURCES; } =20 @@ -123,14 +121,14 @@ GenetDriverBindingStart ( EFI_OPEN_PROTOCOL_BY_DRIVER); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, - "GenetDriverBindingStart: Couldn't open protocol: %r\n", Status)); + "%a: Couldn't open protocol: %r\n", __FUNCTION__, Status)); goto FreeDevice; } =20 Status =3D GenetDmaAlloc (Genet); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, - "GenetDriverBindingStart: Couldn't allocate DMA buffers: %r\n", Stat= us)); + "%a: Couldn't allocate DMA buffers: %r\n", __FUNCTION__, Status)); goto FreeDevice; } =20 @@ -180,8 +178,7 @@ GenetDriverBindingStart ( =20 if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, - "GenetDriverBindingStart: Couldn't install protocol interfaces: %r\n= ", - Status)); + "%a: Couldn't install protocol interfaces: %r\n", __FUNCTION__, Stat= us)); gBS->CloseProtocol (ControllerHandle, &gBcmGenetPlatformDeviceProtocolGuid, This->DriverBindingHandle, @@ -190,10 +187,10 @@ GenetDriverBindingStart ( } =20 Genet->ControllerHandle =3D ControllerHandle; - return Status; + return EFI_SUCCESS; =20 FreeDevice: - DEBUG ((DEBUG_WARN, "GenetDriverBindingStart: Returning %r\n", Status)); + DEBUG ((DEBUG_WARN, "%a: Returning %r\n", __FUNCTION__, Status)); FreePool (Genet); return Status; } diff --git a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenericPhy.c b/Silico= n/Broadcom/Drivers/Net/BcmGenetDxe/GenericPhy.c index a3c709891bc9..cd2788adc52c 100644 --- a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenericPhy.c +++ b/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenericPhy.c @@ -115,8 +115,8 @@ GenericPhyDetect ( if (Id1 !=3D 0xFFFF && Id2 !=3D 0xFFFF) { Phy->PhyAddr =3D PhyAddr; DEBUG ((DEBUG_INFO, - "GenericPhyDetect: PHY detected at address 0x%02X (PHYIDR1=3D0x%04= X, PHYIDR2=3D0x%04X)\n", - PhyAddr, Id1, Id2)); + "%a: PHY detected at address 0x%02X (PHYIDR1=3D0x%04X, PHYIDR2=3D0= x%04X)\n", + __FUNCTION__, PhyAddr, Id1, Id2)); return EFI_SUCCESS; } } @@ -348,8 +348,8 @@ GenericPhyGetConfig ( *Duplex =3D (An & GENERIC_PHY_ANAR_10BASET_FDX) ? PHY_DUPLEX_FULL : PH= Y_DUPLEX_HALF; } =20 - DEBUG ((DEBUG_INFO, "GenericPhyGetConfig: Link speed %d Mbps, %a-duplex\= n", - *Speed, *Duplex =3D=3D PHY_DUPLEX_FULL ? "full" : "half")); + DEBUG ((DEBUG_INFO, "%a: Link speed %d Mbps, %a-duplex\n", + __FUNCTION__, *Speed, *Duplex =3D=3D PHY_DUPLEX_FULL ? "full" : "half"= )); =20 return EFI_SUCCESS; } @@ -367,8 +367,8 @@ GenericPhyGetConfig ( EFI_STATUS EFIAPI GenericPhyUpdateConfig ( - IN GENERIC_PHY_PRIVATE_DATA *Phy - ) + IN GENERIC_PHY_PRIVATE_DATA *Phy + ) { EFI_STATUS Status; GENERIC_PHY_SPEED Speed; @@ -380,7 +380,7 @@ GenericPhyUpdateConfig ( =20 if (Phy->LinkUp !=3D LinkUp) { if (LinkUp) { - DEBUG ((DEBUG_VERBOSE, "GenericPhyUpdateConfig: Link is up\n")); + DEBUG ((DEBUG_VERBOSE, "%a: Link is up\n", __FUNCTION__)); =20 Status =3D GenericPhyGetConfig (Phy, &Speed, &Duplex); if (EFI_ERROR (Status)) { @@ -389,7 +389,7 @@ GenericPhyUpdateConfig ( =20 GenericPhyConfigure (Phy, Speed, Duplex); } else { - DEBUG ((DEBUG_VERBOSE, "GenericPhyUpdateConfig: Link is down\n")); + DEBUG ((DEBUG_VERBOSE, "%a: Link is down\n", __FUNCTION__)); } } =20 diff --git a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.c b/Silicon= /Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.c index d471b1cadadc..7ae9acec4c78 100644 --- a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.c +++ b/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.c @@ -31,13 +31,13 @@ STATIC UINT32 GenetMmioRead ( - IN GENET_PRIVATE_DATA *Genet, - IN UINT32 Offset - ) + IN GENET_PRIVATE_DATA *Genet, + IN UINT32 Offset + ) { - ASSERT((Offset & 3) =3D=3D 0); + ASSERT ((Offset & 3) =3D=3D 0); =20 - return MmioRead32 (Genet->RegBase + Offset); + return MmioRead32 (Genet->RegBase + Offset); } =20 /** @@ -53,15 +53,15 @@ GenetMmioRead ( STATIC VOID GenetMmioWrite ( - IN GENET_PRIVATE_DATA *Genet, - IN UINT32 Offset, - IN UINT32 Data - ) + IN GENET_PRIVATE_DATA *Genet, + IN UINT32 Offset, + IN UINT32 Data + ) { - ASSERT((Offset & 3) =3D=3D 0); + ASSERT ((Offset & 3) =3D=3D 0); =20 - ArmDataSynchronizationBarrier (); - MmioWrite32 (Genet->RegBase + Offset, Data); + ArmDataSynchronizationBarrier (); + MmioWrite32 (Genet->RegBase + Offset, Data); } =20 /** @@ -79,37 +79,38 @@ GenetMmioWrite ( EFI_STATUS EFIAPI GenetPhyRead ( - IN VOID *Priv, - IN UINT8 PhyAddr, - IN UINT8 Reg, - OUT UINT16 *Data - ) + IN VOID *Priv, + IN UINT8 PhyAddr, + IN UINT8 Reg, + OUT UINT16 *Data + ) { - GENET_PRIVATE_DATA *Genet =3D Priv; - UINTN Retry; - UINT32 Value; + GENET_PRIVATE_DATA *Genet =3D Priv; + UINTN Retry; + UINT32 Value; =20 - Value =3D GENET_MDIO_READ | - GENET_MDIO_START_BUSY | - __SHIFTIN(PhyAddr, GENET_MDIO_PMD) | - __SHIFTIN(Reg, GENET_MDIO_REG); - GenetMmioWrite (Genet, GENET_MDIO_CMD, Value); + Value =3D GENET_MDIO_READ | + GENET_MDIO_START_BUSY | + __SHIFTIN(PhyAddr, GENET_MDIO_PMD) | + __SHIFTIN(Reg, GENET_MDIO_REG); + GenetMmioWrite (Genet, GENET_MDIO_CMD, Value); =20 - for (Retry =3D GENET_PHY_RETRY; Retry > 0; Retry--) { - Value =3D GenetMmioRead (Genet, GENET_MDIO_CMD); - if ((Value & GENET_MDIO_START_BUSY) =3D=3D 0) { - *Data =3D Value & 0xffff; - break; - } - gBS->Stall (10); + for (Retry =3D GENET_PHY_RETRY; Retry > 0; Retry--) { + Value =3D GenetMmioRead (Genet, GENET_MDIO_CMD); + if ((Value & GENET_MDIO_START_BUSY) =3D=3D 0) { + *Data =3D Value & 0xffff; + break; } + gBS->Stall (10); + } =20 - if (Retry =3D=3D 0) { - DEBUG ((DEBUG_ERROR, "GenetPhyRead: Timeout reading PhyAddr %d, Re= g %d\n", PhyAddr, Reg)); - return EFI_DEVICE_ERROR; - } + if (Retry =3D=3D 0) { + DEBUG ((DEBUG_ERROR, + "%a: Timeout reading PhyAddr %d, Reg %d\n", __FUNCTION__, PhyAddr, R= eg)); + return EFI_DEVICE_ERROR; + } =20 - return EFI_SUCCESS; + return EFI_SUCCESS; } =20 /** @@ -127,36 +128,37 @@ GenetPhyRead ( EFI_STATUS EFIAPI GenetPhyWrite ( - IN VOID *Priv, - IN UINT8 PhyAddr, - IN UINT8 Reg, - IN UINT16 Data - ) + IN VOID *Priv, + IN UINT8 PhyAddr, + IN UINT8 Reg, + IN UINT16 Data + ) { - GENET_PRIVATE_DATA *Genet =3D Priv; - UINTN Retry; - UINT32 Value; + GENET_PRIVATE_DATA *Genet =3D Priv; + UINTN Retry; + UINT32 Value; =20 - Value =3D GENET_MDIO_WRITE | - GENET_MDIO_START_BUSY | - __SHIFTIN(PhyAddr, GENET_MDIO_PMD) | - __SHIFTIN(Reg, GENET_MDIO_REG); - GenetMmioWrite (Genet, GENET_MDIO_CMD, Value | Data); + Value =3D GENET_MDIO_WRITE | + GENET_MDIO_START_BUSY | + __SHIFTIN(PhyAddr, GENET_MDIO_PMD) | + __SHIFTIN(Reg, GENET_MDIO_REG); + GenetMmioWrite (Genet, GENET_MDIO_CMD, Value | Data); =20 - for (Retry =3D GENET_PHY_RETRY; Retry > 0; Retry--) { - Value =3D GenetMmioRead (Genet, GENET_MDIO_CMD); - if ((Value & GENET_MDIO_START_BUSY) =3D=3D 0) { - break; - } - gBS->Stall (10); + for (Retry =3D GENET_PHY_RETRY; Retry > 0; Retry--) { + Value =3D GenetMmioRead (Genet, GENET_MDIO_CMD); + if ((Value & GENET_MDIO_START_BUSY) =3D=3D 0) { + break; } + gBS->Stall (10); + } =20 - if (Retry =3D=3D 0) { - DEBUG ((DEBUG_ERROR, "GenetPhyRead: Timeout writing PhyAddr %d, Re= g %d\n", PhyAddr, Reg)); - return EFI_DEVICE_ERROR; - } + if (Retry =3D=3D 0) { + DEBUG ((DEBUG_ERROR, + "%a: Timeout writing PhyAddr %d, Reg %d\n", __FUNCTION__, PhyAddr, R= eg)); + return EFI_DEVICE_ERROR; + } =20 - return EFI_SUCCESS; + return EFI_SUCCESS; } =20 /** @@ -170,44 +172,44 @@ GenetPhyWrite ( VOID EFIAPI GenetPhyConfigure ( - IN VOID *Priv, - IN GENERIC_PHY_SPEED Speed, - IN GENERIC_PHY_DUPLEX Duplex - ) + IN VOID *Priv, + IN GENERIC_PHY_SPEED Speed, + IN GENERIC_PHY_DUPLEX Duplex + ) { - GENET_PRIVATE_DATA *Genet =3D Priv; - UINT32 Value; + GENET_PRIVATE_DATA *Genet =3D Priv; + UINT32 Value; =20 - Value =3D GenetMmioRead (Genet, GENET_EXT_RGMII_OOB_CTRL); - Value &=3D ~GENET_EXT_RGMII_OOB_OOB_DISABLE; - Value |=3D GENET_EXT_RGMII_OOB_RGMII_LINK; - Value |=3D GENET_EXT_RGMII_OOB_RGMII_MODE_EN; - if (Genet->PhyMode =3D=3D GENET_PHY_MODE_RGMII) { - Value |=3D GENET_EXT_RGMII_OOB_ID_MODE_DISABLE; - } else { - Value &=3D ~GENET_EXT_RGMII_OOB_ID_MODE_DISABLE; - } - GenetMmioWrite (Genet, GENET_EXT_RGMII_OOB_CTRL, Value); + Value =3D GenetMmioRead (Genet, GENET_EXT_RGMII_OOB_CTRL); + Value &=3D ~GENET_EXT_RGMII_OOB_OOB_DISABLE; + Value |=3D GENET_EXT_RGMII_OOB_RGMII_LINK; + Value |=3D GENET_EXT_RGMII_OOB_RGMII_MODE_EN; + if (Genet->PhyMode =3D=3D GENET_PHY_MODE_RGMII) { + Value |=3D GENET_EXT_RGMII_OOB_ID_MODE_DISABLE; + } else { + Value &=3D ~GENET_EXT_RGMII_OOB_ID_MODE_DISABLE; + } + GenetMmioWrite (Genet, GENET_EXT_RGMII_OOB_CTRL, Value); =20 - Value =3D GenetMmioRead (Genet, GENET_UMAC_CMD); - Value &=3D ~GENET_UMAC_CMD_SPEED; - switch (Speed) { - case PHY_SPEED_1000: - Value |=3D __SHIFTIN(GENET_UMAC_CMD_SPEED_1000, GENET_UMAC_CMD= _SPEED); - break; - case PHY_SPEED_100: - Value |=3D __SHIFTIN(GENET_UMAC_CMD_SPEED_100, GENET_UMAC_CMD_= SPEED); - break; - default: - Value |=3D __SHIFTIN(GENET_UMAC_CMD_SPEED_10, GENET_UMAC_CMD_S= PEED); - break; - } - if (Duplex =3D=3D PHY_DUPLEX_FULL) { - Value &=3D ~GENET_UMAC_CMD_HD_EN; - } else { - Value |=3D GENET_UMAC_CMD_HD_EN; - } - GenetMmioWrite (Genet, GENET_UMAC_CMD, Value); + Value =3D GenetMmioRead (Genet, GENET_UMAC_CMD); + Value &=3D ~GENET_UMAC_CMD_SPEED; + switch (Speed) { + case PHY_SPEED_1000: + Value |=3D __SHIFTIN(GENET_UMAC_CMD_SPEED_1000, GENET_UMAC_CMD_SPEED= ); + break; + case PHY_SPEED_100: + Value |=3D __SHIFTIN(GENET_UMAC_CMD_SPEED_100, GENET_UMAC_CMD_SPEED); + break; + default: + Value |=3D __SHIFTIN(GENET_UMAC_CMD_SPEED_10, GENET_UMAC_CMD_SPEED); + break; + } + if (Duplex =3D=3D PHY_DUPLEX_FULL) { + Value &=3D ~GENET_UMAC_CMD_HD_EN; + } else { + Value |=3D GENET_UMAC_CMD_HD_EN; + } + GenetMmioWrite (Genet, GENET_UMAC_CMD, Value); } =20 /** @@ -231,12 +233,12 @@ GenetPhyResetAction ( BRGPHY_AUXCTL_SHADOW_MISC | BRGPHY_AUXCTL_SHADOW= _MISC << BRGPHY_AUXCTL_MISC_READ_SHIFT); if (EFI_ERROR (Status)) { - return Status; + return Status; } =20 Status =3D GenetPhyRead (Priv, Genet->Phy.PhyAddr, BRGPHY_MII_AUXCTL, &V= alue); if (EFI_ERROR (Status)) { - return Status; + return Status; } =20 Value &=3D BRGPHY_AUXCTL_MISC_DATA_MASK; @@ -252,18 +254,18 @@ GenetPhyResetAction ( BRGPHY_AUXCTL_MISC_WRITE_EN | BRGPHY_AUXCTL_SHAD= OW_MISC | Value); if (EFI_ERROR (Status)) { - return Status; + return Status; } =20 Status =3D GenetPhyWrite (Priv, Genet->Phy.PhyAddr, BRGPHY_MII_SHADOW_1C, - BRGPHY_SHADOW_1C_CLK_CTRL); + BRGPHY_SHADOW_1C_CLK_CTRL); if (EFI_ERROR (Status)) { - return Status; + return Status; } =20 Status =3D GenetPhyRead (Priv, Genet->Phy.PhyAddr, BRGPHY_MII_SHADOW_1C,= &Value); if (EFI_ERROR (Status)) { - return Status; + return Status; } =20 Value &=3D BRGPHY_SHADOW_1C_DATA_MASK; @@ -279,7 +281,7 @@ GenetPhyResetAction ( BRGPHY_SHADOW_1C_WRITE_EN | BRGPHY_SHADOW_1C_CLK= _CTRL | Value); if (EFI_ERROR (Status)) { - return Status; + return Status; } =20 return EFI_SUCCESS; @@ -293,38 +295,40 @@ GenetPhyResetAction ( **/ VOID GenetReset ( - IN GENET_PRIVATE_DATA *Genet - ) + IN GENET_PRIVATE_DATA *Genet + ) { - UINT32 Value; + UINT32 Value; =20 - Value =3D GenetMmioRead (Genet, GENET_SYS_RBUF_FLUSH_CTRL); - Value |=3D GENET_SYS_RBUF_FLUSH_RESET; - GenetMmioWrite (Genet, GENET_SYS_RBUF_FLUSH_CTRL, Value); - gBS->Stall (10); + Value =3D GenetMmioRead (Genet, GENET_SYS_RBUF_FLUSH_CTRL); + Value |=3D GENET_SYS_RBUF_FLUSH_RESET; + GenetMmioWrite (Genet, GENET_SYS_RBUF_FLUSH_CTRL, Value); + gBS->Stall (10); =20 - Value &=3D ~GENET_SYS_RBUF_FLUSH_RESET; - GenetMmioWrite (Genet, GENET_SYS_RBUF_FLUSH_CTRL, Value); - gBS->Stall (10); + Value &=3D ~GENET_SYS_RBUF_FLUSH_RESET; + GenetMmioWrite (Genet, GENET_SYS_RBUF_FLUSH_CTRL, Value); + gBS->Stall (10); =20 - GenetMmioWrite (Genet, GENET_SYS_RBUF_FLUSH_CTRL, 0); - gBS->Stall (10); + GenetMmioWrite (Genet, GENET_SYS_RBUF_FLUSH_CTRL, 0); + gBS->Stall (10); =20 - GenetMmioWrite (Genet, GENET_UMAC_CMD, 0); - GenetMmioWrite (Genet, GENET_UMAC_CMD, GENET_UMAC_CMD_LCL_LOOP_EN | GE= NET_UMAC_CMD_SW_RESET); - gBS->Stall (10); - GenetMmioWrite (Genet, GENET_UMAC_CMD, 0); + GenetMmioWrite (Genet, GENET_UMAC_CMD, 0); + GenetMmioWrite (Genet, GENET_UMAC_CMD, + GENET_UMAC_CMD_LCL_LOOP_EN | GENET_UMAC_CMD_SW_RESET); + gBS->Stall (10); + GenetMmioWrite (Genet, GENET_UMAC_CMD, 0); =20 - GenetMmioWrite (Genet, GENET_UMAC_MIB_CTRL, GENET_UMAC_MIB_RESET_RUNT = | GENET_UMAC_MIB_RESET_RX | GENET_UMAC_MIB_RESET_TX); - GenetMmioWrite (Genet, GENET_UMAC_MIB_CTRL, 0); + GenetMmioWrite (Genet, GENET_UMAC_MIB_CTRL, + GENET_UMAC_MIB_RESET_RUNT | GENET_UMAC_MIB_RESET_RX | GENET_UMAC_MIB_R= ESET_TX); + GenetMmioWrite (Genet, GENET_UMAC_MIB_CTRL, 0); =20 - GenetMmioWrite (Genet, GENET_UMAC_MAX_FRAME_LEN, 1536); + GenetMmioWrite (Genet, GENET_UMAC_MAX_FRAME_LEN, 1536); =20 - Value =3D GenetMmioRead (Genet, GENET_RBUF_CTRL); - Value |=3D GENET_RBUF_ALIGN_2B; - GenetMmioWrite (Genet, GENET_RBUF_CTRL, Value); + Value =3D GenetMmioRead (Genet, GENET_RBUF_CTRL); + Value |=3D GENET_RBUF_ALIGN_2B; + GenetMmioWrite (Genet, GENET_RBUF_CTRL, Value); =20 - GenetMmioWrite (Genet, GENET_RBUF_TBUF_SIZE_CTRL, 1); + GenetMmioWrite (Genet, GENET_RBUF_TBUF_SIZE_CTRL, 1); } =20 /** @@ -337,20 +341,20 @@ GenetReset ( VOID EFIAPI GenetSetMacAddress ( - IN GENET_PRIVATE_DATA *Genet, - IN EFI_MAC_ADDRESS *MacAddr - ) + IN GENET_PRIVATE_DATA *Genet, + IN EFI_MAC_ADDRESS *MacAddr + ) { - UINT32 Value; + UINT32 Value; =20 - Value =3D MacAddr->Addr[3] | - MacAddr->Addr[2] << 8 | - MacAddr->Addr[1] << 16 | - MacAddr->Addr[0] << 24; - GenetMmioWrite (Genet, GENET_UMAC_MAC0, Value); - Value =3D MacAddr->Addr[5] | - MacAddr->Addr[4] << 8; - GenetMmioWrite (Genet, GENET_UMAC_MAC1, Value); + Value =3D MacAddr->Addr[3] | + MacAddr->Addr[2] << 8 | + MacAddr->Addr[1] << 16 | + MacAddr->Addr[0] << 24; + GenetMmioWrite (Genet, GENET_UMAC_MAC0, Value); + Value =3D MacAddr->Addr[5] | + MacAddr->Addr[4] << 8; + GenetMmioWrite (Genet, GENET_UMAC_MAC1, Value); } =20 /** @@ -362,24 +366,24 @@ GenetSetMacAddress ( **/ VOID GenetSetPhyMode ( - IN GENET_PRIVATE_DATA *Genet, - IN GENET_PHY_MODE PhyMode - ) + IN GENET_PRIVATE_DATA *Genet, + IN GENET_PHY_MODE PhyMode + ) { - UINT32 Value; + UINT32 Value; =20 - switch (PhyMode) { - case GENET_PHY_MODE_RGMII: - case GENET_PHY_MODE_RGMII_RXID: - case GENET_PHY_MODE_RGMII_TXID: - case GENET_PHY_MODE_RGMII_ID: - Value =3D GENET_SYS_PORT_MODE_EXT_GPHY; - break; - default: - Value =3D 0; - break; - } - GenetMmioWrite (Genet, GENET_SYS_PORT_CTRL, Value); + switch (PhyMode) { + case GENET_PHY_MODE_RGMII: + case GENET_PHY_MODE_RGMII_RXID: + case GENET_PHY_MODE_RGMII_TXID: + case GENET_PHY_MODE_RGMII_ID: + Value =3D GENET_SYS_PORT_MODE_EXT_GPHY; + break; + default: + Value =3D 0; + break; + } + GenetMmioWrite (Genet, GENET_SYS_PORT_CTRL, Value); } =20 /** @@ -390,31 +394,32 @@ GenetSetPhyMode ( **/ VOID GenetEnableTxRx ( - IN GENET_PRIVATE_DATA *Genet - ) + IN GENET_PRIVATE_DATA *Genet + ) { - UINT32 Value; - UINT8 Qid =3D GENET_DMA_DEFAULT_QUEUE; + UINT32 Value; + UINT8 Qid =3D GENET_DMA_DEFAULT_QUEUE; =20 - // Start TX DMA on default queue - Value =3D GenetMmioRead (Genet, GENET_TX_DMA_CTRL); - Value |=3D GENET_TX_DMA_CTRL_EN; - Value |=3D GENET_TX_DMA_CTRL_RBUF_EN(Qid); - GenetMmioWrite (Genet, GENET_TX_DMA_CTRL, Value); + // Start TX DMA on default queue + Value =3D GenetMmioRead (Genet, GENET_TX_DMA_CTRL); + Value |=3D GENET_TX_DMA_CTRL_EN; + Value |=3D GENET_TX_DMA_CTRL_RBUF_EN (Qid); + GenetMmioWrite (Genet, GENET_TX_DMA_CTRL, Value); =20 - // Start RX DMA on default queue - Value =3D GenetMmioRead (Genet, GENET_RX_DMA_CTRL); - Value |=3D GENET_RX_DMA_CTRL_EN; - Value |=3D GENET_RX_DMA_CTRL_RBUF_EN(Qid); - GenetMmioWrite (Genet, GENET_RX_DMA_CTRL, Value); + // Start RX DMA on default queue + Value =3D GenetMmioRead (Genet, GENET_RX_DMA_CTRL); + Value |=3D GENET_RX_DMA_CTRL_EN; + Value |=3D GENET_RX_DMA_CTRL_RBUF_EN (Qid); + GenetMmioWrite (Genet, GENET_RX_DMA_CTRL, Value); =20 - // Enable transmitter and receiver - Value =3D GenetMmioRead (Genet, GENET_UMAC_CMD); - Value |=3D GENET_UMAC_CMD_TXEN | GENET_UMAC_CMD_RXEN; - GenetMmioWrite (Genet, GENET_UMAC_CMD, Value); + // Enable transmitter and receiver + Value =3D GenetMmioRead (Genet, GENET_UMAC_CMD); + Value |=3D GENET_UMAC_CMD_TXEN | GENET_UMAC_CMD_RXEN; + GenetMmioWrite (Genet, GENET_UMAC_CMD, Value); =20 - // Enable interrupts - GenetMmioWrite (Genet, GENET_INTRL2_CPU_CLEAR_MASK, GENET_IRQ_TXDMA_DO= NE | GENET_IRQ_RXDMA_DONE); + // Enable interrupts + GenetMmioWrite (Genet, GENET_INTRL2_CPU_CLEAR_MASK, + GENET_IRQ_TXDMA_DONE | GENET_IRQ_RXDMA_DONE); } =20 /** @@ -425,42 +430,42 @@ GenetEnableTxRx ( **/ VOID GenetDisableTxRx ( - IN GENET_PRIVATE_DATA *Genet - ) + IN GENET_PRIVATE_DATA *Genet + ) { - UINT32 Value; - UINT8 Qid =3D GENET_DMA_DEFAULT_QUEUE; + UINT32 Value; + UINT8 Qid =3D GENET_DMA_DEFAULT_QUEUE; =20 - // Disable interrupts - GenetMmioWrite (Genet, GENET_INTRL2_CPU_SET_MASK, 0xFFFFFFFF); - GenetMmioWrite (Genet, GENET_INTRL2_CPU_CLEAR, 0xFFFFFFFF); + // Disable interrupts + GenetMmioWrite (Genet, GENET_INTRL2_CPU_SET_MASK, 0xFFFFFFFF); + GenetMmioWrite (Genet, GENET_INTRL2_CPU_CLEAR, 0xFFFFFFFF); =20 - // Disable receiver - Value =3D GenetMmioRead (Genet, GENET_UMAC_CMD); - Value &=3D ~GENET_UMAC_CMD_RXEN; - GenetMmioWrite (Genet, GENET_UMAC_CMD, Value); + // Disable receiver + Value =3D GenetMmioRead (Genet, GENET_UMAC_CMD); + Value &=3D ~GENET_UMAC_CMD_RXEN; + GenetMmioWrite (Genet, GENET_UMAC_CMD, Value); =20 - // Stop RX DMA - Value =3D GenetMmioRead (Genet, GENET_RX_DMA_CTRL); - Value &=3D ~GENET_RX_DMA_CTRL_EN; - Value &=3D ~GENET_RX_DMA_CTRL_RBUF_EN(Qid); - GenetMmioWrite (Genet, GENET_RX_DMA_CTRL, Value); + // Stop RX DMA + Value =3D GenetMmioRead (Genet, GENET_RX_DMA_CTRL); + Value &=3D ~GENET_RX_DMA_CTRL_EN; + Value &=3D ~GENET_RX_DMA_CTRL_RBUF_EN (Qid); + GenetMmioWrite (Genet, GENET_RX_DMA_CTRL, Value); =20 - // Stop TX DMA - Value =3D GenetMmioRead (Genet, GENET_TX_DMA_CTRL); - Value &=3D ~GENET_TX_DMA_CTRL_EN; - Value &=3D ~GENET_TX_DMA_CTRL_RBUF_EN(Qid); - GenetMmioWrite (Genet, GENET_TX_DMA_CTRL, Value); + // Stop TX DMA + Value =3D GenetMmioRead (Genet, GENET_TX_DMA_CTRL); + Value &=3D ~GENET_TX_DMA_CTRL_EN; + Value &=3D ~GENET_TX_DMA_CTRL_RBUF_EN (Qid); + GenetMmioWrite (Genet, GENET_TX_DMA_CTRL, Value); =20 - // Flush data in the TX FIFO - GenetMmioWrite (Genet, GENET_UMAC_TX_FLUSH, 1); - gBS->Stall (10); - GenetMmioWrite (Genet, GENET_UMAC_TX_FLUSH, 0); + // Flush data in the TX FIFO + GenetMmioWrite (Genet, GENET_UMAC_TX_FLUSH, 1); + gBS->Stall (10); + GenetMmioWrite (Genet, GENET_UMAC_TX_FLUSH, 0); =20 - // Disable transmitter - Value =3D GenetMmioRead (Genet, GENET_UMAC_CMD); - Value &=3D ~GENET_UMAC_CMD_TXEN; - GenetMmioWrite (Genet, GENET_UMAC_CMD, Value); + // Disable transmitter + Value =3D GenetMmioRead (Genet, GENET_UMAC_CMD); + Value &=3D ~GENET_UMAC_CMD_TXEN; + GenetMmioWrite (Genet, GENET_UMAC_CMD, Value); } =20 /** @@ -472,19 +477,19 @@ GenetDisableTxRx ( **/ VOID GenetSetPromisc ( - IN GENET_PRIVATE_DATA *Genet, - IN BOOLEAN Enable - ) + IN GENET_PRIVATE_DATA *Genet, + IN BOOLEAN Enable + ) { - UINT32 Value; + UINT32 Value; =20 - Value =3D GenetMmioRead (Genet, GENET_UMAC_CMD); - if (Enable) { - Value |=3D GENET_UMAC_CMD_PROMISC; - } else { - Value &=3D ~GENET_UMAC_CMD_PROMISC; - } - GenetMmioWrite (Genet, GENET_UMAC_CMD, Value); + Value =3D GenetMmioRead (Genet, GENET_UMAC_CMD); + if (Enable) { + Value |=3D GENET_UMAC_CMD_PROMISC; + } else { + Value &=3D ~GENET_UMAC_CMD_PROMISC; + } + GenetMmioWrite (Genet, GENET_UMAC_CMD, Value); } =20 /** @@ -495,63 +500,63 @@ GenetSetPromisc ( **/ VOID GenetDmaInitRings ( - IN GENET_PRIVATE_DATA *Genet - ) + IN GENET_PRIVATE_DATA *Genet + ) { - UINT8 Qid =3D GENET_DMA_DEFAULT_QUEUE; + UINT8 Qid =3D GENET_DMA_DEFAULT_QUEUE; =20 - Genet->TxQueued =3D 0; - Genet->TxNext =3D 0; - Genet->TxConsIndex =3D 0; - Genet->TxProdIndex =3D 0; + Genet->TxQueued =3D 0; + Genet->TxNext =3D 0; + Genet->TxConsIndex =3D 0; + Genet->TxProdIndex =3D 0; =20 - Genet->RxConsIndex =3D 0; - Genet->RxProdIndex =3D 0; + Genet->RxConsIndex =3D 0; + Genet->RxProdIndex =3D 0; =20 - // Configure TX queue - GenetMmioWrite (Genet, GENET_TX_SCB_BURST_SIZE, 0x08); - GenetMmioWrite (Genet, GENET_TX_DMA_READ_PTR_LO(Qid), 0); - GenetMmioWrite (Genet, GENET_TX_DMA_READ_PTR_HI(Qid), 0); - GenetMmioWrite (Genet, GENET_TX_DMA_CONS_INDEX(Qid), 0); - GenetMmioWrite (Genet, GENET_TX_DMA_PROD_INDEX(Qid), 0); - GenetMmioWrite (Genet, GENET_TX_DMA_RING_BUF_SIZE(Qid), - __SHIFTIN(GENET_DMA_DESC_COUNT, GENET_TX_DMA_RING_BUF_= SIZE_DESC_COUNT) | - __SHIFTIN(GENET_MAX_PACKET_SIZE, GENET_TX_DMA_RING_BUF= _SIZE_BUF_LENGTH)); - GenetMmioWrite (Genet, GENET_TX_DMA_START_ADDR_LO(Qid), 0); - GenetMmioWrite (Genet, GENET_TX_DMA_START_ADDR_HI(Qid), 0); - GenetMmioWrite (Genet, GENET_TX_DMA_END_ADDR_LO(Qid), - GENET_DMA_DESC_COUNT * GENET_DMA_DESC_SIZE / 4 - 1); - GenetMmioWrite (Genet, GENET_TX_DMA_END_ADDR_HI(Qid), 0); - GenetMmioWrite (Genet, GENET_TX_DMA_MBUF_DONE_THRES(Qid), 1); - GenetMmioWrite (Genet, GENET_TX_DMA_FLOW_PERIOD(Qid), 0); - GenetMmioWrite (Genet, GENET_TX_DMA_WRITE_PTR_LO(Qid), 0); - GenetMmioWrite (Genet, GENET_TX_DMA_WRITE_PTR_HI(Qid), 0); + // Configure TX queue + GenetMmioWrite (Genet, GENET_TX_SCB_BURST_SIZE, 0x08); + GenetMmioWrite (Genet, GENET_TX_DMA_READ_PTR_LO (Qid), 0); + GenetMmioWrite (Genet, GENET_TX_DMA_READ_PTR_HI (Qid), 0); + GenetMmioWrite (Genet, GENET_TX_DMA_CONS_INDEX (Qid), 0); + GenetMmioWrite (Genet, GENET_TX_DMA_PROD_INDEX (Qid), 0); + GenetMmioWrite (Genet, GENET_TX_DMA_RING_BUF_SIZE (Qid), + __SHIFTIN(GENET_DMA_DESC_COUNT, GENET_TX_DMA_RING_BUF_SIZE_DESC_COUNT)= | + __SHIFTIN(GENET_MAX_PACKET_SIZE, GENET_TX_DMA_RING_BUF_SIZE_BUF_LENGTH= )); + GenetMmioWrite (Genet, GENET_TX_DMA_START_ADDR_LO (Qid), 0); + GenetMmioWrite (Genet, GENET_TX_DMA_START_ADDR_HI (Qid), 0); + GenetMmioWrite (Genet, GENET_TX_DMA_END_ADDR_LO (Qid), + GENET_DMA_DESC_COUNT * GENET_DMA_DESC_SIZE / 4 - 1); + GenetMmioWrite (Genet, GENET_TX_DMA_END_ADDR_HI (Qid), 0); + GenetMmioWrite (Genet, GENET_TX_DMA_MBUF_DONE_THRES (Qid), 1); + GenetMmioWrite (Genet, GENET_TX_DMA_FLOW_PERIOD (Qid), 0); + GenetMmioWrite (Genet, GENET_TX_DMA_WRITE_PTR_LO (Qid), 0); + GenetMmioWrite (Genet, GENET_TX_DMA_WRITE_PTR_HI (Qid), 0); =20 - // Enable TX queue - GenetMmioWrite (Genet, GENET_TX_DMA_RING_CFG, (1U << Qid)); + // Enable TX queue + GenetMmioWrite (Genet, GENET_TX_DMA_RING_CFG, (1U << Qid)); =20 - // Configure RX queue - GenetMmioWrite (Genet, GENET_RX_SCB_BURST_SIZE, 0x08); - GenetMmioWrite (Genet, GENET_RX_DMA_WRITE_PTR_LO(Qid), 0); - GenetMmioWrite (Genet, GENET_RX_DMA_WRITE_PTR_HI(Qid), 0); - GenetMmioWrite (Genet, GENET_RX_DMA_PROD_INDEX(Qid), 0); - GenetMmioWrite (Genet, GENET_RX_DMA_CONS_INDEX(Qid), 0); - GenetMmioWrite (Genet, GENET_RX_DMA_RING_BUF_SIZE(Qid), - __SHIFTIN(GENET_DMA_DESC_COUNT, GENET_RX_DMA_RING_BUF_= SIZE_DESC_COUNT) | - __SHIFTIN(GENET_MAX_PACKET_SIZE, GENET_RX_DMA_RING_BUF= _SIZE_BUF_LENGTH)); - GenetMmioWrite (Genet, GENET_RX_DMA_START_ADDR_LO(Qid), 0); - GenetMmioWrite (Genet, GENET_RX_DMA_START_ADDR_HI(Qid), 0); - GenetMmioWrite (Genet, GENET_RX_DMA_END_ADDR_LO(Qid), - GENET_DMA_DESC_COUNT * GENET_DMA_DESC_SIZE / 4 - 1); - GenetMmioWrite (Genet, GENET_RX_DMA_END_ADDR_HI(Qid), 0); - GenetMmioWrite (Genet, GENET_RX_DMA_XON_XOFF_THRES(Qid), - __SHIFTIN(5, GENET_RX_DMA_XON_XOFF_THRES_LO) | - __SHIFTIN(GENET_DMA_DESC_COUNT >> 4, GENET_RX_DMA_XON_= XOFF_THRES_HI)); - GenetMmioWrite (Genet, GENET_RX_DMA_READ_PTR_LO(Qid), 0); - GenetMmioWrite (Genet, GENET_RX_DMA_READ_PTR_HI(Qid), 0); + // Configure RX queue + GenetMmioWrite (Genet, GENET_RX_SCB_BURST_SIZE, 0x08); + GenetMmioWrite (Genet, GENET_RX_DMA_WRITE_PTR_LO (Qid), 0); + GenetMmioWrite (Genet, GENET_RX_DMA_WRITE_PTR_HI (Qid), 0); + GenetMmioWrite (Genet, GENET_RX_DMA_PROD_INDEX (Qid), 0); + GenetMmioWrite (Genet, GENET_RX_DMA_CONS_INDEX (Qid), 0); + GenetMmioWrite (Genet, GENET_RX_DMA_RING_BUF_SIZE (Qid), + __SHIFTIN(GENET_DMA_DESC_COUNT, GENET_RX_DMA_RING_BUF_SIZE_DESC_COUNT)= | + __SHIFTIN(GENET_MAX_PACKET_SIZE, GENET_RX_DMA_RING_BUF_SIZE_BUF_LENGTH= )); + GenetMmioWrite (Genet, GENET_RX_DMA_START_ADDR_LO (Qid), 0); + GenetMmioWrite (Genet, GENET_RX_DMA_START_ADDR_HI (Qid), 0); + GenetMmioWrite (Genet, GENET_RX_DMA_END_ADDR_LO (Qid), + GENET_DMA_DESC_COUNT * GENET_DMA_DESC_SIZE / 4 - 1); + GenetMmioWrite (Genet, GENET_RX_DMA_END_ADDR_HI (Qid), 0); + GenetMmioWrite (Genet, GENET_RX_DMA_XON_XOFF_THRES (Qid), + __SHIFTIN(5, GENET_RX_DMA_XON_XOFF_THRES_LO) | + __SHIFTIN(GENET_DMA_DESC_COUNT >> 4, GENET_RX_DMA_XON_XOFF_THRES_HI)); + GenetMmioWrite (Genet, GENET_RX_DMA_READ_PTR_LO (Qid), 0); + GenetMmioWrite (Genet, GENET_RX_DMA_READ_PTR_HI (Qid), 0); =20 - // Enable RX queue - GenetMmioWrite (Genet, GENET_RX_DMA_RING_CFG, (1U << Qid)); + // Enable RX queue + GenetMmioWrite (Genet, GENET_RX_DMA_RING_CFG, (1U << Qid)); } =20 /** @@ -564,22 +569,22 @@ GenetDmaInitRings ( **/ EFI_STATUS GenetDmaAlloc ( - IN GENET_PRIVATE_DATA *Genet - ) + IN GENET_PRIVATE_DATA *Genet + ) { - EFI_STATUS Status; - UINTN n; + EFI_STATUS Status; + UINTN Idx; =20 - for (n =3D 0; n < GENET_DMA_DESC_COUNT; n++) { - Status =3D DmaAllocateBuffer (EfiBootServicesData, EFI_SIZE_TO_PAG= ES (GENET_MAX_PACKET_SIZE), (VOID **)&Genet->RxBuffer[n]); - if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "GenetDmaAlloc: Failed to allocate RX buf= fer: %r\n", Status)); - GenetDmaFree (Genet); - return Status; - } + for (Idx =3D 0; Idx < GENET_DMA_DESC_COUNT; Idx++) { + Status =3D DmaAllocateBuffer (EfiBootServicesData, EFI_SIZE_TO_PAGES (= GENET_MAX_PACKET_SIZE), (VOID **)&Genet->RxBuffer[Idx]); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a: Failed to allocate RX buffer: %r\n", __FUN= CTION__, Status)); + GenetDmaFree (Genet); + return Status; } + } =20 - return EFI_SUCCESS; + return EFI_SUCCESS; } =20 /** @@ -594,33 +599,34 @@ GenetDmaAlloc ( **/ EFI_STATUS GenetDmaMapRxDescriptor ( - IN GENET_PRIVATE_DATA * Genet, - IN UINT8 DescIndex - ) + IN GENET_PRIVATE_DATA * Genet, + IN UINT8 DescIndex + ) { - EFI_STATUS Status; - UINTN DmaNumberOfBytes; + EFI_STATUS Status; + UINTN DmaNumberOfBytes; =20 - ASSERT (Genet->RxBufferMap[DescIndex].Mapping =3D=3D NULL); - ASSERT (Genet->RxBuffer[DescIndex] !=3D NULL); + ASSERT (Genet->RxBufferMap[DescIndex].Mapping =3D=3D NULL); + ASSERT (Genet->RxBuffer[DescIndex] !=3D NULL); =20 - DmaNumberOfBytes =3D GENET_MAX_PACKET_SIZE; - Status =3D DmaMap (MapOperationBusMasterWrite, - (VOID *)Genet->RxBuffer[DescIndex], - &DmaNumberOfBytes, - &Genet->RxBufferMap[DescIndex].Pa, - &Genet->RxBufferMap[DescIndex].Mapping); - if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "GenetDmaMapRxDescriptor: Failed to map RX bu= ffer: %r\n", Status)); - return Status; - } + DmaNumberOfBytes =3D GENET_MAX_PACKET_SIZE; + Status =3D DmaMap (MapOperationBusMasterWrite, + (VOID *)Genet->RxBuffer[DescIndex], + &DmaNumberOfBytes, + &Genet->RxBufferMap[DescIndex].PhysAddress, + &Genet->RxBufferMap[DescIndex].Mapping); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a: Failed to map RX buffer: %r\n", + __FUNCTION__, Status)); + return Status; + } =20 - //DEBUG ((DEBUG_INFO, "GenetDmaMapRxDescriptor: Desc 0x%X mapped to 0x= %X\n", DescIndex, Genet->RxBufferMap[DescIndex].Pa)); + GenetMmioWrite (Genet, GENET_RX_DESC_ADDRESS_LO (DescIndex), + Genet->RxBufferMap[DescIndex].PhysAddress & 0xFFFFFFFF); + GenetMmioWrite (Genet, GENET_RX_DESC_ADDRESS_HI (DescIndex), + (Genet->RxBufferMap[DescIndex].PhysAddress >> 32) & 0xFFFFFFFF); =20 - GenetMmioWrite (Genet, GENET_RX_DESC_ADDRESS_LO (DescIndex), Genet->Rx= BufferMap[DescIndex].Pa & 0xFFFFFFFF); - GenetMmioWrite (Genet, GENET_RX_DESC_ADDRESS_HI (DescIndex), (Genet->R= xBufferMap[DescIndex].Pa >> 32) & 0xFFFFFFFF); - - return EFI_SUCCESS; + return EFI_SUCCESS; } =20 /** @@ -632,14 +638,14 @@ GenetDmaMapRxDescriptor ( **/ VOID GenetDmaUnmapRxDescriptor ( - IN GENET_PRIVATE_DATA * Genet, - IN UINT8 DescIndex - ) + IN GENET_PRIVATE_DATA * Genet, + IN UINT8 DescIndex + ) { - if (Genet->RxBufferMap[DescIndex].Mapping !=3D NULL) { - DmaUnmap (Genet->RxBufferMap[DescIndex].Mapping); - Genet->RxBufferMap[DescIndex].Mapping =3D NULL; - } + if (Genet->RxBufferMap[DescIndex].Mapping !=3D NULL) { + DmaUnmap (Genet->RxBufferMap[DescIndex].Mapping); + Genet->RxBufferMap[DescIndex].Mapping =3D NULL; + } } =20 /** @@ -651,19 +657,20 @@ GenetDmaUnmapRxDescriptor ( **/ VOID GenetDmaFree ( - IN GENET_PRIVATE_DATA *Genet - ) + IN GENET_PRIVATE_DATA *Genet + ) { - UINTN n; + UINTN Idx; =20 - for (n =3D 0; n < GENET_DMA_DESC_COUNT; n++) { - GenetDmaUnmapRxDescriptor (Genet, n); + for (Idx =3D 0; Idx < GENET_DMA_DESC_COUNT; Idx++) { + GenetDmaUnmapRxDescriptor (Genet, Idx); =20 - if (Genet->RxBuffer[n] !=3D NULL) { - DmaFreeBuffer (EFI_SIZE_TO_PAGES (GENET_MAX_PACKET_SIZE), Gene= t->RxBuffer[n]); - Genet->RxBuffer[n] =3D NULL; - } + if (Genet->RxBuffer[Idx] !=3D NULL) { + DmaFreeBuffer (EFI_SIZE_TO_PAGES (GENET_MAX_PACKET_SIZE), + Genet->RxBuffer[Idx]); + Genet->RxBuffer[Idx] =3D NULL; } + } } =20 /** @@ -677,26 +684,29 @@ GenetDmaFree ( **/ VOID GenetDmaTriggerTx ( - IN GENET_PRIVATE_DATA * Genet, - IN UINT8 DescIndex, - IN EFI_PHYSICAL_ADDRESS PhysAddr, - IN UINTN NumberOfBytes - ) + IN GENET_PRIVATE_DATA * Genet, + IN UINT8 DescIndex, + IN EFI_PHYSICAL_ADDRESS PhysAddr, + IN UINTN NumberOfBytes + ) { - UINT32 DescStatus; - UINT8 Qid =3D GENET_DMA_DEFAULT_QUEUE; + UINT32 DescStatus; + UINT8 Qid =3D GENET_DMA_DEFAULT_QUEUE; =20 - DescStatus =3D GENET_TX_DESC_STATUS_SOP | - GENET_TX_DESC_STATUS_EOP | - GENET_TX_DESC_STATUS_CRC | - GENET_TX_DESC_STATUS_QTAG | - __SHIFTIN(NumberOfBytes, GENET_TX_DESC_STATUS_BUFLEN); + DescStatus =3D GENET_TX_DESC_STATUS_SOP | + GENET_TX_DESC_STATUS_EOP | + GENET_TX_DESC_STATUS_CRC | + GENET_TX_DESC_STATUS_QTAG | + __SHIFTIN(NumberOfBytes, GENET_TX_DESC_STATUS_BUFLEN); =20 - GenetMmioWrite (Genet, GENET_TX_DESC_ADDRESS_LO(DescIndex), PhysAddr &= 0xFFFFFFFF); - GenetMmioWrite (Genet, GENET_TX_DESC_ADDRESS_HI(DescIndex), (PhysAddr = >> 32) & 0xFFFFFFFF); - GenetMmioWrite (Genet, GENET_TX_DESC_STATUS(DescIndex), DescStatus); + GenetMmioWrite (Genet, GENET_TX_DESC_ADDRESS_LO (DescIndex), + PhysAddr & 0xFFFFFFFF); + GenetMmioWrite (Genet, GENET_TX_DESC_ADDRESS_HI (DescIndex), + (PhysAddr >> 32) & 0xFFFFFFFF); + GenetMmioWrite (Genet, GENET_TX_DESC_STATUS (DescIndex), DescStatus); =20 - GenetMmioWrite (Genet, GENET_TX_DMA_PROD_INDEX (Qid), (DescIndex + 1) = & 0xFFFF); + GenetMmioWrite (Genet, GENET_TX_DMA_PROD_INDEX (Qid), + (DescIndex + 1) & 0xFFFF); } =20 /** @@ -708,24 +718,24 @@ GenetDmaTriggerTx ( **/ VOID GenetTxIntr ( - IN GENET_PRIVATE_DATA *Genet, - OUT VOID **TxBuf - ) + IN GENET_PRIVATE_DATA *Genet, + OUT VOID **TxBuf + ) { - UINT32 ConsIndex, Total; - UINT8 Qid =3D GENET_DMA_DEFAULT_QUEUE; + UINT32 ConsIndex, Total; + UINT8 Qid =3D GENET_DMA_DEFAULT_QUEUE; =20 - ConsIndex =3D GenetMmioRead (Genet, GENET_TX_DMA_CONS_INDEX (Qid)) & 0= xFFFF; + ConsIndex =3D GenetMmioRead (Genet, GENET_TX_DMA_CONS_INDEX (Qid)) & 0xF= FFF; =20 - Total =3D (ConsIndex - Genet->TxConsIndex) & 0xFFFF; - if (Genet->TxQueued > 0 && Total > 0) { - *TxBuf =3D Genet->TxBuffer[Genet->TxNext]; - Genet->TxQueued--; - Genet->TxNext =3D (Genet->TxNext + 1) % GENET_DMA_DESC_COUNT; - Genet->TxConsIndex++; - } else { - *TxBuf =3D NULL; - } + Total =3D (ConsIndex - Genet->TxConsIndex) & 0xFFFF; + if (Genet->TxQueued > 0 && Total > 0) { + *TxBuf =3D Genet->TxBuffer[Genet->TxNext]; + Genet->TxQueued--; + Genet->TxNext =3D (Genet->TxNext + 1) % GENET_DMA_DESC_COUNT; + Genet->TxConsIndex++; + } else { + *TxBuf =3D NULL; + } } =20 /** @@ -742,32 +752,30 @@ GenetTxIntr ( **/ EFI_STATUS GenetRxIntr ( - IN GENET_PRIVATE_DATA *Genet, - OUT UINT8 *DescIndex, - OUT UINTN *FrameLength - ) + IN GENET_PRIVATE_DATA *Genet, + OUT UINT8 *DescIndex, + OUT UINTN *FrameLength + ) { - EFI_STATUS Status; - UINT32 ProdIndex, Total; - UINT32 DescStatus; - UINT8 Qid =3D GENET_DMA_DEFAULT_QUEUE; + EFI_STATUS Status; + UINT32 ProdIndex, Total; + UINT32 DescStatus; + UINT8 Qid =3D GENET_DMA_DEFAULT_QUEUE; =20 - ProdIndex =3D GenetMmioRead (Genet, GENET_RX_DMA_PROD_INDEX (Qid)) & 0= xFFFF; + ProdIndex =3D GenetMmioRead (Genet, GENET_RX_DMA_PROD_INDEX (Qid)) & 0xF= FFF; =20 - Total =3D (ProdIndex - Genet->RxConsIndex) & 0xFFFF; - if (Total > 0) { - *DescIndex =3D Genet->RxConsIndex % GENET_DMA_DESC_COUNT; - DescStatus =3D GenetMmioRead (Genet, GENET_RX_DESC_STATUS (*DescIn= dex)); - *FrameLength =3D __SHIFTOUT (DescStatus, GENET_RX_DESC_STATUS_BUFL= EN); + Total =3D (ProdIndex - Genet->RxConsIndex) & 0xFFFF; + if (Total > 0) { + *DescIndex =3D Genet->RxConsIndex % GENET_DMA_DESC_COUNT; + DescStatus =3D GenetMmioRead (Genet, GENET_RX_DESC_STATUS (*DescIndex)= ); + *FrameLength =3D __SHIFTOUT (DescStatus, GENET_RX_DESC_STATUS_BUFLEN); =20 - //DEBUG ((DEBUG_INFO, "GenetRxIntr: DescIndex=3D0x%X FrameLength= =3D0x%X\n", *DescIndex, *FrameLength)); + Genet->RxConsIndex =3D (Genet->RxConsIndex + 1) & 0xFFFF; + GenetMmioWrite (Genet, GENET_RX_DMA_CONS_INDEX (Qid), Genet->RxConsInd= ex); + Status =3D EFI_SUCCESS; + } else { + Status =3D EFI_NOT_READY; + } =20 - Genet->RxConsIndex =3D (Genet->RxConsIndex + 1) & 0xFFFF; - GenetMmioWrite (Genet, GENET_RX_DMA_CONS_INDEX (Qid), Genet->RxCon= sIndex); - Status =3D EFI_SUCCESS; - } else { - Status =3D EFI_NOT_READY; - } - - return Status; + return Status; } diff --git a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/SimpleNetwork.c b/Sil= icon/Broadcom/Drivers/Net/BcmGenetDxe/SimpleNetwork.c index bf28448445d1..951495127ce9 100644 --- a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/SimpleNetwork.c +++ b/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/SimpleNetwork.c @@ -31,7 +31,7 @@ GenetSimpleNetworkStart ( IN EFI_SIMPLE_NETWORK_PROTOCOL *This ) { - GENET_PRIVATE_DATA *Genet; + GENET_PRIVATE_DATA *Genet; =20 if (This =3D=3D NULL) { return EFI_INVALID_PARAMETER; @@ -67,7 +67,7 @@ GenetSimpleNetworkStop ( IN EFI_SIMPLE_NETWORK_PROTOCOL *This ) { - GENET_PRIVATE_DATA *Genet; + GENET_PRIVATE_DATA *Genet; =20 if (This =3D=3D NULL) { return EFI_INVALID_PARAMETER; @@ -194,8 +194,8 @@ GenetSimpleNetworkReset ( IN BOOLEAN ExtendedVerification ) { - GENET_PRIVATE_DATA *Genet; - EFI_STATUS Status; + GENET_PRIVATE_DATA *Genet; + EFI_STATUS Status; =20 if (This =3D=3D NULL) { return EFI_INVALID_PARAMETER; @@ -299,7 +299,7 @@ GenetSimpleNetworkReceiveFilters ( IN EFI_MAC_ADDRESS *MCastFilter OPTIONAL ) { - GENET_PRIVATE_DATA *Genet; + GENET_PRIVATE_DATA *Genet; =20 if (This =3D=3D NULL) { return EFI_INVALID_PARAMETER; @@ -347,7 +347,7 @@ GenetSimpleNetworkStationAddress ( IN EFI_MAC_ADDRESS *New OPTIONAL ) { - GENET_PRIVATE_DATA *Genet; + GENET_PRIVATE_DATA *Genet; =20 if (This =3D=3D NULL || This->Mode =3D=3D NULL) { return EFI_INVALID_PARAMETER; @@ -480,8 +480,8 @@ GenetSimpleNetworkGetStatus ( OUT VOID **TxBuf OPTIONAL ) { - GENET_PRIVATE_DATA *Genet; - EFI_STATUS Status; + GENET_PRIVATE_DATA *Genet; + EFI_STATUS Status; =20 if (This =3D=3D NULL) { return EFI_INVALID_PARAMETER; @@ -555,17 +555,17 @@ GenetSimpleNetworkTransmit ( IN UINT16 *Protocol OPTIONAL ) { - GENET_PRIVATE_DATA *Genet; - EFI_STATUS Status; - UINT8 *Frame =3D Buffer; - UINT8 Desc; - PHYSICAL_ADDRESS DmaDeviceAddress; - UINTN DmaNumberOfBytes; - VOID *DmaMapping; + GENET_PRIVATE_DATA *Genet; + EFI_STATUS Status; + UINT8 *Frame =3D Buffer; + UINT8 Desc; + PHYSICAL_ADDRESS DmaDeviceAddress; + UINTN DmaNumberOfBytes; + VOID *DmaMapping; =20 if (This =3D=3D NULL || Buffer =3D=3D NULL) { - DEBUG ((DEBUG_ERROR, - "GenetSimpleNetworkTransmit: Invalid parameter (missing handle or bu= ffer)\n")); + DEBUG ((DEBUG_ERROR, "%a: Invalid parameter (missing handle or buffer)= \n", + __FUNCTION__)); return EFI_INVALID_PARAMETER; } =20 @@ -587,32 +587,33 @@ GenetSimpleNetworkTransmit ( if (HeaderSize !=3D 0) { if (HeaderSize !=3D Genet->SnpMode.MediaHeaderSize) { DEBUG ((DEBUG_ERROR, - "GenetSimpleNetworkTransmit: Invalid parameter (header size mismat= ch; HeaderSize 0x%X, SnpMode.MediaHeaderSize 0x%X))\n", HeaderSize, Genet->= SnpMode.MediaHeaderSize)); + "%a: Invalid parameter (header size mismatch; HeaderSize 0x%X, Snp= Mode.MediaHeaderSize 0x%X))\n", + __FUNCTION__, HeaderSize, Genet->SnpMode.MediaHeaderSize)); return EFI_INVALID_PARAMETER; } if (DestAddr =3D=3D NULL || Protocol =3D=3D NULL) { DEBUG ((DEBUG_ERROR, - "GenetSimpleNetworkTransmit: Invalid parameter (dest addr or proto= col missing)\n")); + "%a: Invalid parameter (dest addr or protocol missing)\n", + __FUNCTION__)); return EFI_INVALID_PARAMETER; } } =20 if (BufferSize < Genet->SnpMode.MediaHeaderSize) { - DEBUG ((DEBUG_ERROR, "GenetSimpleNetworkTransmit: Buffer too small\n")= ); + DEBUG ((DEBUG_ERROR, "%a: Buffer too small\n", __FUNCTION__)); return EFI_BUFFER_TOO_SMALL; } =20 Status =3D EfiAcquireLockOrFail (&Genet->Lock); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, - "GenetSimpleNetworkTransmit: Couldn't get lock: %r\n", Status)); + DEBUG ((DEBUG_ERROR, "%a: Couldn't get lock: %r\n", __FUNCTION__, Stat= us)); return EFI_ACCESS_DENIED; } =20 if (Genet->TxQueued =3D=3D GENET_DMA_DESC_COUNT - 1) { EfiReleaseLock (&Genet->Lock); =20 - DEBUG ((DEBUG_ERROR, "GenetSimpleNetworkTransmit: Queue full\n")); + DEBUG ((DEBUG_ERROR, "%a: Queue full\n", __FUNCTION__)); return EFI_NOT_READY; } =20 @@ -634,8 +635,7 @@ GenetSimpleNetworkTransmit ( &DmaDeviceAddress, &DmaMapping); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, - "GenetSimpleNetworkTransmit: DmaMap failed: %r\n", Status)); + DEBUG ((DEBUG_ERROR, "%a: DmaMap failed: %r\n", __FUNCTION__, Status)); EfiReleaseLock (&Genet->Lock); return Status; } @@ -703,8 +703,8 @@ GenetSimpleNetworkReceive ( UINTN FrameLength; =20 if (This =3D=3D NULL || Buffer =3D=3D NULL) { - DEBUG ((DEBUG_ERROR, - "GenetSimpleNetworkReceive: Invalid parameter (missing handle or buf= fer)\n")); + DEBUG ((DEBUG_ERROR, "%a: Invalid parameter (missing handle or buffer)= \n", + __FUNCTION__)); return EFI_INVALID_PARAMETER; } =20 @@ -718,8 +718,7 @@ GenetSimpleNetworkReceive ( =20 Status =3D EfiAcquireLockOrFail (&Genet->Lock); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, - "GenetSimpleNetworkReceive: Couldn't get lock: %r\n", Status)); + DEBUG ((DEBUG_ERROR, "%a: Couldn't get lock: %r\n", __FUNCTION__, Stat= us)); return EFI_ACCESS_DENIED; } =20 @@ -742,12 +741,12 @@ GenetSimpleNetworkReceive ( =20 if (*BufferSize < FrameLength) { DEBUG ((DEBUG_ERROR, - "GenetSimpleNetworkReceive: Buffer size (0x%X) is too small for fr= ame (0x%X)\n", - *BufferSize, FrameLength)); + "%a: Buffer size (0x%X) is too small for frame (0x%X)\n", + __FUNCTION__, *BufferSize, FrameLength)); Status =3D GenetDmaMapRxDescriptor (Genet, DescIndex); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, - "GenetSimpleNetworkReceive: Failed to remap RX descriptor!\n")); + DEBUG ((DEBUG_ERROR, "%a: Failed to remap RX descriptor!\n", + __FUNCTION__)); } EfiReleaseLock (&Genet->Lock); return EFI_BUFFER_TOO_SMALL; @@ -771,16 +770,14 @@ GenetSimpleNetworkReceive ( =20 Status =3D EFI_SUCCESS; } else { - DEBUG ((DEBUG_ERROR, - "GenetSimpleNetworkReceive: Short packet (FrameLength 0x%X)", - FrameLength)); + DEBUG ((DEBUG_ERROR, "%a: Short packet (FrameLength 0x%X)", + __FUNCTION__, FrameLength)); Status =3D EFI_NOT_READY; } =20 Status =3D GenetDmaMapRxDescriptor (Genet, DescIndex); if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, - "GenetSimpleNetworkReceive: Failed to remap RX descriptor!\n")); + DEBUG ((DEBUG_ERROR, "%a: Failed to remap RX descriptor!\n", __FUNCTIO= N__)); } =20 EfiReleaseLock (&Genet->Lock); @@ -791,12 +788,12 @@ GenetSimpleNetworkReceive ( This function converts a multicast IP address to a multicast HW MAC addr= ess for all packet transactions. =20 - @param [in] pSimpleNetwork Protocol instance pointer - @param [in] bIPv6 Set to TRUE if the multicast IP address is= IPv6 [RFC2460]. + @param [in] SimpleNetwork Protocol instance pointer + @param [in] IPv6 Set to TRUE if the multicast IP address is= IPv6 [RFC2460]. Set to FALSE if the multicast IP address i= s IPv4 [RFC 791]. - @param [in] pIP The multicast IP address that is to be con= verted to a + @param [in] IP The multicast IP address that is to be con= verted to a multicast HW MAC address. - @param [in] pMAC The multicast HW MAC address that is to be= generated from IP. + @param [in] MAC The multicast HW MAC address that is to be= generated from IP. =20 @retval EFI_SUCCESS This operation was successful. @retval EFI_NOT_STARTED The network interface was not started. @@ -810,10 +807,10 @@ STATIC EFI_STATUS EFIAPI GenetSimpleNetworkMCastIPtoMAC ( - IN EFI_SIMPLE_NETWORK_PROTOCOL *pSimpleNetwork, - IN BOOLEAN bIPv6, - IN EFI_IP_ADDRESS *pIP, - OUT EFI_MAC_ADDRESS *pMAC + IN EFI_SIMPLE_NETWORK_PROTOCOL *SimpleNetwork, + IN BOOLEAN IPv6, + IN EFI_IP_ADDRESS *IP, + OUT EFI_MAC_ADDRESS *MAC ) { return EFI_UNSUPPORTED; @@ -822,7 +819,6 @@ GenetSimpleNetworkMCastIPtoMAC ( /// /// Simple Network Protocol instance /// -GLOBAL_REMOVE_IF_UNREFERENCED CONST EFI_SIMPLE_NETWORK_PROTOCOL gGenetSimpleNetworkTemplate =3D { EFI_SIMPLE_NETWORK_PROTOCOL_REVISION, // Revision GenetSimpleNetworkStart, // Start --=20 2.17.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 (#59083): https://edk2.groups.io/g/devel/message/59083 Mute This Topic: https://groups.io/mt/74137444/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- From nobody Wed May 1 22:22:26 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+59084+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+59084+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1589208945; cv=none; d=zohomail.com; s=zohoarc; b=Q+r1maarUTriyVXnWrAHjvvAudEJO+OC718Qokv7IQlfQzy6cQime2XPN2VexPypEASPyZCSHbTjNyUYIvCcMZ1Lf0ZfhFd/AyZh75lM2lk7YkqpKkriHY12Y7OFIFZVuxjFsBEBygJETTY6Evpi2Fqx/hlCE0274XFtL0ipLWw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589208945; h=Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=/FAJjLEIGNtcLETdQlO+REniFFQ4fvtcDqMew2wFp5Y=; b=cRRhVJ38c1fqXusU5cO+bwmkj3tsorYUAiB9tem4LU8AYVlIm2UQPgAxxFNIWS4ceFPbHo7yKzu/zPnUjCOu6QASMtfBSngbrNFZbAE08YmhmUFa3DDfqfRCOre4HDBHHCcubhqMueaDip7RPirJYAlc8MNIvp+moen/S3RaeEc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+59084+1787277+3901457@groups.io Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 158920894532719.37417332883615; Mon, 11 May 2020 07:55:45 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id vRXwYY1788612xmJLJtmntzb; Mon, 11 May 2020 07:55:45 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web11.13647.1589208944335470922 for ; Mon, 11 May 2020 07:55:44 -0700 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 0729ED6E; Mon, 11 May 2020 07:55:43 -0700 (PDT) X-Received: from e123331-lin.nice.arm.com (unknown [10.37.8.255]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 7A3873F68F; Mon, 11 May 2020 07:55:41 -0700 (PDT) From: "Ard Biesheuvel" To: devel@edk2.groups.io Cc: Ard Biesheuvel , Pete Batard , Jared McNeill , Andrei Warkentin , Samer El-Haj-Mahmoud , Jeremy Linton Subject: [edk2-devel] [PATCH edk2-platforms v4 2/9] Silicon/Broadcom/BcmGenetDxe: add support for broadcast filtering Date: Mon, 11 May 2020 16:55:20 +0200 Message-Id: <20200511145527.23453-3-ard.biesheuvel@arm.com> In-Reply-To: <20200511145527.23453-1-ard.biesheuvel@arm.com> References: <20200511145527.23453-1-ard.biesheuvel@arm.com> Precedence: Bulk List-Unsubscribe: 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,ard.biesheuvel@arm.com X-Gm-Message-State: fpkwPsXFBpD3bjQm6zjjc35Ux1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1589208945; bh=LPtnikaacjjqkumGnb6a5aZM8O2cBzvERlQBNojMiVU=; h=Cc:Date:From:Reply-To:Subject:To; b=FhzP7y+EqhGofvBVIWM9suZOHe8zZcio2ef+wM+/soRhdLKECqnsdnDVa5UmT0zGFLr bAh8920aptb+U895U4rgCMnG80nbmbfTvHC5Hm+usDsZbPtvgUQm3xgaK2SL5UPAl9hS6 wgf6svQFaDVP/zdJ/IyCyvfRVsHb8eA1pNo= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Add a helper to configure the first MDF filter for filtering the broadcast Ethernet address. Signed-off-by: Ard Biesheuvel Reviewed-by: Andrei Warkentin Reviewed-by: Jeremy Linton --- Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.h | 7 +++++ Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.c | 33 ++++++++++++++++= ++++ 2 files changed, 40 insertions(+) diff --git a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.h b/Silicon= /Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.h index b21a284b6221..b491ea4665b0 100644 --- a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.h +++ b/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.h @@ -107,6 +107,7 @@ #define GENET_UMAC_MDF_CTRL 0xe50 #define GENET_UMAC_MDF_ADDR0(n) (0xe54 + (n) * 0x8) #define GENET_UMAC_MDF_ADDR1(n) (0xe58 + (n) * 0x8) +#define GENET_MAX_MDF_FILTER 17 =20 #define GENET_DMA_DESC_COUNT 256 #define GENET_DMA_DESC_SIZE 12 @@ -300,6 +301,12 @@ GenetSetPromisc ( IN BOOLEAN Enable ); =20 +VOID +GenetEnableBroadcastFilter ( + IN GENET_PRIVATE_DATA *Genet, + IN BOOLEAN Enable + ); + VOID GenetDmaInitRings ( IN GENET_PRIVATE_DATA *Genet diff --git a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.c b/Silicon= /Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.c index 7ae9acec4c78..71c659e7f882 100644 --- a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.c +++ b/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.c @@ -492,6 +492,39 @@ GenetSetPromisc ( GenetMmioWrite (Genet, GENET_UMAC_CMD, Value); } =20 +/** + Enable the MAC filter for the Ethernet broadcast address + + @param Genet[in] Pointer to GENET_PRIVATE_DATA. + @param Enable[in] Promiscuous mode state. + +**/ +VOID +GenetEnableBroadcastFilter ( + IN GENET_PRIVATE_DATA *Genet, + IN BOOLEAN Enable + ) +{ + CONST EFI_MAC_ADDRESS *MacAddr =3D &Genet->SnpMode.CurrentAddress; + UINT32 Value; + + if (Enable) { + GenetMmioWrite (Genet, GENET_UMAC_MDF_ADDR0 (0), + MacAddr->Addr[1] | MacAddr->Addr[0] << 8); + GenetMmioWrite (Genet, GENET_UMAC_MDF_ADDR1 (0), + MacAddr->Addr[5] | MacAddr->Addr[4] << 8 | + MacAddr->Addr[3] << 16 | MacAddr->Addr[2] << 24); + + GenetMmioWrite (Genet, GENET_UMAC_MDF_ADDR0 (1), 0xffff); + GenetMmioWrite (Genet, GENET_UMAC_MDF_ADDR1 (1), 0xffffffff); + + Value =3D (1U << GENET_MAX_MDF_FILTER) & ~(BIT1 | BIT0); + } else { + Value =3D 0; + } + GenetMmioWrite (Genet, GENET_UMAC_MDF_CTRL, Value); +} + /** Configure DMA TX and RX queues, enabling them. =20 --=20 2.17.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 (#59084): https://edk2.groups.io/g/devel/message/59084 Mute This Topic: https://groups.io/mt/74137445/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- From nobody Wed May 1 22:22:26 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+59085+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+59085+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1589208947; cv=none; d=zohomail.com; s=zohoarc; b=LvlgJH2u3XsVbFB7Kubf5zniCFYCRRdmBmjLGoBQ/y+hHiUtQ3eXlYBUG0jNNxQUY37bQHU04xAqIssrGnTRtP63e6YAAF832D4B/Gj1b/M9wm4o55ezgP7+pPhtNxEsv0MjJ1nat2cwq/NB4tLe3WPtRkPQhsQDz5bEcE+g/30= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589208947; h=Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=GH6WB/IMUDTPE6jtormzyzZZmlm5+PMBsRQIs/ZWQCA=; b=l7P/zK08GWkKNxVR6KlPiEn8sGecoqw6iG6MyldX+ENFK5Task2Ell+xak+3dtoFKDeiLwqS4e2X2wK38/UfRn0f2J+4M6PfAWCpjMOZM1w/fgWp9WCrzfUYP4ZmsY6YZiGltzzHF3OxYMf949HeuXbPaQGVe8flrmVNKYkg298= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+59085+1787277+3901457@groups.io Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 15892089474864.4605972964689045; Mon, 11 May 2020 07:55:47 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id 6iUSYY1788612xH1XTfOgEto; Mon, 11 May 2020 07:55:47 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web12.13634.1589208946553258973 for ; Mon, 11 May 2020 07:55:46 -0700 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id DB0BA1045; Mon, 11 May 2020 07:55:44 -0700 (PDT) X-Received: from e123331-lin.nice.arm.com (unknown [10.37.8.255]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 595ED3F68F; Mon, 11 May 2020 07:55:43 -0700 (PDT) From: "Ard Biesheuvel" To: devel@edk2.groups.io Cc: Ard Biesheuvel , Pete Batard , Jared McNeill , Andrei Warkentin , Samer El-Haj-Mahmoud , Jeremy Linton Subject: [edk2-devel] [PATCH edk2-platforms v4 3/9] Silicon/Broadcom/BcmGenetDxe: fix multicast/broadcast handling Date: Mon, 11 May 2020 16:55:21 +0200 Message-Id: <20200511145527.23453-4-ard.biesheuvel@arm.com> In-Reply-To: <20200511145527.23453-1-ard.biesheuvel@arm.com> References: <20200511145527.23453-1-ard.biesheuvel@arm.com> Precedence: Bulk List-Unsubscribe: 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,ard.biesheuvel@arm.com X-Gm-Message-State: 7vHaYkdP9vsDO2Ree59Qn6oix1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1589208947; bh=FpAH+9aFtbtoCUxLv3Vxg+J3hzQ7q6sFbbhwwJ5Zoo8=; h=Cc:Date:From:Reply-To:Subject:To; b=JFQSSY4d2Cg4yu9vjKQ5uFysduxSdNArKwd8KqiqbuprFFPHC5mIJSvQ0bL6ZJLQ4og d35SVAtnRNTEOJIoM9GM8Q6Luj8WxHCPSHBVsjR0dfgqqn8OmqUipSFs65ANIYRURYDWD 1BsgGAoiyCRa+XZBViKVVax6nGpLRJQd+xI= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Move the handling of the promiscuous receive control to the SNP ReceiveFilters() method where it belongs. Given that we do not support multicast filtering, only minimal handling is required to test the promiscuous bit and program the MAC accordingly. Any multicast handling will be done by the MNP layer above it. For reception of broadcast frames, wire up the new helper that programs the MDF filter bank accordingly. Signed-off-by: Ard Biesheuvel Reviewed-by: Jeremy Linton --- Silicon/Broadcom/Drivers/Net/BcmGenetDxe/DriverBinding.c | 7 +++---- Silicon/Broadcom/Drivers/Net/BcmGenetDxe/SimpleNetwork.c | 20 +++++++++---= -------- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/DriverBinding.c b/Sil= icon/Broadcom/Drivers/Net/BcmGenetDxe/DriverBinding.c index c23847ba9b52..dacb3ac7d762 100644 --- a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/DriverBinding.c +++ b/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/DriverBinding.c @@ -152,11 +152,10 @@ GenetDriverBindingStart ( Genet->SnpMode.NvRamSize =3D 0; Genet->SnpMode.NvRamAccessSize =3D 0; Genet->SnpMode.ReceiveFilterMask =3D EFI_SIMPLE_NETWORK_RECEIVE_UNI= CAST | - EFI_SIMPLE_NETWORK_RECEIVE_MULTI= CAST | EFI_SIMPLE_NETWORK_RECEIVE_BROAD= CAST | - EFI_SIMPLE_NETWORK_RECEIVE_PROMI= SCUOUS | - EFI_SIMPLE_NETWORK_RECEIVE_PROMI= SCUOUS_MULTICAST; - Genet->SnpMode.ReceiveFilterSetting =3D Genet->SnpMode.ReceiveFilterMa= sk; + EFI_SIMPLE_NETWORK_RECEIVE_PROMI= SCUOUS; + Genet->SnpMode.ReceiveFilterSetting =3D EFI_SIMPLE_NETWORK_RECEIVE_UNI= CAST | + EFI_SIMPLE_NETWORK_RECEIVE_BROAD= CAST; Genet->SnpMode.MaxMCastFilterCount =3D 0; Genet->SnpMode.MCastFilterCount =3D 0; Genet->SnpMode.IfType =3D NET_IFTYPE_ETHERNET; diff --git a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/SimpleNetwork.c b/Sil= icon/Broadcom/Drivers/Net/BcmGenetDxe/SimpleNetwork.c index 951495127ce9..72ab55619b0e 100644 --- a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/SimpleNetwork.c +++ b/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/SimpleNetwork.c @@ -148,10 +148,6 @@ GenetSimpleNetworkInitialize ( } =20 GenetSetMacAddress (Genet, &Genet->SnpMode.CurrentAddress); - /* - * TODO: this belongs in GenetSimpleNetworkReceiveFilters, not here. - */ - GenetSetPromisc (Genet, TRUE); =20 GenetDmaInitRings (Genet); =20 @@ -306,6 +302,10 @@ GenetSimpleNetworkReceiveFilters ( } =20 Genet =3D GENET_PRIVATE_DATA_FROM_SNP_THIS (This); + if (((Enable | Disable) & ~Genet->SnpMode.ReceiveFilterMask) !=3D 0 || + (!ResetMCastFilter && MCastFilterCnt > Genet->SnpMode.MaxMCastFilter= Count)) { + return EFI_INVALID_PARAMETER; + } if (Genet->SnpMode.State =3D=3D EfiSimpleNetworkStopped) { return EFI_NOT_STARTED; } @@ -313,13 +313,11 @@ GenetSimpleNetworkReceiveFilters ( return EFI_DEVICE_ERROR; } =20 - // - // Can't actually return EFI_UNSUPPORTED, so just ignore the filters - // (we set promiscuous mode ON inside GenetSimpleNetworkInitialize). - // - // TODO: move promisc handling here. - // TODO 2: support multicast/broadcast. - // + GenetEnableBroadcastFilter (Genet, + (Enable & ~Disable & EFI_SIMPLE_NETWORK_RECEIVE_BROADCAST) !=3D 0); + + GenetSetPromisc (Genet, + (Enable & ~Disable & EFI_SIMPLE_NETWORK_RECEIVE_PROMISCUOUS) !=3D 0); =20 return EFI_SUCCESS; } --=20 2.17.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 (#59085): https://edk2.groups.io/g/devel/message/59085 Mute This Topic: https://groups.io/mt/74137447/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- From nobody Wed May 1 22:22:26 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+59086+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+59086+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1589208948; cv=none; d=zohomail.com; s=zohoarc; b=fkz9dXaS8aWxrPsJy9lzhwsvdzSSFalTT1FKEztEzEOYUIIet/kAJGU+U9qND5wkhR9ugrPa+oEbeFarKxc9eiDKPgsdACklJ/VN1V/pM2QpWs1qEhPXt/TDqnBY6T92EsBEddB/evvbV2AMAJxisipd3LECDDgy9ItCXvZrPQU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589208948; h=Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=nEtMEWNdH4vpzVgmUqFUkYtYGPxA7cwymGD4veSInMQ=; b=UnUHTfWpCnxnLuZAULVxaIhbo+OtTAdyUjnyfKr7xpEx0dtASC9g+5bC88tXi2E9Fd4GQmXslnVJDhhsAf5ATq21v7fJErB+OSrry9bFnRL1RJspiiXrtwrGDrvTjW0xcVsviXvW+yiQXbyJxwXkbzSDSXc9n/AsG2+OEfFODxM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+59086+1787277+3901457@groups.io Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1589208948233261.0867375116069; Mon, 11 May 2020 07:55:48 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id BJqEYY1788612xcNa05HjMeE; Mon, 11 May 2020 07:55:47 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web11.13648.1589208947075495060 for ; Mon, 11 May 2020 07:55:47 -0700 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id B8594D6E; Mon, 11 May 2020 07:55:46 -0700 (PDT) X-Received: from e123331-lin.nice.arm.com (unknown [10.37.8.255]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 3785C3F68F; Mon, 11 May 2020 07:55:45 -0700 (PDT) From: "Ard Biesheuvel" To: devel@edk2.groups.io Cc: Ard Biesheuvel , Pete Batard , Jared McNeill , Andrei Warkentin , Samer El-Haj-Mahmoud , Jeremy Linton Subject: [edk2-devel] [PATCH edk2-platforms v4 4/9] Silicon/Broadcom/BcmGenetDxe: avoid uncached memory for streaming DMA Date: Mon, 11 May 2020 16:55:22 +0200 Message-Id: <20200511145527.23453-5-ard.biesheuvel@arm.com> In-Reply-To: <20200511145527.23453-1-ard.biesheuvel@arm.com> References: <20200511145527.23453-1-ard.biesheuvel@arm.com> Precedence: Bulk List-Unsubscribe: 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,ard.biesheuvel@arm.com X-Gm-Message-State: adOGdzFFSBh9FYSchxDcH3k3x1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1589208947; bh=sj51PBq1UzNPYJYSBAz5kBUQyEi95UhYXyfFF13HUvA=; h=Cc:Date:From:Reply-To:Subject:To; b=EbM/2wVXMBIUNe6V143i/T15rCXz8MoSmfqyigs1bz3TJ8Jgk5e6FhLZVuIm7w9uHzC WPvkyAfzHyQH0dFtV0ruG/sEhHgqnKqLWP7AwrhP7hW4XvxlUjpeLDva7KatBD0snDwde WjwvJ1lW/MFV80LvtekOI769iTWEngGmVSw= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The non-coherent version of DmaAllocateBuffer () returns uncached memory, to ensure that the CPU and the device see the same data, even we they are accessing the buffer at the same time. This is not really necessary for our RX ring: the CPU never accesses the buffer while it is mapped for writing by the device, and so we can simply use the streaming DMA model, which uses ordinary cached buffers, but issues a cache invalidate at DMA unmap time. While at it, reduce the max packet size to 1536 bytes, and allocate the entire buffer array using a single call. Signed-off-by: Ard Biesheuvel Reviewed-by: Andrei Warkentin Reviewed-by: Jeremy Linton --- Silicon/Broadcom/Drivers/Net/BcmGenetDxe/BcmGenetDxe.inf | 4 +++ Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.h | 6 ++-- Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.c | 36 +++++++++---= -------- Silicon/Broadcom/Drivers/Net/BcmGenetDxe/SimpleNetwork.c | 2 +- 4 files changed, 26 insertions(+), 22 deletions(-) diff --git a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/BcmGenetDxe.inf b/Sil= icon/Broadcom/Drivers/Net/BcmGenetDxe/BcmGenetDxe.inf index 1f1aeca7dd6b..248164249c6e 100644 --- a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/BcmGenetDxe.inf +++ b/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/BcmGenetDxe.inf @@ -51,3 +51,7 @@ [Protocols] gBcmGenetPlatformDeviceProtocolGuid ## TO_START gEfiDevicePathProtocolGuid ## BY_START gEfiSimpleNetworkProtocolGuid ## BY_START + +[FixedPcd] + gEmbeddedTokenSpaceGuid.PcdDmaDeviceOffset + gEmbeddedTokenSpaceGuid.PcdDmaDeviceLimit diff --git a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.h b/Silicon= /Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.h index b491ea4665b0..ddfbc0806c07 100644 --- a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.h +++ b/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.h @@ -50,7 +50,7 @@ #define BRGPHY_SHADOW_1C_GTXCLK_EN 0x0200 =20 #define GENET_VERSION 0x0a -#define GENET_MAX_PACKET_SIZE 2048 +#define GENET_MAX_PACKET_SIZE 1536 =20 #define GENET_SYS_REV_CTRL 0x000 #define SYS_REV_MAJOR (BIT27|BIT26|BIT25|BIT24) @@ -217,7 +217,7 @@ typedef struct { UINT16 TxConsIndex; UINT16 TxProdIndex; =20 - UINT8 *RxBuffer[GENET_DMA_DESC_COUNT]; + EFI_PHYSICAL_ADDRESS RxBuffer; GENET_MAP_INFO RxBufferMap[GENET_DMA_DESC_COUNT]; UINT16 RxConsIndex; UINT16 RxProdIndex; @@ -235,6 +235,8 @@ extern CONST EFI_SIMPLE_NETWORK_PROTOCOL gGenetSim= pleNetworkTemplate; #define GENET_DRIVER_SIGNATURE SIGNATURE_32('G', 'N', 'E', = 'T') #define GENET_PRIVATE_DATA_FROM_SNP_THIS(a) CR(a, GENET_PRIVATE_DATA, Sn= p, GENET_DRIVER_SIGNATURE) =20 +#define GENET_RX_BUFFER(g, idx) ((UINT8 *)(UINTN)(g)->RxBuff= er + GENET_MAX_PACKET_SIZE * (idx)) + EFI_STATUS EFIAPI GenetPhyRead ( diff --git a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.c b/Silicon= /Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.c index 71c659e7f882..94b578a10aa1 100644 --- a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.c +++ b/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.c @@ -19,6 +19,10 @@ =20 #define GENET_PHY_RETRY 1000 =20 +STATIC CONST +EFI_PHYSICAL_ADDRESS mDmaAddressLimit =3D FixedPcdGet64 (PcdDmaDeviceLim= it) - + FixedPcdGet64 (PcdDmaDeviceOffse= t); + /** Read a memory-mapped device CSR. =20 @@ -605,19 +609,17 @@ GenetDmaAlloc ( IN GENET_PRIVATE_DATA *Genet ) { - EFI_STATUS Status; - UINTN Idx; + EFI_STATUS Status; =20 - for (Idx =3D 0; Idx < GENET_DMA_DESC_COUNT; Idx++) { - Status =3D DmaAllocateBuffer (EfiBootServicesData, EFI_SIZE_TO_PAGES (= GENET_MAX_PACKET_SIZE), (VOID **)&Genet->RxBuffer[Idx]); - if (EFI_ERROR (Status)) { - DEBUG ((DEBUG_ERROR, "%a: Failed to allocate RX buffer: %r\n", __FUN= CTION__, Status)); - GenetDmaFree (Genet); - return Status; - } + Genet->RxBuffer =3D mDmaAddressLimit; + Status =3D gBS->AllocatePages (AllocateMaxAddress, EfiBootServicesData, + EFI_SIZE_TO_PAGES (GENET_MAX_PACKET_SIZE * GENET_DMA_DES= C_COUNT), + &Genet->RxBuffer); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, + "%a: Failed to allocate RX buffer: %r\n", __FUNCTION__, Status)); } - - return EFI_SUCCESS; + return Status; } =20 /** @@ -640,11 +642,11 @@ GenetDmaMapRxDescriptor ( UINTN DmaNumberOfBytes; =20 ASSERT (Genet->RxBufferMap[DescIndex].Mapping =3D=3D NULL); - ASSERT (Genet->RxBuffer[DescIndex] !=3D NULL); + ASSERT (Genet->RxBuffer !=3D 0); =20 DmaNumberOfBytes =3D GENET_MAX_PACKET_SIZE; Status =3D DmaMap (MapOperationBusMasterWrite, - (VOID *)Genet->RxBuffer[DescIndex], + GENET_RX_BUFFER (Genet, DescIndex), &DmaNumberOfBytes, &Genet->RxBufferMap[DescIndex].PhysAddress, &Genet->RxBufferMap[DescIndex].Mapping); @@ -697,13 +699,9 @@ GenetDmaFree ( =20 for (Idx =3D 0; Idx < GENET_DMA_DESC_COUNT; Idx++) { GenetDmaUnmapRxDescriptor (Genet, Idx); - - if (Genet->RxBuffer[Idx] !=3D NULL) { - DmaFreeBuffer (EFI_SIZE_TO_PAGES (GENET_MAX_PACKET_SIZE), - Genet->RxBuffer[Idx]); - Genet->RxBuffer[Idx] =3D NULL; - } } + gBS->FreePages (Genet->RxBuffer, + EFI_SIZE_TO_PAGES (GENET_MAX_PACKET_SIZE * GENET_DMA_DESC_COUNT)); } =20 /** diff --git a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/SimpleNetwork.c b/Sil= icon/Broadcom/Drivers/Net/BcmGenetDxe/SimpleNetwork.c index 72ab55619b0e..9746f210d1f2 100644 --- a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/SimpleNetwork.c +++ b/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/SimpleNetwork.c @@ -730,7 +730,7 @@ GenetSimpleNetworkReceive ( =20 GenetDmaUnmapRxDescriptor (Genet, DescIndex); =20 - Frame =3D Genet->RxBuffer[DescIndex]; + Frame =3D GENET_RX_BUFFER (Genet, DescIndex); =20 if (FrameLength > 2 + Genet->SnpMode.MediaHeaderSize) { // Received frame has 2 bytes of padding at the start --=20 2.17.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 (#59086): https://edk2.groups.io/g/devel/message/59086 Mute This Topic: https://groups.io/mt/74137448/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- From nobody Wed May 1 22:22:26 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+59087+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+59087+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1589208950; cv=none; d=zohomail.com; s=zohoarc; b=dG5AmhQRGRhxQcPgqBCLN4ASEb+OozqL5eZ88DQMwpW0qAqvGmfjWZlmddKuYOBZ/my7pQaXKCOT2MiJmiUBAj4++RwD9wlHYOulMmwM2CFGsyjjigsj/m0rkRIJDM8oHGwMvKQUOQq1rkeEsxQoqnmW6Es2N2fGH+rGZqlK9w0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589208950; h=Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=CseuGPE+YHgY3+Pv/m2DCt19zXvz+cZW/g3FNaW0Hjg=; b=BATFbe1Uq5kH9RZ4f4UIzXj+PUUE7Q5YgAwqCxuOYfKqCIgJFs3Vgv9okTKXenMw3wtSy1DUqiUvAkxloSUiDZdLwruh5MTO8IY0DulQ/lRCrXktNINFobDAC/HCL6eYD0U/uDafX6OLYq0DmlZTy+CQb81bk9mSlRR1WZZTZqA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+59087+1787277+3901457@groups.io Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1589208950064955.817773375599; Mon, 11 May 2020 07:55:50 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id q30xYY1788612xMmZikQ2I0H; Mon, 11 May 2020 07:55:49 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web12.13637.1589208948960819546 for ; Mon, 11 May 2020 07:55:49 -0700 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 96FC41045; Mon, 11 May 2020 07:55:48 -0700 (PDT) X-Received: from e123331-lin.nice.arm.com (unknown [10.37.8.255]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 162423F68F; Mon, 11 May 2020 07:55:46 -0700 (PDT) From: "Ard Biesheuvel" To: devel@edk2.groups.io Cc: Ard Biesheuvel , Pete Batard , Jared McNeill , Andrei Warkentin , Samer El-Haj-Mahmoud , Jeremy Linton Subject: [edk2-devel] [PATCH edk2-platforms v4 5/9] Silicon/Broadcom/BcmGenetDxe: shut down devices on ExitBootServices() Date: Mon, 11 May 2020 16:55:23 +0200 Message-Id: <20200511145527.23453-6-ard.biesheuvel@arm.com> In-Reply-To: <20200511145527.23453-1-ard.biesheuvel@arm.com> References: <20200511145527.23453-1-ard.biesheuvel@arm.com> Precedence: Bulk List-Unsubscribe: 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,ard.biesheuvel@arm.com X-Gm-Message-State: ve9Dz3SZB920IMTTWi1VbDWmx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1589208949; bh=lK/pQAWQjx+W2ZPl1Cg+7Of8qIjwA8q+ELkrbzr9Si8=; h=Cc:Date:From:Reply-To:Subject:To; b=dyIaego8A9jefGo3vtNJQU6dkmr2VvhnwMdBsqiaKNmpMes7wK67STbYPfN7eLxkLnf oMiIjhhxLdjtvHXiOSzPtI7lhKvzxJrgqaLPcsZeUKEOpxw4tpYbxk+GMWzxu3QOjtYnr 954D3vPe+RI9urzLkfBhdePgD6084i06Rxk= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" When the OS takes over the machine, it calls ExitBootServices() in order to shut down all resident services and event notifications so that all asynchronous activity is stopped. At this point, any DMA masters that are still active should be shut down. This is especially important for network controllers, since any activity on the network will trigger DMA writes into memory, which will no longer be reserved for this purpose once the OS takes over. So register for the ExitBootServices event, and shut down the controller at this point if it was started before. Signed-off-by: Ard Biesheuvel Reviewed-by: Andrei Warkentin Reviewed-by: Jeremy Linton --- Silicon/Broadcom/Drivers/Net/BcmGenetDxe/BcmGenetDxe.inf | 4 +++ Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.h | 1 + Silicon/Broadcom/Drivers/Net/BcmGenetDxe/DriverBinding.c | 35 ++++++++++++= +++++++- 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/BcmGenetDxe.inf b/Sil= icon/Broadcom/Drivers/Net/BcmGenetDxe/BcmGenetDxe.inf index 248164249c6e..9b3dc5e62ecf 100644 --- a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/BcmGenetDxe.inf +++ b/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/BcmGenetDxe.inf @@ -44,6 +44,7 @@ [LibraryClasses] IoLib MemoryAllocationLib NetLib + UefiBootServicesTableLib UefiDriverEntryPoint UefiLib =20 @@ -52,6 +53,9 @@ [Protocols] gEfiDevicePathProtocolGuid ## BY_START gEfiSimpleNetworkProtocolGuid ## BY_START =20 +[Guids] + gEfiEventExitBootServicesGuid + [FixedPcd] gEmbeddedTokenSpaceGuid.PcdDmaDeviceOffset gEmbeddedTokenSpaceGuid.PcdDmaDeviceLimit diff --git a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.h b/Silicon= /Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.h index ddfbc0806c07..c43bdbe1d6da 100644 --- a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.h +++ b/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.h @@ -203,6 +203,7 @@ typedef struct { EFI_HANDLE ControllerHandle; =20 EFI_LOCK Lock; + EFI_EVENT ExitBootServicesEvent; =20 EFI_SIMPLE_NETWORK_PROTOCOL Snp; EFI_SIMPLE_NETWORK_MODE SnpMode; diff --git a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/DriverBinding.c b/Sil= icon/Broadcom/Drivers/Net/BcmGenetDxe/DriverBinding.c index dacb3ac7d762..00fbfbc109bb 100644 --- a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/DriverBinding.c +++ b/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/DriverBinding.c @@ -74,6 +74,23 @@ GenetDriverBindingSupported ( return EFI_SUCCESS; } =20 +/** + Callback function to shut down the network device at ExitBootServices + + @param Event Pointer to this event + @param Context Event handler private data + +**/ +STATIC +VOID +EFIAPI +GenetNotifyExitBootServices ( + EFI_EVENT Event, + VOID *Context + ) +{ + GenetDisableTxRx ((GENET_PRIVATE_DATA *)Context); +} =20 /** Starts a device controller or a bus controller. @@ -171,6 +188,17 @@ GenetDriverBindingStart ( CopyMem (&Genet->SnpMode.CurrentAddress, &Genet->Dev->MacAddress, sizeof(EFI_MAC_ADDRESS)); =20 + Status =3D gBS->CreateEventEx (EVT_NOTIFY_SIGNAL, TPL_CALLBACK, + GenetNotifyExitBootServices, Genet, + &gEfiEventExitBootServicesGuid, + &Genet->ExitBootServicesEvent); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_WARN, + "GenetDriverBindingStart: failed to register for ExitBootServices ev= ent - %r\n", + Status)); + goto FreeDevice; + } + Status =3D gBS->InstallMultipleProtocolInterfaces (&ControllerHandle, &gEfiSimpleNetworkProtocolGuid, &Genet->Snp, NULL); @@ -182,12 +210,14 @@ GenetDriverBindingStart ( &gBcmGenetPlatformDeviceProtocolGuid, This->DriverBindingHandle, ControllerHandle); - goto FreeDevice; + goto FreeEvent; } =20 Genet->ControllerHandle =3D ControllerHandle; return EFI_SUCCESS; =20 +FreeEvent: + gBS->CloseEvent (Genet->ExitBootServicesEvent); FreeDevice: DEBUG ((DEBUG_WARN, "%a: Returning %r\n", __FUNCTION__, Status)); FreePool (Genet); @@ -248,6 +278,9 @@ GenetDriverBindingStop ( return Status; } =20 + Status =3D gBS->CloseEvent (Genet->ExitBootServicesEvent); + ASSERT_EFI_ERROR (Status); + GenetDmaFree (Genet); =20 Status =3D gBS->CloseProtocol (ControllerHandle, --=20 2.17.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 (#59087): https://edk2.groups.io/g/devel/message/59087 Mute This Topic: https://groups.io/mt/74137449/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- From nobody Wed May 1 22:22:26 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+59088+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+59088+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1589208951; cv=none; d=zohomail.com; s=zohoarc; b=aOwm8XPAuDEWhTx5xVaXf80k+uaFfi61A/h9Gul8Yt1rG5/Xo+HMREYBWYDuJXwEJKxMRnc7h9tv93cHu0Rv9jW/FC5PjU6Wf5sMQJW8gwMn+g7+Z4T9I6uGii7Qwm36wpU/TfGs8QIZNdpBZcU2dHDXe18NzI8P/ZQaakEOM5M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589208951; h=Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=UucEi0tr8TbM9syZ/YGhsjJSYt0kmshm9JJDBjPj46A=; b=Ki0npKIs8R5Vk7EoVNeNjHf0/sQl/EISZb2GcCP6N3JtjQxBcF4IvyxnAYSgEuXNkfWlCAQbMiQslUTtnFEiEAt1J9g928px7RsgNJViI5+StrWRdvlnP0EJ1vjVqCTAvIYptLXpLnVFxavSqgd1fZUq4fwu/R/11dGhAz75VOg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+59088+1787277+3901457@groups.io Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1589208951692245.91060269207708; Mon, 11 May 2020 07:55:51 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id F7KHYY1788612xPw2zTvG9Ua; Mon, 11 May 2020 07:55:51 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web12.13641.1589208950760765025 for ; Mon, 11 May 2020 07:55:50 -0700 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 71119106F; Mon, 11 May 2020 07:55:50 -0700 (PDT) X-Received: from e123331-lin.nice.arm.com (unknown [10.37.8.255]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id E64C63F68F; Mon, 11 May 2020 07:55:48 -0700 (PDT) From: "Ard Biesheuvel" To: devel@edk2.groups.io Cc: Ard Biesheuvel , Pete Batard , Jared McNeill , Andrei Warkentin , Samer El-Haj-Mahmoud , Jeremy Linton Subject: [edk2-devel] [PATCH edk2-platforms v4 6/9] Silicon/Broadcom/BcmGenetDxe: keep TX buffer mapped during DMA transfer Date: Mon, 11 May 2020 16:55:24 +0200 Message-Id: <20200511145527.23453-7-ard.biesheuvel@arm.com> In-Reply-To: <20200511145527.23453-1-ard.biesheuvel@arm.com> References: <20200511145527.23453-1-ard.biesheuvel@arm.com> Precedence: Bulk List-Unsubscribe: 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,ard.biesheuvel@arm.com X-Gm-Message-State: zh7fC4532SP4EHQj5xJQis2Sx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1589208951; bh=d9+h13AI/pR/onxbCJynDAGhnvy97fbzzndYEnM+wvk=; h=Cc:Date:From:Reply-To:Subject:To; b=tiIBW2F23c1f7s6ZzaMqblWdBpA99QHTSDyi9Rhxo7sJESuZGiRFCV+xeoDkoRM7X/S OqH/IWt2aSTv7cmCIUN3rHdg8effVCQAKA7BsliMFn6eowKHdEs51cQUXurY85YYEeuQx +fs8TCa2WYZwiFhZuEDHG8TQHVLqr2XIKL0= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The DMA api requires that DMA mappings are kept in place during the time the device may access the memory. This may not matter for the way GENET is used on the RPi4, but it could break bounce buffering on platforms that impose DMA memory limits, since the bounce buffer may have been reused by the time the device gets to look at the data. So defer the DmaUnmap() of TX buffers to the point where they are recycled and returned to the caller. Signed-off-by: Ard Biesheuvel Reviewed-by: Andrei Warkentin Reviewed-by: Jeremy Linton --- Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.h | 1 + Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.c | 1 + Silicon/Broadcom/Drivers/Net/BcmGenetDxe/SimpleNetwork.c | 5 +---- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.h b/Silicon= /Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.h index c43bdbe1d6da..16890f723cb2 100644 --- a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.h +++ b/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.h @@ -213,6 +213,7 @@ typedef struct { GENERIC_PHY_PRIVATE_DATA Phy; =20 UINT8 *TxBuffer[GENET_DMA_DESC_COUNT]; + VOID *TxBufferMap[GENET_DMA_DESC_COUNT]; UINT8 TxQueued; UINT16 TxNext; UINT16 TxConsIndex; diff --git a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.c b/Silicon= /Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.c index 94b578a10aa1..35a3c7abdf1e 100644 --- a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.c +++ b/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.c @@ -760,6 +760,7 @@ GenetTxIntr ( =20 Total =3D (ConsIndex - Genet->TxConsIndex) & 0xFFFF; if (Genet->TxQueued > 0 && Total > 0) { + DmaUnmap (Genet->TxBufferMap[Genet->TxNext]); *TxBuf =3D Genet->TxBuffer[Genet->TxNext]; Genet->TxQueued--; Genet->TxNext =3D (Genet->TxNext + 1) % GENET_DMA_DESC_COUNT; diff --git a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/SimpleNetwork.c b/Sil= icon/Broadcom/Drivers/Net/BcmGenetDxe/SimpleNetwork.c index 9746f210d1f2..b2cae687b3d4 100644 --- a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/SimpleNetwork.c +++ b/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/SimpleNetwork.c @@ -559,7 +559,6 @@ GenetSimpleNetworkTransmit ( UINT8 Desc; PHYSICAL_ADDRESS DmaDeviceAddress; UINTN DmaNumberOfBytes; - VOID *DmaMapping; =20 if (This =3D=3D NULL || Buffer =3D=3D NULL) { DEBUG ((DEBUG_ERROR, "%a: Invalid parameter (missing handle or buffer)= \n", @@ -631,7 +630,7 @@ GenetSimpleNetworkTransmit ( (VOID *)(UINTN)Frame, &DmaNumberOfBytes, &DmaDeviceAddress, - &DmaMapping); + &Genet->TxBufferMap[Desc]); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "%a: DmaMap failed: %r\n", __FUNCTION__, Status)); EfiReleaseLock (&Genet->Lock); @@ -643,8 +642,6 @@ GenetSimpleNetworkTransmit ( Genet->TxProdIndex =3D (Genet->TxProdIndex + 1) % 0xFFFF; Genet->TxQueued++; =20 - DmaUnmap (DmaMapping); - EfiReleaseLock (&Genet->Lock); =20 return EFI_SUCCESS; --=20 2.17.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 (#59088): https://edk2.groups.io/g/devel/message/59088 Mute This Topic: https://groups.io/mt/74137454/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- From nobody Wed May 1 22:22:26 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+59089+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+59089+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1589208953; cv=none; d=zohomail.com; s=zohoarc; b=e0Rg88C5KeJzZoAZS9tkkUJm8o/yvtibiny21gOy0T8hM7YT5pOHCb+RxIf8b2zOrLEl67U6Ae5BNF9nHuN46oAkjch4hV6EkqPP1QRBSUVdVKF03orXgDjS/Q/0U3FXAO8Gv2Mp4NLxd/klV0SHCZyTXquZEyhviUWSMhKWwwY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589208953; h=Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=2ZEQM88giQPHT2pBkymWWmcahVCRFuN8bks9Vbztbuk=; b=JRsBUF6FuzXb3ETLVWfdzcXpxw0huLM+L/EGplABGHl1OGfQ1MbbYZtCS1mc0Mtvr7gNQ4ALX2lpb7Lu5QB22AhKB/R84v4l7ylD4967TdN778I8M2dysNThGXI+fNGLgzpDEE21YOiRRsw21Sc8/xF9SNKXKdm58snZtmG1qKM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+59089+1787277+3901457@groups.io Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 15892089538861019.1157533774222; Mon, 11 May 2020 07:55:53 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id NHuNYY1788612xEjSl302SZp; Mon, 11 May 2020 07:55:53 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web10.13630.1589208952939844130 for ; Mon, 11 May 2020 07:55:53 -0700 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id A77A1D6E; Mon, 11 May 2020 07:55:52 -0700 (PDT) X-Received: from e123331-lin.nice.arm.com (unknown [10.37.8.255]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 27B273F68F; Mon, 11 May 2020 07:55:50 -0700 (PDT) From: "Ard Biesheuvel" To: devel@edk2.groups.io Cc: Ard Biesheuvel , Pete Batard , Jared McNeill , Andrei Warkentin , Samer El-Haj-Mahmoud , Jeremy Linton Subject: [edk2-devel] [PATCH edk2-platforms v4 7/9] Silicon/Broadcom/BcmGenetDxe: use MemoryFence() for MMIO write ordering Date: Mon, 11 May 2020 16:55:25 +0200 Message-Id: <20200511145527.23453-8-ard.biesheuvel@arm.com> In-Reply-To: <20200511145527.23453-1-ard.biesheuvel@arm.com> References: <20200511145527.23453-1-ard.biesheuvel@arm.com> Precedence: Bulk List-Unsubscribe: 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,ard.biesheuvel@arm.com X-Gm-Message-State: QUVaVM9d40Lf5xGWRyONggWcx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1589208953; bh=stC69mpLDLkPt6tdlJKAZM92itAvNIPyWPy0Ecpo87o=; h=Cc:Date:From:Reply-To:Subject:To; b=Mf449zk7O6B1XApPel2fbI+1xSXmAUTLp1swUm8THXe3baPaCSY1ajxswxGykB7pq9l C6qmGSkGkn74sP9xqxRJbZ4M68xzSB5OyEzjqIGnyVZ0KZyPS3tR+d/4iRHe7HKYp5PEt PTSyqnneid5wylVb7xh8gI3BwpKnaT8rp6Q= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" ARM synchronization barriers can be used to stall execution and wait for cache or TLB maintenance to complete. TLB maintenance is irrelevant in the context of the GENET driver, but cache maintenance is important for non-cache coherent DMA, and synchronization barriers are needed to ensure that outgoing data is cleaned before starting DMA for TX frames. However, this cache maintenance is already taken care of by the cache maintenance routines, and so all we need to do in our I/O routines is ensure that MMIO writes are issued in the right order, and for this, an ordinary MemoryFence () is sufficient. This means we don't need to depend on ArmLib either. Signed-off-by: Ard Biesheuvel Reviewed-by: Andrei Warkentin Reviewed-by: Jeremy Linton Reviewed-by: Philippe Mathieu-Daude --- Silicon/Broadcom/Drivers/Net/BcmGenetDxe/BcmGenetDxe.inf | 2 -- Silicon/Broadcom/Drivers/Net/BcmGenetDxe/DriverBinding.c | 1 - Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.c | 3 +-- 3 files changed, 1 insertion(+), 5 deletions(-) diff --git a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/BcmGenetDxe.inf b/Sil= icon/Broadcom/Drivers/Net/BcmGenetDxe/BcmGenetDxe.inf index 9b3dc5e62ecf..e3e4ebbddb93 100644 --- a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/BcmGenetDxe.inf +++ b/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/BcmGenetDxe.inf @@ -27,7 +27,6 @@ [Sources] SimpleNetwork.c =20 [Packages] - ArmPkg/ArmPkg.dec EmbeddedPkg/EmbeddedPkg.dec MdeModulePkg/MdeModulePkg.dec MdePkg/MdePkg.dec @@ -35,7 +34,6 @@ [Packages] Silicon/Broadcom/Drivers/Net/BcmNet.dec =20 [LibraryClasses] - ArmLib BaseLib BaseMemoryLib DebugLib diff --git a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/DriverBinding.c b/Sil= icon/Broadcom/Drivers/Net/BcmGenetDxe/DriverBinding.c index 00fbfbc109bb..630a92ef210b 100644 --- a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/DriverBinding.c +++ b/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/DriverBinding.c @@ -9,7 +9,6 @@ =20 **/ =20 -#include #include #include #include diff --git a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.c b/Silicon= /Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.c index 35a3c7abdf1e..e3ce8614aeb2 100644 --- a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.c +++ b/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.c @@ -8,7 +8,6 @@ =20 #include "GenetUtil.h" =20 -#include #include #include #include @@ -64,7 +63,7 @@ GenetMmioWrite ( { ASSERT ((Offset & 3) =3D=3D 0); =20 - ArmDataSynchronizationBarrier (); + MemoryFence (); MmioWrite32 (Genet->RegBase + Offset, Data); } =20 --=20 2.17.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 (#59089): https://edk2.groups.io/g/devel/message/59089 Mute This Topic: https://groups.io/mt/74137456/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- From nobody Wed May 1 22:22:26 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+59090+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+59090+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1589208955; cv=none; d=zohomail.com; s=zohoarc; b=I5QmDspZWoPHWuF6BEhIppFR/XK3a4YeMmQYkWnetSpM2CDiSkvTXd05fPuxo8LIshA4CI9sx8S7cVhVFe+VKmCPy1A56h5Cx3NsomRZbtrPfIEcFwYrY9zQyAmR4tpWrF4UXKkEp6hmF1SFbkjSxHNnW2X8yw3AyUFJ7TeujsE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589208955; h=Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=Y9j/KkE+Osepy7CgiydE84xlNC1mhm6wFN+eXxq4GpM=; b=NkD6F0D4c0ug4ArAIByMCFSzOObpfYcRMYYY9QnYigynvBOplqf3p1uov8Np3NWFuiaActqpHbq2tLqugmDN4JzKXJgaJnKQ6ChN8GOz+4a9Gwp+1wT24S2EPjPnbN7q9nkb9yDWGioZwVeE+lg+QqNMmnfQLo7XHP7Ig95GVMM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+59090+1787277+3901457@groups.io Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1589208955752379.23326002958197; Mon, 11 May 2020 07:55:55 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id QpjDYY1788612x7XnlLk13ND; Mon, 11 May 2020 07:55:55 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web12.13643.1589208954829014118 for ; Mon, 11 May 2020 07:55:54 -0700 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 81FBC1045; Mon, 11 May 2020 07:55:54 -0700 (PDT) X-Received: from e123331-lin.nice.arm.com (unknown [10.37.8.255]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 032073F68F; Mon, 11 May 2020 07:55:52 -0700 (PDT) From: "Ard Biesheuvel" To: devel@edk2.groups.io Cc: Ard Biesheuvel , Pete Batard , Jared McNeill , Andrei Warkentin , Samer El-Haj-Mahmoud , Jeremy Linton Subject: [edk2-devel] [PATCH edk2-platforms v4 8/9] Silicon/Broadcom/BcmGenetDxe: add unload support Date: Mon, 11 May 2020 16:55:26 +0200 Message-Id: <20200511145527.23453-9-ard.biesheuvel@arm.com> In-Reply-To: <20200511145527.23453-1-ard.biesheuvel@arm.com> References: <20200511145527.23453-1-ard.biesheuvel@arm.com> Precedence: Bulk List-Unsubscribe: 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,ard.biesheuvel@arm.com X-Gm-Message-State: 03TzBtdQeSMbaKsBiLj76jimx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1589208955; bh=Lfpo1AUPYar4FGh0yIkDuVrLAZiOKYe9LpKMZE4iJ1U=; h=Cc:Date:From:Reply-To:Subject:To; b=nbgY2zaxH9WcHNezjuhjnv92P3WV+2dMoTCp2pRTpO0E100osOJX8Us7MCC1wGW+poP mbd90Fl7SEceoYJU1nZZwDgtATWqDKJUAiiVyTYoEh36+d8m5SxM6dIYE2PIqJSe/hCn3 LIgLdEcxOXp8EvWbTbS2JNPgdtzokMbwSls= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Add unload support to the GENET driver Signed-off-by: Ard Biesheuvel Reviewed-by: Jeremy Linton --- Silicon/Broadcom/Drivers/Net/BcmGenetDxe/BcmGenetDxe.inf | 1 + Silicon/Broadcom/Drivers/Net/BcmGenetDxe/DriverBinding.c | 60 ++++++++++++= ++++++++ 2 files changed, 61 insertions(+) diff --git a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/BcmGenetDxe.inf b/Sil= icon/Broadcom/Drivers/Net/BcmGenetDxe/BcmGenetDxe.inf index e3e4ebbddb93..3e98983c6b07 100644 --- a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/BcmGenetDxe.inf +++ b/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/BcmGenetDxe.inf @@ -16,6 +16,7 @@ [Defines] MODULE_TYPE =3D UEFI_DRIVER VERSION_STRING =3D 1.0 ENTRY_POINT =3D GenetEntryPoint + UNLOAD_IMAGE =3D GenetUnload =20 [Sources] ComponentName.c diff --git a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/DriverBinding.c b/Sil= icon/Broadcom/Drivers/Net/BcmGenetDxe/DriverBinding.c index 630a92ef210b..238b336d55f6 100644 --- a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/DriverBinding.c +++ b/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/DriverBinding.c @@ -340,3 +340,63 @@ GenetEntryPoint ( =20 return EFI_SUCCESS; } + +/** + Unload function of GENET UEFI Driver. + + @param ImageHandle The allocated handle for the EFI image + + @retval EFI_SUCCESS The driver was unloaded successfully + @retval EFI_INVALID_PARAMETER ImageHandle is not a valid image handle. + +**/ +EFI_STATUS +EFIAPI +GenetUnload ( + IN EFI_HANDLE ImageHandle + ) +{ + EFI_STATUS Status; + EFI_HANDLE *HandleBuffer; + UINTN HandleCount; + UINTN Index; + + // + // Retrieve all USB I/O handles in the handle database + // + Status =3D gBS->LocateHandleBuffer (ByProtocol, + &gBcmGenetPlatformDeviceProtocolGuid, + NULL, + &HandleCount, + &HandleBuffer); + if (EFI_ERROR (Status)) { + return Status; + } + + // + // Disconnect the driver from the handles in the handle database + // + for (Index =3D 0; Index < HandleCount; Index++) { + Status =3D gBS->DisconnectController (HandleBuffer[Index], + gImageHandle, + NULL); + } + + // + // Free the handle array + // + gBS->FreePool (HandleBuffer); + + // + // Uninstall protocols installed by the driver in its entrypoint + // + Status =3D EfiLibUninstallDriverBindingComponentName2 ( + &mGenetDriverBinding, + &gGenetComponentName, + &gGenetComponentName2 + ); + + ASSERT_EFI_ERROR (Status); + + return EFI_SUCCESS; +} --=20 2.17.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 (#59090): https://edk2.groups.io/g/devel/message/59090 Mute This Topic: https://groups.io/mt/74137458/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- From nobody Wed May 1 22:22:26 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+59091+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+59091+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1589208959; cv=none; d=zohomail.com; s=zohoarc; b=Kilqx8/lgeYBE1SVtvEn1FEYtKEJEgAy8VvYkZL6eTxY2Bct/bbWuPZx4fDb7zEz6cm8T2vOqnI2X+WTxTc4Y44qXcL1etV/hVbYUqgPVnTWi7Qc5+iY42Tcdd0KbFheQmVY8lzanICN4mj3vp+4G897hAyfh6z9AmMm6UQrclQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589208959; h=Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=oPfdmherpsF2AOsxn/dY5XLtTvXjNReml9g85s/+v24=; b=gmXxiaOlCyUyjwEqfFP9otDwo7bsHPEntI90PpxcDx/qBki3nSbhZDFu7Bz0r99VN9l4lCEMZDar7ka1G65Lb2FXyH6O7TVnZHRbXI/9dzp3dvKha9iMPmtCjyTgHxOoxBxlSb2Z6z0wHLeuWDk15un7DmTUcAGEAuPxKw19Xrs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+59091+1787277+3901457@groups.io Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1589208959690540.0718213992393; Mon, 11 May 2020 07:55:59 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id lkX5YY1788612xXGh0iAx2i2; Mon, 11 May 2020 07:55:59 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web11.13653.1589208956750484538 for ; Mon, 11 May 2020 07:55:56 -0700 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 5CDD7D6E; Mon, 11 May 2020 07:55:56 -0700 (PDT) X-Received: from e123331-lin.nice.arm.com (unknown [10.37.8.255]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id D16B03F68F; Mon, 11 May 2020 07:55:54 -0700 (PDT) From: "Ard Biesheuvel" To: devel@edk2.groups.io Cc: Ard Biesheuvel , Pete Batard , Jared McNeill , Andrei Warkentin , Samer El-Haj-Mahmoud , Jeremy Linton Subject: [edk2-devel] [PATCH edk2-platforms v4 9/9] Platform/RaspberryPi4: remove ASIX 88772b driver Date: Mon, 11 May 2020 16:55:27 +0200 Message-Id: <20200511145527.23453-10-ard.biesheuvel@arm.com> In-Reply-To: <20200511145527.23453-1-ard.biesheuvel@arm.com> References: <20200511145527.23453-1-ard.biesheuvel@arm.com> Precedence: Bulk List-Unsubscribe: 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,ard.biesheuvel@arm.com X-Gm-Message-State: dxoWnHBbkERKkZujrLWxj59dx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1589208959; bh=wfxX9TBecVB/epO7cAmTrLPwRIG9uAGmLzsF27lE1Cg=; h=Cc:Date:From:Reply-To:Subject:To; b=CdYROtZ2Tkqfioz6CuNS52Ze3iEq8Gc0V8fqxGamMxGatuQH23nIPdtbbQ0oYPlezgC S0x1YGAg6ltQi0tZ8Hpu/jnj42OSVgU7n7lQRQmcLQ+RRqmjpRnGZt7Pk9rexKqAt6/MM z0+kcX7TkTtDXFGw7gKzmORjQqhhCHXs98I= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The Raspberry Pi4 has gigabit ethernet builtin, for which we now have a UEFI driver. So no need for the ASIX 88772b driver. Signed-off-by: Ard Biesheuvel Reviewed-by: Andrei Warkentin Reviewed-by: Jeremy Linton Reviewed-by: Samer El-Haj-Mahmoud --- Platform/RaspberryPi/RPi4/RPi4.dsc | 1 - Platform/RaspberryPi/RPi4/RPi4.fdf | 1 - 2 files changed, 2 deletions(-) diff --git a/Platform/RaspberryPi/RPi4/RPi4.dsc b/Platform/RaspberryPi/RPi4= /RPi4.dsc index 5910082deb04..cbff9d9946e2 100644 --- a/Platform/RaspberryPi/RPi4/RPi4.dsc +++ b/Platform/RaspberryPi/RPi4/RPi4.dsc @@ -669,7 +669,6 @@ [Components.common] MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf - Drivers/OptionRomPkg/Bus/Usb/UsbNetworking/Ax88772b/Ax88772b.inf =20 # # SD/MMC support diff --git a/Platform/RaspberryPi/RPi4/RPi4.fdf b/Platform/RaspberryPi/RPi4= /RPi4.fdf index b1f7aa2387df..1e13909a57ba 100644 --- a/Platform/RaspberryPi/RPi4/RPi4.fdf +++ b/Platform/RaspberryPi/RPi4/RPi4.fdf @@ -293,7 +293,6 @@ [FV.FvMain] INF MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf INF MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf INF MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf - INF Drivers/OptionRomPkg/Bus/Usb/UsbNetworking/Ax88772b/Ax88772b.inf =20 # # SD/MMC support --=20 2.17.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 (#59091): https://edk2.groups.io/g/devel/message/59091 Mute This Topic: https://groups.io/mt/74137460/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-