X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fbnxt%2Ftf_ulp%2Fulp_port_db.h;h=740c186e120638cbd6a2cd22289f7af199a80437;hb=45633c460c223a67dd1a7cc084c3eceb5e17687c;hp=604c4385a2b41a2708af377b0db8f628ee0831d7;hpb=b81654dfc00f05908bba21144c3cede09f21378c;p=dpdk.git diff --git a/drivers/net/bnxt/tf_ulp/ulp_port_db.h b/drivers/net/bnxt/tf_ulp/ulp_port_db.h index 604c4385a2..740c186e12 100644 --- a/drivers/net/bnxt/tf_ulp/ulp_port_db.h +++ b/drivers/net/bnxt/tf_ulp/ulp_port_db.h @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: BSD-3-Clause - * Copyright(c) 2014-2019 Broadcom + * Copyright(c) 2014-2021 Broadcom * All rights reserved. */ @@ -9,17 +9,63 @@ #include "bnxt_ulp.h" #define BNXT_PORT_DB_MAX_INTF_LIST 256 +#define BNXT_PORT_DB_MAX_FUNC 2048 +#define BNXT_ULP_FREE_PARIF_BASE 11 + +enum bnxt_ulp_svif_type { + BNXT_ULP_DRV_FUNC_SVIF = 0, + BNXT_ULP_VF_FUNC_SVIF, + BNXT_ULP_PHY_PORT_SVIF +}; + +enum bnxt_ulp_spif_type { + BNXT_ULP_DRV_FUNC_SPIF = 0, + BNXT_ULP_VF_FUNC_SPIF, + BNXT_ULP_PHY_PORT_SPIF +}; + +enum bnxt_ulp_parif_type { + BNXT_ULP_DRV_FUNC_PARIF = 0, + BNXT_ULP_VF_FUNC_PARIF, + BNXT_ULP_PHY_PORT_PARIF +}; + +enum bnxt_ulp_vnic_type { + BNXT_ULP_DRV_FUNC_VNIC = 0, + BNXT_ULP_VF_FUNC_VNIC +}; + +enum bnxt_ulp_fid_type { + BNXT_ULP_DRV_FUNC_FID, + BNXT_ULP_VF_FUNC_FID +}; + +struct ulp_func_if_info { + uint16_t func_valid; + uint16_t func_svif; + uint16_t func_spif; + uint16_t func_parif; + uint16_t func_vnic; + uint8_t func_mac[RTE_ETHER_ADDR_LEN]; + uint16_t func_parent_vnic; + uint8_t func_parent_mac[RTE_ETHER_ADDR_LEN]; + uint16_t phy_port_id; + uint16_t ifindex; +}; /* Structure for the Port database resource information. */ struct ulp_interface_info { enum bnxt_ulp_intf_type type; - uint16_t func_id; - uint16_t func_svif; - uint16_t port_svif; - uint16_t default_vnic; - uint8_t mac_addr[RTE_ETHER_ADDR_LEN]; - /* back pointer to the bnxt driver, it is null for rep ports */ - struct bnxt *bp; + uint16_t drv_func_id; + uint16_t vf_func_id; +}; + +struct ulp_phy_port_info { + uint16_t port_valid; + uint16_t port_svif; + uint16_t port_spif; + uint16_t port_parif; + uint16_t port_vport; }; /* Structure for the Port database */ @@ -29,6 +75,9 @@ struct bnxt_ulp_port_db { /* dpdk device external port list */ uint16_t dev_port_list[RTE_MAX_ETHPORTS]; + struct ulp_phy_port_info *phy_port_list; + uint16_t phy_port_cnt; + struct ulp_func_if_info ulp_func_id_tbl[BNXT_PORT_DB_MAX_FUNC]; }; /* @@ -39,7 +88,7 @@ struct bnxt_ulp_port_db { * * Returns 0 on success or negative number on failure. */ -int32_t ulp_port_db_init(struct bnxt_ulp_context *ulp_ctxt); +int32_t ulp_port_db_init(struct bnxt_ulp_context *ulp_ctxt, uint8_t port_cnt); /* * Deinitialize the port database. Memory is deallocated in @@ -74,8 +123,7 @@ int32_t ulp_port_db_dev_port_intf_update(struct bnxt_ulp_context *ulp_ctxt, */ int32_t ulp_port_db_dev_port_to_ulp_index(struct bnxt_ulp_context *ulp_ctxt, - uint32_t port_id, - uint32_t *ifindex); + uint32_t port_id, uint32_t *ifindex); /* * Api to get the function id for a given ulp ifindex. @@ -88,11 +136,11 @@ ulp_port_db_dev_port_to_ulp_index(struct bnxt_ulp_context *ulp_ctxt, */ int32_t ulp_port_db_function_id_get(struct bnxt_ulp_context *ulp_ctxt, - uint32_t ifindex, + uint32_t ifindex, uint32_t fid_type, uint16_t *func_id); /* - * Api to get the svid for a given ulp ifindex. + * Api to get the svif for a given ulp ifindex. * * ulp_ctxt [in] Ptr to ulp context * ifindex [in] ulp ifindex @@ -103,9 +151,36 @@ ulp_port_db_function_id_get(struct bnxt_ulp_context *ulp_ctxt, */ int32_t ulp_port_db_svif_get(struct bnxt_ulp_context *ulp_ctxt, - uint32_t ifindex, - uint32_t dir, - uint16_t *svif); + uint32_t ifindex, uint32_t dir, uint16_t *svif); + +/* + * Api to get the spif for a given ulp ifindex. + * + * ulp_ctxt [in] Ptr to ulp context + * ifindex [in] ulp ifindex + * dir [in] the direction for the flow. + * spif [out] the spif of the given ifindex. + * + * Returns 0 on success or negative number on failure. + */ +int32_t +ulp_port_db_spif_get(struct bnxt_ulp_context *ulp_ctxt, + uint32_t ifindex, uint32_t dir, uint16_t *spif); + + +/* + * Api to get the parif for a given ulp ifindex. + * + * ulp_ctxt [in] Ptr to ulp context + * ifindex [in] ulp ifindex + * dir [in] the direction for the flow. + * parif [out] the parif of the given ifindex. + * + * Returns 0 on success or negative number on failure. + */ +int32_t +ulp_port_db_parif_get(struct bnxt_ulp_context *ulp_ctxt, + uint32_t ifindex, uint32_t dir, uint16_t *parif); /* * Api to get the vnic id for a given ulp ifindex. @@ -118,7 +193,125 @@ ulp_port_db_svif_get(struct bnxt_ulp_context *ulp_ctxt, */ int32_t ulp_port_db_default_vnic_get(struct bnxt_ulp_context *ulp_ctxt, - uint32_t ifindex, + uint32_t ifindex, uint32_t vnic_type, uint16_t *vnic); +/* + * Api to get the vport id for a given ulp ifindex. + * + * ulp_ctxt [in] Ptr to ulp context + * ifindex [in] ulp ifindex + * vport [out] the port of the given ifindex. + * + * Returns 0 on success or negative number on failure. + */ +int32_t +ulp_port_db_vport_get(struct bnxt_ulp_context *ulp_ctxt, + uint32_t ifindex, uint16_t *vport); + +/* + * Api to get the vport for a given physical port. + * + * ulp_ctxt [in] Ptr to ulp context + * phy_port [in] physical port index + * out_port [out] the port of the given physical index + * + * Returns 0 on success or negative number on failure. + */ +int32_t +ulp_port_db_phy_port_vport_get(struct bnxt_ulp_context *ulp_ctxt, + uint32_t phy_port, + uint16_t *out_port); + +/* + * Api to get the svif for a given physical port. + * + * ulp_ctxt [in] Ptr to ulp context + * phy_port [in] physical port index + * svif [out] the svif of the given physical index + * + * Returns 0 on success or negative number on failure. + */ +int32_t +ulp_port_db_phy_port_svif_get(struct bnxt_ulp_context *ulp_ctxt, + uint32_t phy_port, + uint16_t *svif); + +/* + * Api to get the port type for a given ulp ifindex. + * + * ulp_ctxt [in] Ptr to ulp context + * ifindex [in] ulp ifindex + * + * Returns port type. + */ +enum bnxt_ulp_intf_type +ulp_port_db_port_type_get(struct bnxt_ulp_context *ulp_ctxt, + uint32_t ifindex); + +/* + * Api to get the ulp ifindex for a given function id. + * + * ulp_ctxt [in] Ptr to ulp context + * func_id [in].device func id + * ifindex [out] ulp ifindex + * + * Returns 0 on success or negative number on failure. + */ +int32_t +ulp_port_db_dev_func_id_to_ulp_index(struct bnxt_ulp_context *ulp_ctxt, + uint32_t func_id, uint32_t *ifindex); + +/* + * Api to get the function id for a given port id. + * + * ulp_ctxt [in] Ptr to ulp context + * port_id [in] dpdk port id + * func_id [out] the function id of the given ifindex. + * + * Returns 0 on success or negative number on failure. + */ +int32_t +ulp_port_db_port_func_id_get(struct bnxt_ulp_context *ulp_ctxt, + uint16_t port_id, uint16_t *func_id); + +/* + * Api to get the parent mac address for a given port id. + * + * ulp_ctxt [in] Ptr to ulp context + * port_id [in] device port id + * mac_addr [out] mac address + * + * Returns 0 on success or negative number on failure. + */ +int32_t +ulp_port_db_parent_mac_addr_get(struct bnxt_ulp_context *ulp_ctxt, + uint32_t port_id, uint8_t **mac_addr); + +/* + * Api to get the mac address for a given port id. + * + * ulp_ctxt [in] Ptr to ulp context + * port_id [in] device port id + * mac_addr [out] mac address + * + * Returns 0 on success or negative number on failure. + */ +int32_t +ulp_port_db_drv_mac_addr_get(struct bnxt_ulp_context *ulp_ctxt, + uint32_t port_id, uint8_t **mac_addr); + +/* + * Api to get the parent vnic for a given port id. + * + * ulp_ctxt [in] Ptr to ulp context + * port_id [in] device port id + * vnic [out] parent vnic + * + * Returns 0 on success or negative number on failure. + */ +int32_t +ulp_port_db_parent_vnic_get(struct bnxt_ulp_context *ulp_ctxt, + uint32_t port_id, uint8_t **vnic); + #endif /* _ULP_PORT_DB_H_ */