diff options
author | Linu Cherian <lcherian@marvell.com> | 2018-11-22 17:18:36 +0530 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-11-23 17:23:25 -0800 |
commit | c929323609aefdd6da40d02860c2d59fb4a9d421 (patch) | |
tree | 6b305f427100d9dc1870f762bb198ff9b3ef74e4 /drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c | |
parent | octeontx2-af: Handle non-contiguous CGX LMAC interfaces (diff) | |
download | linux-dev-c929323609aefdd6da40d02860c2d59fb4a9d421.tar.xz linux-dev-c929323609aefdd6da40d02860c2d59fb4a9d421.zip |
octeontx2-af: Unregister cgx event callbacks gracefully
Added provision to unregister cgx event callbacks.
This enables the exit path to ensure event callbacks are
unregistered before workqueues get destroyed.
Signed-off-by: Linu Cherian <lcherian@marvell.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to '')
-rw-r--r-- | drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c b/drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c index d5cca78d5d47..66d94df9b8a2 100644 --- a/drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c +++ b/drivers/net/ethernet/marvell/octeontx2/af/rvu_cgx.c @@ -296,6 +296,20 @@ int rvu_cgx_init(struct rvu *rvu) int rvu_cgx_exit(struct rvu *rvu) { + int cgx, lmac; + void *cgxd; + + for (cgx = 0; cgx <= rvu->cgx_cnt_max; cgx++) { + cgxd = rvu_cgx_pdata(cgx, rvu); + if (!cgxd) + continue; + for (lmac = 0; lmac < cgx_get_lmac_cnt(cgxd); lmac++) + cgx_lmac_evh_unregister(cgxd, lmac); + } + + /* Ensure event handler unregister is completed */ + mb(); + rvu_cgx_wq_destroy(rvu); return 0; } |