mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-10 15:13:44 -04:00
Octeontx2-af: Add programmed macaddr to RVU pfvf
Octeontx2/CN10k MAC block supports DMAC filters. DMAC filters can be installed on the interface through ethtool. When a user installs a DMAC filter, the interface's MAC address is implicitly added to the filter list. To ensure consistency, this MAC address must be kept in sync with the pfvf->mac_addr field, which is used to install MAC-based NPC rules. This patch updates the pfvf->mac_addr field with the programmed MAC address and also enables VF interfaces to install DMAC filters. Signed-off-by: Hariprasad Kelam <hkelam@marvell.com> Reviewed-by: Simon Horman <horms@kernel.org> Link: https://patch.msgid.link/20250720163638.1560323-2-hkelam@marvell.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
committed by
Paolo Abeni
parent
2094200b5f
commit
dd47fc6769
@@ -682,16 +682,19 @@ int rvu_mbox_handler_cgx_mac_addr_set(struct rvu *rvu,
|
||||
struct cgx_mac_addr_set_or_get *rsp)
|
||||
{
|
||||
int pf = rvu_get_pf(rvu->pdev, req->hdr.pcifunc);
|
||||
struct rvu_pfvf *pfvf;
|
||||
u8 cgx_id, lmac_id;
|
||||
|
||||
if (!is_cgx_config_permitted(rvu, req->hdr.pcifunc))
|
||||
return -EPERM;
|
||||
if (!is_pf_cgxmapped(rvu, pf))
|
||||
return LMAC_AF_ERR_PF_NOT_MAPPED;
|
||||
|
||||
if (rvu_npc_exact_has_match_table(rvu))
|
||||
return rvu_npc_exact_mac_addr_set(rvu, req, rsp);
|
||||
|
||||
rvu_get_cgx_lmac_id(rvu->pf2cgxlmac_map[pf], &cgx_id, &lmac_id);
|
||||
|
||||
pfvf = &rvu->pf[pf];
|
||||
ether_addr_copy(pfvf->mac_addr, req->mac_addr);
|
||||
cgx_lmac_addr_set(cgx_id, lmac_id, req->mac_addr);
|
||||
|
||||
return 0;
|
||||
@@ -769,20 +772,12 @@ int rvu_mbox_handler_cgx_mac_addr_get(struct rvu *rvu,
|
||||
struct cgx_mac_addr_set_or_get *req,
|
||||
struct cgx_mac_addr_set_or_get *rsp)
|
||||
{
|
||||
int pf = rvu_get_pf(rvu->pdev, req->hdr.pcifunc);
|
||||
u8 cgx_id, lmac_id;
|
||||
int rc = 0;
|
||||
u64 cfg;
|
||||
struct rvu_pfvf *pfvf = rvu_get_pfvf(rvu, req->hdr.pcifunc);
|
||||
|
||||
if (!is_cgx_config_permitted(rvu, req->hdr.pcifunc))
|
||||
return -EPERM;
|
||||
if (!is_pf_cgxmapped(rvu, rvu_get_pf(rvu->pdev, req->hdr.pcifunc)))
|
||||
return LMAC_AF_ERR_PF_NOT_MAPPED;
|
||||
|
||||
rvu_get_cgx_lmac_id(rvu->pf2cgxlmac_map[pf], &cgx_id, &lmac_id);
|
||||
|
||||
rsp->hdr.rc = rc;
|
||||
cfg = cgx_lmac_addr_get(cgx_id, lmac_id);
|
||||
/* copy 48 bit mac address to req->mac_addr */
|
||||
u64_to_ether_addr(cfg, rsp->mac_addr);
|
||||
ether_addr_copy(rsp->mac_addr, pfvf->mac_addr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user