octeontx2-af: Fix mcam entry resource leak
commit 3f8fe40ab7730cf8eb6f8b8ff412012f7f6f8f48 upstream. The teardown sequence in FLR handler returns if no NIX LF is attached to PF/VF because it indicates that graceful shutdown of resources already happened. But there is a chance of all allocated MCAM entries not being freed by PF/VF. Hence free mcam entries even in case of detached LF. Fixes: c554f9c1574e ("octeontx2-af: Teardown NPA, NIX LF upon receiving FLR") Signed-off-by: Subbaraya Sundeep <sbhatta@marvell.com> Signed-off-by: Sunil Goutham <sgoutham@marvell.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
df1c025e38
commit
cc32347f48
@ -2564,6 +2564,12 @@ static void __rvu_flr_handler(struct rvu *rvu, u16 pcifunc)
|
||||
rvu_blklf_teardown(rvu, pcifunc, BLKADDR_NPA);
|
||||
rvu_reset_lmt_map_tbl(rvu, pcifunc);
|
||||
rvu_detach_rsrcs(rvu, NULL, pcifunc);
|
||||
/* In scenarios where PF/VF drivers detach NIXLF without freeing MCAM
|
||||
* entries, check and free the MCAM entries explicitly to avoid leak.
|
||||
* Since LF is detached use LF number as -1.
|
||||
*/
|
||||
rvu_npc_free_mcam_entries(rvu, pcifunc, -1);
|
||||
|
||||
mutex_unlock(&rvu->flr_lock);
|
||||
}
|
||||
|
||||
|
@ -1096,6 +1096,9 @@ static void npc_enadis_default_entries(struct rvu *rvu, u16 pcifunc,
|
||||
|
||||
void rvu_npc_disable_default_entries(struct rvu *rvu, u16 pcifunc, int nixlf)
|
||||
{
|
||||
if (nixlf < 0)
|
||||
return;
|
||||
|
||||
npc_enadis_default_entries(rvu, pcifunc, nixlf, false);
|
||||
|
||||
/* Delete multicast and promisc MCAM entries */
|
||||
@ -1107,6 +1110,9 @@ void rvu_npc_disable_default_entries(struct rvu *rvu, u16 pcifunc, int nixlf)
|
||||
|
||||
void rvu_npc_enable_default_entries(struct rvu *rvu, u16 pcifunc, int nixlf)
|
||||
{
|
||||
if (nixlf < 0)
|
||||
return;
|
||||
|
||||
/* Enables only broadcast match entry. Promisc/Allmulti are enabled
|
||||
* in set_rx_mode mbox handler.
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user