@@ -304,3 +304,18 @@ roc_eswitch_npc_rss_action_configure(struct roc_npc *roc_npc, struct roc_npc_flo
((uint64_t)(rss_grp_idx & NPC_RSS_ACT_GRP_MASK) << NPC_RSS_ACT_GRP_OFFSET);
return 0;
}
+
+int
+roc_eswitch_nix_vlan_tpid_set(struct roc_nix *roc_nix, uint32_t type, uint16_t tpid, bool is_vf)
+{
+ struct nix *nix = roc_nix_to_nix_priv(roc_nix);
+ struct dev *dev = &nix->dev;
+ int rc;
+
+ /* Configuring for PF/VF */
+ rc = nix_vlan_tpid_set(dev->mbox, dev->pf_func | is_vf, type, tpid);
+ if (rc)
+ plt_err("Failed to set tpid for PF, rc %d", rc);
+
+ return rc;
+}
@@ -19,4 +19,8 @@ int __roc_api roc_eswitch_npc_mcam_delete_rule(struct roc_npc *roc_npc, struct r
int __roc_api roc_eswitch_npc_rss_action_configure(struct roc_npc *roc_npc,
struct roc_npc_flow *flow, uint32_t flowkey_cfg,
uint16_t *reta_tbl);
+
+/* NIX */
+int __roc_api roc_eswitch_nix_vlan_tpid_set(struct roc_nix *nix, uint32_t type, uint16_t tpid,
+ bool is_vf);
#endif /* __ROC_ESWITCH_H__ */
@@ -469,13 +469,12 @@ void nix_tm_shaper_profile_free(struct nix_tm_shaper_profile *profile);
uint64_t nix_get_blkaddr(struct dev *dev);
void nix_lf_rq_dump(__io struct nix_cn10k_rq_ctx_s *ctx, FILE *file);
int nix_lf_gen_reg_dump(uintptr_t nix_lf_base, uint64_t *data);
-int nix_lf_stat_reg_dump(uintptr_t nix_lf_base, uint64_t *data,
- uint8_t lf_tx_stats, uint8_t lf_rx_stats);
-int nix_lf_int_reg_dump(uintptr_t nix_lf_base, uint64_t *data, uint16_t qints,
- uint16_t cints);
-int nix_q_ctx_get(struct dev *dev, uint8_t ctype, uint16_t qid,
- __io void **ctx_p);
+int nix_lf_stat_reg_dump(uintptr_t nix_lf_base, uint64_t *data, uint8_t lf_tx_stats,
+ uint8_t lf_rx_stats);
+int nix_lf_int_reg_dump(uintptr_t nix_lf_base, uint64_t *data, uint16_t qints, uint16_t cints);
+int nix_q_ctx_get(struct dev *dev, uint8_t ctype, uint16_t qid, __io void **ctx_p);
uint8_t nix_tm_lbk_relchan_get(struct nix *nix);
+int nix_vlan_tpid_set(struct mbox *mbox, uint16_t pcifunc, uint32_t type, uint16_t tpid);
/*
* Telemetry
@@ -211,18 +211,17 @@ roc_nix_vlan_insert_ena_dis(struct roc_nix *roc_nix,
}
int
-roc_nix_vlan_tpid_set(struct roc_nix *roc_nix, uint32_t type, uint16_t tpid)
+nix_vlan_tpid_set(struct mbox *mbox, uint16_t pcifunc, uint32_t type, uint16_t tpid)
{
- struct nix *nix = roc_nix_to_nix_priv(roc_nix);
- struct dev *dev = &nix->dev;
- struct mbox *mbox = mbox_get(dev->mbox);
struct nix_set_vlan_tpid *tpid_cfg;
int rc = -ENOSPC;
- tpid_cfg = mbox_alloc_msg_nix_set_vlan_tpid(mbox);
+ /* Configuring for PF */
+ tpid_cfg = mbox_alloc_msg_nix_set_vlan_tpid(mbox_get(mbox));
if (tpid_cfg == NULL)
goto exit;
tpid_cfg->tpid = tpid;
+ tpid_cfg->hdr.pcifunc = pcifunc;
if (type & ROC_NIX_VLAN_TYPE_OUTER)
tpid_cfg->vlan_type = NIX_VLAN_TYPE_OUTER;
@@ -234,3 +233,17 @@ roc_nix_vlan_tpid_set(struct roc_nix *roc_nix, uint32_t type, uint16_t tpid)
mbox_put(mbox);
return rc;
}
+
+int
+roc_nix_vlan_tpid_set(struct roc_nix *roc_nix, uint32_t type, uint16_t tpid)
+{
+ struct nix *nix = roc_nix_to_nix_priv(roc_nix);
+ struct dev *dev = &nix->dev;
+ int rc;
+
+ rc = nix_vlan_tpid_set(dev->mbox, dev->pf_func, type, tpid);
+ if (rc)
+ plt_err("Failed to set tpid for PF, rc %d", rc);
+
+ return rc;
+}
@@ -87,6 +87,7 @@ INTERNAL {
roc_dpi_disable;
roc_dpi_enable;
roc_error_msg_get;
+ roc_eswitch_nix_vlan_tpid_set;
roc_eswitch_npc_mcam_delete_rule;
roc_eswitch_npc_mcam_rx_rule;
roc_eswitch_npc_mcam_tx_rule;