From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-lf1-f54.google.com (mail-lf1-f54.google.com [209.85.167.54]) by mx.groups.io with SMTP id smtpd.web09.27887.1647272334527429946 for ; Mon, 14 Mar 2022 08:38:54 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@semihalf-com.20210112.gappssmtp.com header.s=20210112 header.b=MRIJ9kO3; spf=none, err=SPF record not found (domain: semihalf.com, ip: 209.85.167.54, mailfrom: mw@semihalf.com) Received: by mail-lf1-f54.google.com with SMTP id n19so27846531lfh.8 for ; Mon, 14 Mar 2022 08:38:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=semihalf-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=4EDsOONQ6bhSn7VI72GtjC4ucXK+pNGnrlzr8f+yaN4=; b=MRIJ9kO3dL5nHA6AL/YVJ+vb3Gn6z/UiMqwIAAzihTJ7lOXwEgInMyZ+Ydi1Jr9lhX JMZjLxSZhyI4V3jukwjbhPZTfQr5XzsgIV7mQI/9zB7FLgeq2JZhnDZbfvsN0WS/HF3D hhOULhIWP0D9/xO3ohOVnPighb+ZSbcTHle2dlUU++jyBDtEyPBFBW8QcFZQKfT838MB CHvftpLYiMzqxfgC9NxJZscH0QU2D+9Du7TO/IlcG7VVkM/+T8ftc5OLIG64dexALd/E zoEXdJfZ1yQF4LehvXLcfCkUAVrngE9ozGp9HMrW1Puqf7uypFHkaVXdagOVgBuDFcIL xg4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=4EDsOONQ6bhSn7VI72GtjC4ucXK+pNGnrlzr8f+yaN4=; b=qsgV3HrPEt2q68YxJC+XJ0w76lTf/A7os3RlKX76P5CrHUY7iJcONRDj0h9zEcWsQs iNDbAcR9s1Bejkott7YEF8pECBLpfBPW0Rk/iHn3kqR7lChnTiO7H1sXSWSfolSc2PW8 IcKOkXjZKl8NeMHYd5Tsez5YIdsdaJIE0HDJY5HzmSp3Iko1cWnOnR1NF7hMoid4T1IC lQLYlbqJ7rmRRBnHhAY649VncrIut06Mu5QKTqvv6WWjm9sMOfy794+SrxSVVxt2h9Am uK9q9D7ajdj4AO9LbpY6ZVbMPPoonMAt2jJwWUP3reC3ByMEjUUtRhOf6LtBNfD8LJBU VX3w== X-Gm-Message-State: AOAM533gfhRgNoVXaNx5rcF9FiC/hD/rrw1hwsA7hEcr1xEAaPOr9wzo eIZfXAeXKe20MmcB6SsTjSZ+9vwTiVbjyg== X-Google-Smtp-Source: ABdhPJx5D2N5kbGMQ6lT/On9rBkK1ddcj/ze3o6FxpFXd+GTf9Qt6xjOGR5e00zoFMvMOkP2wHKVhw== X-Received: by 2002:ac2:544e:0:b0:448:4baf:a9e8 with SMTP id d14-20020ac2544e000000b004484bafa9e8mr13941566lfn.63.1647272332691; Mon, 14 Mar 2022 08:38:52 -0700 (PDT) Return-Path: Received: from gilgamesh.lab.semihalf.net ([83.142.187.85]) by smtp.gmail.com with ESMTPSA id b8-20020ac25628000000b004484bd1be5esm3325401lff.256.2022.03.14.08.38.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Mar 2022 08:38:52 -0700 (PDT) From: "Marcin Wojtas" To: devel@edk2.groups.io Cc: quic_llindhol@quicinc.com, ardb+tianocore@kernel.org, mw@semihalf.com, jaz@semihalf.com, gjb@semihalf.com, upstream@semihalf.com, sunny.Wang@arm.com Subject: [edk2-platforms PATCH 2/8] Marvell/Drivers: Pp2Dxe: Fix Pp2SnpReceiveFilters Date: Mon, 14 Mar 2022 16:38:31 +0100 Message-Id: <20220314153837.1885852-3-mw@semihalf.com> X-Mailer: git-send-email 2.29.0 In-Reply-To: <20220314153837.1885852-1-mw@semihalf.com> References: <20220314153837.1885852-1-mw@semihalf.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Until now the Pp2SnpReceiveFilters callback unconditionally returned EFI_SUCCESS. Allow proper handling of the input values on the protocol level. Keep the HW registers intact. Signed-off-by: Marcin Wojtas --- Silicon/Marvell/Drivers/Net/Pp2Dxe/Pp2Dxe.c | 62 +++++++++++++++++++- 1 file changed, 61 insertions(+), 1 deletion(-) diff --git a/Silicon/Marvell/Drivers/Net/Pp2Dxe/Pp2Dxe.c b/Silicon/Marvell/= Drivers/Net/Pp2Dxe/Pp2Dxe.c index 30e091f807..3e09fafc4c 100644 --- a/Silicon/Marvell/Drivers/Net/Pp2Dxe/Pp2Dxe.c +++ b/Silicon/Marvell/Drivers/Net/Pp2Dxe/Pp2Dxe.c @@ -725,7 +725,67 @@ Pp2SnpReceiveFilters ( IN EFI_MAC_ADDRESS *MCastFilter OPTIONAL=0D )=0D {=0D - return EFI_SUCCESS;=0D + PP2DXE_CONTEXT *Pp2Context;=0D + EFI_TPL SavedTpl;=0D + UINTN Count;=0D +=0D + /* Check Snp Instance. */=0D + if (This =3D=3D NULL) {=0D + return EFI_INVALID_PARAMETER;=0D + }=0D +=0D + SavedTpl =3D gBS->RaiseTPL (TPL_CALLBACK);=0D +=0D + Pp2Context =3D INSTANCE_FROM_SNP(This);=0D +=0D + /* Check whether the driver was started and initialized. */=0D + if (This->Mode->State !=3D EfiSimpleNetworkInitialized) {=0D + switch (This->Mode->State) {=0D + case EfiSimpleNetworkStopped:=0D + DEBUG ((DEBUG_WARN, "Pp2Dxe%d: not started\n", Pp2Context->Instance)= );=0D + ReturnUnlock (SavedTpl, EFI_NOT_STARTED);=0D + case EfiSimpleNetworkStarted:=0D + DEBUG ((DEBUG_WARN, "Pp2Dxe%d: not initialized\n", Pp2Context->Insta= nce));=0D + ReturnUnlock (SavedTpl, EFI_DEVICE_ERROR);=0D + default:=0D + DEBUG ((DEBUG_WARN,=0D + "Pp2Dxe%d: wrong state: %u\n",=0D + Pp2Context->Instance,=0D + This->Mode->State));=0D + ReturnUnlock (SavedTpl, EFI_DEVICE_ERROR);=0D + }=0D + }=0D +=0D + if (((Enable | Disable) & ~This->Mode->ReceiveFilterMask) !=3D 0) {=0D + ReturnUnlock (SavedTpl, EFI_INVALID_PARAMETER);=0D + }=0D +=0D + if (!ResetMCastFilter &&=0D + (Disable & EFI_SIMPLE_NETWORK_RECEIVE_MULTICAST) =3D=3D 0 &&=0D + (Enable & EFI_SIMPLE_NETWORK_RECEIVE_MULTICAST) !=3D 0) {=0D + if (MCastFilterCnt =3D=3D 0 ||=0D + MCastFilterCnt > This->Mode->MaxMCastFilterCount ||=0D + MCastFilter =3D=3D NULL) {=0D + ReturnUnlock (SavedTpl, EFI_INVALID_PARAMETER);=0D + }=0D +=0D + for (Count =3D 0; Count < MCastFilterCnt; Count++) {=0D + if ((MCastFilter[Count].Addr[0] & 1) =3D=3D 0) {=0D + ReturnUnlock (SavedTpl, EFI_INVALID_PARAMETER);=0D + }=0D + CopyMem (&This->Mode->MCastFilter[Count],=0D + &MCastFilter[Count],=0D + sizeof (EFI_MAC_ADDRESS));=0D + }=0D + This->Mode->MCastFilterCount =3D MCastFilterCnt;=0D + } else if (ResetMCastFilter) {=0D + This->Mode->MCastFilterCount =3D 0;=0D + }=0D +=0D + This->Mode->ReceiveFilterSetting |=3D Enable;=0D + This->Mode->ReceiveFilterSetting &=3D ~Disable;=0D +=0D + ReturnUnlock (SavedTpl, EFI_SUCCESS);=0D }=0D =0D EFI_STATUS=0D --=20 2.29.0