]> git.baikalelectronics.ru Git - kernel.git/commitdiff
octeontx2-af: Fix mailbox errors in nix_rss_flowkey_cfg
authorSubbaraya Sundeep <sbhatta@marvell.com>
Mon, 30 Aug 2021 18:00:44 +0000 (23:30 +0530)
committerDavid S. Miller <davem@davemloft.net>
Tue, 31 Aug 2021 10:35:26 +0000 (11:35 +0100)
In npc_update_vf_flow_entry function the loop cursor
'index' is being changed inside the loop causing
the loop to spin forever. This in turn hogs the kworker
thread forever and no other mbox message is processed
by AF driver after that. Fix this by using
another variable in the loop.

Fixes: 55307fcb9258 ("octeontx2-af: Add mbox messages to install and delete MCAM rules")
Signed-off-by: Subbaraya Sundeep <sbhatta@marvell.com>
Signed-off-by: Sunil Goutham <sgoutham@marvell.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c

index 6389ee7a937141ad58396f762bbdf27a7746fbc1..9aeecb84f65373f187b69400034a52ceccbe77a5 100644 (file)
@@ -915,7 +915,7 @@ void rvu_npc_enable_allmulti_entry(struct rvu *rvu, u16 pcifunc, int nixlf,
 static void npc_update_vf_flow_entry(struct rvu *rvu, struct npc_mcam *mcam,
                                     int blkaddr, u16 pcifunc, u64 rx_action)
 {
-       int actindex, index, bank;
+       int actindex, index, bank, entry;
        bool enable;
 
        if (!(pcifunc & RVU_PFVF_FUNC_MASK))
@@ -926,7 +926,7 @@ static void npc_update_vf_flow_entry(struct rvu *rvu, struct npc_mcam *mcam,
                if (mcam->entry2target_pffunc[index] == pcifunc) {
                        bank = npc_get_bank(mcam, index);
                        actindex = index;
-                       index &= (mcam->banksize - 1);
+                       entry = index & (mcam->banksize - 1);
 
                        /* read vf flow entry enable status */
                        enable = is_mcam_entry_enabled(rvu, mcam, blkaddr,
@@ -936,7 +936,7 @@ static void npc_update_vf_flow_entry(struct rvu *rvu, struct npc_mcam *mcam,
                                              false);
                        /* update 'action' */
                        rvu_write64(rvu, blkaddr,
-                                   NPC_AF_MCAMEX_BANKX_ACTION(index, bank),
+                                   NPC_AF_MCAMEX_BANKX_ACTION(entry, bank),
                                    rx_action);
                        if (enable)
                                npc_enable_mcam_entry(rvu, mcam, blkaddr,