]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
octeontx2-pf: Fix NIX1_RX interface backpressure
authorSubbaraya Sundeep <sbhatta@marvell.com>
Sun, 22 Aug 2021 12:02:18 +0000 (17:32 +0530)
committerStefan Bader <stefan.bader@canonical.com>
Fri, 5 Nov 2021 09:18:42 +0000 (10:18 +0100)
BugLink: https://bugs.launchpad.net/bugs/1947781
[ Upstream commit e8fb4df1f5d84bc08dd4f4827821a851d2eab241 ]

'bp_ena' in Aura context is NIX block index, setting it
zero will always backpressure NIX0 block, even if NIXLF
belongs to NIX1. Hence fix this by setting it appropriately
based on NIX block address.

Signed-off-by: Subbaraya Sundeep <sbhatta@marvell.com>
Signed-off-by: Hariprasad Kelam <hkelam@marvell.com>
Signed-off-by: Sunil Goutham <sgoutham@marvell.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Kelsey Skunberg <kelsey.skunberg@canonical.com>
drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c

index bcab6dbce69128135e2fd5c00c5365a9f73f6b58..660c4ceab7e6069fc18631a181f73a6a3b7e7fab 100644 (file)
@@ -1137,7 +1137,22 @@ static int otx2_aura_init(struct otx2_nic *pfvf, int aura_id,
        /* Enable backpressure for RQ aura */
        if (aura_id < pfvf->hw.rqpool_cnt) {
                aq->aura.bp_ena = 0;
+               /* If NIX1 LF is attached then specify NIX1_RX.
+                *
+                * Below NPA_AURA_S[BP_ENA] is set according to the
+                * NPA_BPINTF_E enumeration given as:
+                * 0x0 + a*0x1 where 'a' is 0 for NIX0_RX and 1 for NIX1_RX so
+                * NIX0_RX is 0x0 + 0*0x1 = 0
+                * NIX1_RX is 0x0 + 1*0x1 = 1
+                * But in HRM it is given that
+                * "NPA_AURA_S[BP_ENA](w1[33:32]) - Enable aura backpressure to
+                * NIX-RX based on [BP] level. One bit per NIX-RX; index
+                * enumerated by NPA_BPINTF_E."
+                */
+               if (pfvf->nix_blkaddr == BLKADDR_NIX1)
+                       aq->aura.bp_ena = 1;
                aq->aura.nix0_bpid = pfvf->bpid[0];
+
                /* Set backpressure level for RQ's Aura */
                aq->aura.bp = RQ_BP_LVL_AURA;
        }