The dispatch layer aims to choose the corresponding Tx function within NFD3 version and NFDk version for ctrl VNIC.
Signed-off-by: Chaoyong He <[email protected]> Reviewed-by: Niklas Söderlund <[email protected]> --- drivers/net/nfp/flower/nfp_flower.c | 1 + drivers/net/nfp/flower/nfp_flower.h | 3 +++ drivers/net/nfp/flower/nfp_flower_ctrl.c | 21 +++++++++++++++++++-- drivers/net/nfp/flower/nfp_flower_ctrl.h | 1 + 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/drivers/net/nfp/flower/nfp_flower.c b/drivers/net/nfp/flower/nfp_flower.c index 8631664180..6d86145755 100644 --- a/drivers/net/nfp/flower/nfp_flower.c +++ b/drivers/net/nfp/flower/nfp_flower.c @@ -1086,6 +1086,7 @@ static void nfp_flower_nfd_func_register(struct nfp_app_fw_flower *app_fw_flower) { nfp_flower_pkt_add_metadata_register(app_fw_flower); + nfp_flower_ctrl_vnic_xmit_register(app_fw_flower); } int diff --git a/drivers/net/nfp/flower/nfp_flower.h b/drivers/net/nfp/flower/nfp_flower.h index 3bc5924b71..808321dffe 100644 --- a/drivers/net/nfp/flower/nfp_flower.h +++ b/drivers/net/nfp/flower/nfp_flower.h @@ -41,6 +41,9 @@ struct nfp_flower_nfd_func { /** Function used to add metadata into pkt. */ uint32_t (*pkt_add_metadata_t)(struct rte_mbuf *mbuf, uint32_t port_id); + /** Function used to xmit pkt through ctrl vnic. */ + uint16_t (*ctrl_vnic_xmit_t)(struct nfp_app_fw_flower *app_fw_flower, + struct rte_mbuf *mbuf); }; /* The flower application's private structure */ diff --git a/drivers/net/nfp/flower/nfp_flower_ctrl.c b/drivers/net/nfp/flower/nfp_flower_ctrl.c index 406dfe0d1d..bafcf5b017 100644 --- a/drivers/net/nfp/flower/nfp_flower_ctrl.c +++ b/drivers/net/nfp/flower/nfp_flower_ctrl.c @@ -154,8 +154,8 @@ nfp_flower_ctrl_vnic_recv(void *rx_queue, return avail; } -uint16_t -nfp_flower_ctrl_vnic_xmit(struct nfp_app_fw_flower *app_fw_flower, +static uint16_t +nfp_flower_ctrl_vnic_nfd3_xmit(struct nfp_app_fw_flower *app_fw_flower, struct rte_mbuf *mbuf) { uint16_t cnt = 0; @@ -224,6 +224,23 @@ nfp_flower_ctrl_vnic_xmit(struct nfp_app_fw_flower *app_fw_flower, return cnt; } +void +nfp_flower_ctrl_vnic_xmit_register(struct nfp_app_fw_flower *app_fw_flower) +{ + struct nfp_flower_nfd_func *nfd_func; + + nfd_func = &app_fw_flower->nfd_func; + + nfd_func->ctrl_vnic_xmit_t = nfp_flower_ctrl_vnic_nfd3_xmit; +} + +uint16_t +nfp_flower_ctrl_vnic_xmit(struct nfp_app_fw_flower *app_fw_flower, + struct rte_mbuf *mbuf) +{ + return app_fw_flower->nfd_func.ctrl_vnic_xmit_t(app_fw_flower, mbuf); +} + static void nfp_flower_cmsg_rx_stats(struct nfp_flow_priv *flow_priv, struct rte_mbuf *mbuf) diff --git a/drivers/net/nfp/flower/nfp_flower_ctrl.h b/drivers/net/nfp/flower/nfp_flower_ctrl.h index 1e385787e5..b7e836cf7e 100644 --- a/drivers/net/nfp/flower/nfp_flower_ctrl.h +++ b/drivers/net/nfp/flower/nfp_flower_ctrl.h @@ -9,5 +9,6 @@ void nfp_flower_ctrl_vnic_poll(struct nfp_app_fw_flower *app_fw_flower); uint16_t nfp_flower_ctrl_vnic_xmit(struct nfp_app_fw_flower *app_fw_flower, struct rte_mbuf *mbuf); +void nfp_flower_ctrl_vnic_xmit_register(struct nfp_app_fw_flower *app_fw_flower); #endif /* _NFP_FLOWER_CTRL_H_ */ -- 2.39.1

