From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-qt1-f194.google.com (mail-qt1-f194.google.com [209.85.160.194]) by mx.groups.io with SMTP id smtpd.web10.25.1589320391800907962 for ; Tue, 12 May 2020 14:53:11 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20161025 header.b=NY0cpCUi; spf=pass (domain: gmail.com, ip: 209.85.160.194, mailfrom: andrey.warkentin@gmail.com) Received: by mail-qt1-f194.google.com with SMTP id c24so6083251qtw.7 for ; Tue, 12 May 2020 14:53:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=XZZ4I1LGYLg2gUNlxlw7OZyBR00C0pZzgZ4iw/cp5gQ=; b=NY0cpCUilXUYJ4892gJRFCL5u/w4il+9tZ8r1OXarziooxfI41ijRc7/3xqIV4iAyU CiX0ATwh7W6w1IDQcCFatpw+ZR3Ze9Rgxm9uyzv/JD0A7Vs7uEIB0fbDQcuqUaq5AsCf IADi+1QiKKFcLkJPandHoWLBxch7HH4PrCUOTWU1A4jd4eDVX5DdP5qL/6m5pUGRcBKz 7gLA4deL+uabY711n9HDvaLIdHhdsUUb8SJuIbJz8fp/lPwOKO3LR2HVVmdBtrcxIB7z WIlLswa/H3VKgp79N52GZKNQcPjx/nvFTJbzQ1FwSUc4GXPQlrEhgBX2Vk9qvXCfeUEC K0Eg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=XZZ4I1LGYLg2gUNlxlw7OZyBR00C0pZzgZ4iw/cp5gQ=; b=nQR+XUbCOr5Q/jCnIC7lQse15KD6/n3G9W0USP+Jit/372+Bre8wiwoZWTfabP/AuL KqdK1vVXcleSC/xE7h4A4JLbJsAeZ1l9QOedJvrgfeCmFN0HJcRG6JOb81eiSxFVQkvA xjwlxuIS4hyrPdEaOBf2RvFqAWdAKo2Hr3/oW1mc6eIv5TDIzc3i1+Dwx8rXp/CHQDo8 GZLAzBg7zz5cNvCMDayIMmjrMmLwLWti6JwB6/e7CWmXuSJ2sPuUL/fCfjfqK/67CZhA mi4MMZKnYjHt47hA7/kPl0KpbHbv6xsClIyQIY2B6Fuv8M/+xtO5toyd9UDrvN4fbhx0 X6Kg== X-Gm-Message-State: AGi0PuY2FkzYvVDRIVhPptPT4yzKPdowh1VS2sID3FDnzD9jsVaI4wOL XKlYfpOBXPcu4tcrz3YnMEBd2mYPMkg= X-Google-Smtp-Source: APiQypLUO4lUaWi0PXcmvoUljlSrcAYr8mJBkaZw3GuUSH1WyC3m2T6fzW9NbchpjvDuJQFJDBaDIw== X-Received: by 2002:ac8:7249:: with SMTP id l9mr19768286qtp.224.1589320390824; Tue, 12 May 2020 14:53:10 -0700 (PDT) Return-Path: Received: from localhost.localdomain (c-98-214-99-181.hsd1.il.comcast.net. [98.214.99.181]) by smtp.gmail.com with ESMTPSA id i82sm12276661qke.134.2020.05.12.14.53.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 May 2020 14:53:10 -0700 (PDT) From: "Andrei Warkentin" To: devel@edk2.groups.io Cc: ard.biesheuvel@arm.com, leif@nuviainc.com, pete@akeo.ie, philmd@redhat.com Subject: [edk2-platforms][PATCH 1/1] BcmGenetDxe: fix reliability issues Date: Tue, 12 May 2020 14:52:57 -0700 Message-Id: <20200512215257.51748-1-andrey.warkentin@gmail.com> X-Mailer: git-send-email 2.17.1 - Failed TFTP boots - Failed HTTP boots The definite problem was that the incorrect PROD index was being written TX ring. The PROD index should be the TxProdIndex (on the scale of 0-0xffff), not the descriptor index (on the scale of 0-max descs). The other small things were suspect (mod 0xffff is not the same as & 0xffff). Signed-off-by: Andrei Warkentin --- Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.c | 4 ++-- Silicon/Broadcom/Drivers/Net/BcmGenetDxe/SimpleNetwork.c | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.c b/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.c index 4b0995e3..1c4c8527 100644 --- a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.c +++ b/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/GenetUtil.c @@ -737,7 +737,7 @@ GenetDmaTriggerTx ( GenetMmioWrite (Genet, GENET_TX_DESC_STATUS (DescIndex), DescStatus); GenetMmioWrite (Genet, GENET_TX_DMA_PROD_INDEX (GENET_DMA_DEFAULT_QUEUE), - (DescIndex + 1) & 0xFFFF); + Genet->TxProdIndex); } /** @@ -764,7 +764,7 @@ GenetTxIntr ( *TxBuf = Genet->TxBuffer[Genet->TxNext]; Genet->TxQueued--; Genet->TxNext = (Genet->TxNext + 1) % GENET_DMA_DESC_COUNT; - Genet->TxConsIndex++; + Genet->TxConsIndex = (Genet->TxConsIndex + 1) & 0xFFFF; } else { *TxBuf = NULL; } diff --git a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/SimpleNetwork.c b/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/SimpleNetwork.c index 74677927..371216ca 100644 --- a/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/SimpleNetwork.c +++ b/Silicon/Broadcom/Drivers/Net/BcmGenetDxe/SimpleNetwork.c @@ -641,9 +641,8 @@ GenetSimpleNetworkTransmit ( return Status; } + Genet->TxProdIndex = (Genet->TxProdIndex + 1) & 0xFFFF; GenetDmaTriggerTx (Genet, Desc, DmaDeviceAddress, DmaNumberOfBytes); - - Genet->TxProdIndex = (Genet->TxProdIndex + 1) % 0xFFFF; Genet->TxQueued++; EfiReleaseLock (&Genet->Lock); -- 2.17.1