octeontx2-af: Support for setting MAC address
Added a new mailbox message for a PF/VF to set/update it's NIXLF's MAC address. Also updates unicast NPC MCAM entry with this address as matching DMAC. Signed-off-by: Sunil Goutham <sgoutham@marvell.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
cc96b0e9b4
commit
6f03cf10fc
|
@ -158,7 +158,8 @@ M(NIX_TXSCH_FREE, 0x8005, nix_txsch_free_req, msg_rsp) \
|
|||
M(NIX_TXSCHQ_CFG, 0x8006, nix_txschq_config, msg_rsp) \
|
||||
M(NIX_STATS_RST, 0x8007, msg_req, msg_rsp) \
|
||||
M(NIX_VTAG_CFG, 0x8008, nix_vtag_config, msg_rsp) \
|
||||
M(NIX_RSS_FLOWKEY_CFG, 0x8009, nix_rss_flowkey_cfg, msg_rsp)
|
||||
M(NIX_RSS_FLOWKEY_CFG, 0x8009, nix_rss_flowkey_cfg, msg_rsp) \
|
||||
M(NIX_SET_MAC_ADDR, 0x800a, nix_set_mac_addr, msg_rsp)
|
||||
|
||||
/* Messages initiated by AF (range 0xC00 - 0xDFF) */
|
||||
#define MBOX_UP_CGX_MESSAGES \
|
||||
|
@ -507,4 +508,9 @@ struct nix_rss_flowkey_cfg {
|
|||
u8 group; /* RSS context or group */
|
||||
};
|
||||
|
||||
struct nix_set_mac_addr {
|
||||
struct mbox_msghdr hdr;
|
||||
u8 mac_addr[ETH_ALEN]; /* MAC address to be set for this pcifunc */
|
||||
};
|
||||
|
||||
#endif /* MBOX_H */
|
||||
|
|
|
@ -344,6 +344,9 @@ int rvu_mbox_handler_NIX_VTAG_CFG(struct rvu *rvu,
|
|||
int rvu_mbox_handler_NIX_RSS_FLOWKEY_CFG(struct rvu *rvu,
|
||||
struct nix_rss_flowkey_cfg *req,
|
||||
struct msg_rsp *rsp);
|
||||
int rvu_mbox_handler_NIX_SET_MAC_ADDR(struct rvu *rvu,
|
||||
struct nix_set_mac_addr *req,
|
||||
struct msg_rsp *rsp);
|
||||
|
||||
/* NPC APIs */
|
||||
int rvu_npc_init(struct rvu *rvu);
|
||||
|
|
|
@ -1720,6 +1720,31 @@ static void nix_rx_flowkey_alg_cfg(struct rvu *rvu, int blkaddr)
|
|||
}
|
||||
}
|
||||
|
||||
int rvu_mbox_handler_NIX_SET_MAC_ADDR(struct rvu *rvu,
|
||||
struct nix_set_mac_addr *req,
|
||||
struct msg_rsp *rsp)
|
||||
{
|
||||
struct rvu_hwinfo *hw = rvu->hw;
|
||||
u16 pcifunc = req->hdr.pcifunc;
|
||||
struct rvu_pfvf *pfvf;
|
||||
int blkaddr, nixlf;
|
||||
|
||||
pfvf = rvu_get_pfvf(rvu, pcifunc);
|
||||
blkaddr = rvu_get_blkaddr(rvu, BLKTYPE_NIX, pcifunc);
|
||||
if (!pfvf->nixlf || blkaddr < 0)
|
||||
return NIX_AF_ERR_AF_LF_INVALID;
|
||||
|
||||
nixlf = rvu_get_lf(rvu, &hw->block[blkaddr], pcifunc, 0);
|
||||
if (nixlf < 0)
|
||||
return NIX_AF_ERR_AF_LF_INVALID;
|
||||
|
||||
ether_addr_copy(pfvf->mac_addr, req->mac_addr);
|
||||
|
||||
rvu_npc_install_ucast_entry(rvu, pcifunc, nixlf,
|
||||
pfvf->rx_chan_base, req->mac_addr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int nix_calibrate_x2p(struct rvu *rvu, int blkaddr)
|
||||
{
|
||||
int idx, err;
|
||||
|
|
Loading…
Reference in New Issue