octeontx2-af: Skip NIXLF check for bcast MCE entry
authorSunil Goutham <sgoutham@marvell.com>
Sun, 2 Dec 2018 12:47:36 +0000 (18:17 +0530)
committerDavid S. Miller <davem@davemloft.net>
Tue, 4 Dec 2018 00:23:07 +0000 (16:23 -0800)
At the time of initial broadcast packet replication table init,
NIXLFs are not yet attached to PF_FUNCs. Hence skipped checking
NIXLF while submitting MCE entry init instruction to NIX admin queue.

Also did a minor cleanup while installing bcast match entry in
packet parser unit i.e NPC.

Signed-off-by: Sunil Goutham <sgoutham@marvell.com>
Signed-off-by: Jerin Jacob <jerinj@marvell.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c

index 962a82f7d1412f7b20fb23f3dfe0cddf079ecef4..183331448cf0b78e7233a4fa8fc77f545ceafb6b 100644 (file)
@@ -431,9 +431,8 @@ static int rvu_nix_aq_enq_inst(struct rvu *rvu, struct nix_aq_enq_req *req,
        bool ena;
        u64 cfg;
 
-       pfvf = rvu_get_pfvf(rvu, pcifunc);
        blkaddr = rvu_get_blkaddr(rvu, BLKTYPE_NIX, pcifunc);
-       if (!pfvf->nixlf || blkaddr < 0)
+       if (blkaddr < 0)
                return NIX_AF_ERR_AF_LF_INVALID;
 
        block = &hw->block[blkaddr];
@@ -443,9 +442,14 @@ static int rvu_nix_aq_enq_inst(struct rvu *rvu, struct nix_aq_enq_req *req,
                return NIX_AF_ERR_AQ_ENQUEUE;
        }
 
+       pfvf = rvu_get_pfvf(rvu, pcifunc);
        nixlf = rvu_get_lf(rvu, block, pcifunc, 0);
-       if (nixlf < 0)
-               return NIX_AF_ERR_AF_LF_INVALID;
+
+       /* Skip NIXLF check for broadcast MCE entry init */
+       if (!(!rsp && req->ctype == NIX_AQ_CTYPE_MCE)) {
+               if (!pfvf->nixlf || nixlf < 0)
+                       return NIX_AF_ERR_AF_LF_INVALID;
+       }
 
        switch (req->ctype) {
        case NIX_AQ_CTYPE_RQ:
@@ -1295,7 +1299,7 @@ static int nix_setup_mce(struct rvu *rvu, int mce, u8 op,
        struct nix_aq_enq_req aq_req;
        int err;
 
-       aq_req.hdr.pcifunc = pcifunc;
+       aq_req.hdr.pcifunc = 0;
        aq_req.ctype = NIX_AQ_CTYPE_MCE;
        aq_req.op = op;
        aq_req.qidx = mce;
index 6ea2b0e2df426dc63f3960b798a298e8880ed27a..ee2600d93d54383ada2929ba1787697110859ca9 100644 (file)
@@ -476,7 +476,7 @@ void rvu_npc_install_bcast_match_entry(struct rvu *rvu, u16 pcifunc,
         *
         */
        entry.kw[0] = BIT_ULL(13) | chan;
-       entry.kw_mask[0] = ~entry.kw[0] & (BIT_ULL(13) | 0xFFFULL);
+       entry.kw_mask[0] = BIT_ULL(13) | 0xFFFULL;
 
        *(u64 *)&action = 0x00;
 #ifdef MCAST_MCE