Commit 83d17aba authored by Subbaraya Sundeep's avatar Subbaraya Sundeep Committed by Paolo Abeni
Browse files

Octeontx2-af: Disable stale DMAC filters



During driver initialization disable stale DMAC filters
in CGX/RPM set by firmware.

Signed-off-by: default avatarSubbaraya Sundeep <sbhatta@marvell.com>
Signed-off-by: default avatarHariprasad Kelam <hkelam@marvell.com>
Reviewed-by: default avatarSimon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20250720163638.1560323-3-hkelam@marvell.com


Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent dd47fc67
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -1704,9 +1704,11 @@ unsigned long cgx_get_lmac_bmap(void *cgxd)

static int cgx_lmac_init(struct cgx *cgx)
{
	u8 max_dmac_filters;
	struct lmac *lmac;
	u64 lmac_list;
	int i, err;
	int filter;

	/* lmac_list specifies which lmacs are enabled
	 * when bit n is set to 1, LMAC[n] is enabled
@@ -1745,6 +1747,8 @@ static int cgx_lmac_init(struct cgx *cgx)
				cgx->mac_ops->dmac_filter_count /
				cgx->lmac_count;

		max_dmac_filters = lmac->mac_to_index_bmap.max;

		err = rvu_alloc_bitmap(&lmac->mac_to_index_bmap);
		if (err)
			goto err_name_free;
@@ -1774,6 +1778,15 @@ static int cgx_lmac_init(struct cgx *cgx)
		set_bit(lmac->lmac_id, &cgx->lmac_bmap);
		cgx->mac_ops->mac_pause_frm_config(cgx, lmac->lmac_id, true);
		lmac->lmac_type = cgx->mac_ops->get_lmac_type(cgx, lmac->lmac_id);

		/* Disable stale DMAC filters for sane state */
		for (filter = 0; filter < max_dmac_filters; filter++)
			cgx_lmac_addr_del(cgx->cgx_id, lmac->lmac_id, filter);

		/* As cgx_lmac_addr_del does not clear entry for index 0
		 * so it needs to be done explicitly
		 */
		cgx_lmac_addr_reset(cgx->cgx_id, lmac->lmac_id);
	}

	/* Start X2P reset on given MAC block */