mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 08:14:15 +08:00
octeontx2-af: Fix mcam entry resource leak
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: c554f9c157
("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>
This commit is contained in:
parent
cf24376265
commit
3f8fe40ab7
@ -2580,6 +2580,12 @@ static void __rvu_flr_handler(struct rvu *rvu, u16 pcifunc)
|
|||||||
rvu_blklf_teardown(rvu, pcifunc, BLKADDR_NPA);
|
rvu_blklf_teardown(rvu, pcifunc, BLKADDR_NPA);
|
||||||
rvu_reset_lmt_map_tbl(rvu, pcifunc);
|
rvu_reset_lmt_map_tbl(rvu, pcifunc);
|
||||||
rvu_detach_rsrcs(rvu, NULL, 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);
|
mutex_unlock(&rvu->flr_lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1097,6 +1097,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)
|
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);
|
npc_enadis_default_entries(rvu, pcifunc, nixlf, false);
|
||||||
|
|
||||||
/* Delete multicast and promisc MCAM entries */
|
/* Delete multicast and promisc MCAM entries */
|
||||||
@ -1136,6 +1139,9 @@ bool rvu_npc_enable_mcam_by_entry_index(struct rvu *rvu, int entry, int intf, bo
|
|||||||
|
|
||||||
void rvu_npc_enable_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
|
/* Enables only broadcast match entry. Promisc/Allmulti are enabled
|
||||||
* in set_rx_mode mbox handler.
|
* in set_rx_mode mbox handler.
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user