octeontx2-pf: Fix NIX1_RX interface backpressure
authorSubbaraya Sundeep <sbhatta@marvell.com>
Sun, 22 Aug 2021 12:02:18 +0000 (17:32 +0530)
committerDavid S. Miller <davem@davemloft.net>
Sun, 22 Aug 2021 20:38:15 +0000 (21:38 +0100)
'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>
drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c

index ce799b7a8449c7193119c2c8049c18413e60f342..9f921ca1d429f3299d41849e78227bf9ad933967 100644 (file)
@@ -1196,7 +1196,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 && !is_otx2_lbkvf(pfvf->pdev)) {
                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;
        }