xref: /dpdk/drivers/net/bnxt/tf_ulp/ulp_port_db.h (revision d4b36fc5f0dc59b256441c82e5a9395054026496)
1dc8ee812SKishore Padmanabha /* SPDX-License-Identifier: BSD-3-Clause
2d9e70b1dSRandy Schacher  * Copyright(c) 2014-2023 Broadcom
3dc8ee812SKishore Padmanabha  * All rights reserved.
4dc8ee812SKishore Padmanabha  */
5dc8ee812SKishore Padmanabha 
6dc8ee812SKishore Padmanabha #ifndef _ULP_PORT_DB_H_
7dc8ee812SKishore Padmanabha #define _ULP_PORT_DB_H_
8dc8ee812SKishore Padmanabha 
9dc8ee812SKishore Padmanabha #include "bnxt_ulp.h"
10dc8ee812SKishore Padmanabha 
11dc8ee812SKishore Padmanabha #define BNXT_PORT_DB_MAX_INTF_LIST		256
1245e8e1d4SVenkat Duvvuru #define BNXT_PORT_DB_MAX_FUNC			2048
134182be0dSKishore Padmanabha #define BNXT_ULP_FREE_PARIF_BASE		11
14d9e70b1dSRandy Schacher #define BNXT_ULP_META_VF_FLAG			0x1000
1545e8e1d4SVenkat Duvvuru 
1645e8e1d4SVenkat Duvvuru enum bnxt_ulp_svif_type {
1745e8e1d4SVenkat Duvvuru 	BNXT_ULP_DRV_FUNC_SVIF = 0,
1845e8e1d4SVenkat Duvvuru 	BNXT_ULP_VF_FUNC_SVIF,
1945e8e1d4SVenkat Duvvuru 	BNXT_ULP_PHY_PORT_SVIF
2045e8e1d4SVenkat Duvvuru };
2145e8e1d4SVenkat Duvvuru 
2245e8e1d4SVenkat Duvvuru enum bnxt_ulp_spif_type {
2345e8e1d4SVenkat Duvvuru 	BNXT_ULP_DRV_FUNC_SPIF = 0,
2445e8e1d4SVenkat Duvvuru 	BNXT_ULP_VF_FUNC_SPIF,
2545e8e1d4SVenkat Duvvuru 	BNXT_ULP_PHY_PORT_SPIF
2645e8e1d4SVenkat Duvvuru };
2745e8e1d4SVenkat Duvvuru 
2845e8e1d4SVenkat Duvvuru enum bnxt_ulp_parif_type {
2945e8e1d4SVenkat Duvvuru 	BNXT_ULP_DRV_FUNC_PARIF = 0,
3045e8e1d4SVenkat Duvvuru 	BNXT_ULP_VF_FUNC_PARIF,
3145e8e1d4SVenkat Duvvuru 	BNXT_ULP_PHY_PORT_PARIF
3245e8e1d4SVenkat Duvvuru };
3345e8e1d4SVenkat Duvvuru 
3445e8e1d4SVenkat Duvvuru enum bnxt_ulp_vnic_type {
3545e8e1d4SVenkat Duvvuru 	BNXT_ULP_DRV_FUNC_VNIC = 0,
3645e8e1d4SVenkat Duvvuru 	BNXT_ULP_VF_FUNC_VNIC
3745e8e1d4SVenkat Duvvuru };
3845e8e1d4SVenkat Duvvuru 
3945e8e1d4SVenkat Duvvuru enum bnxt_ulp_fid_type {
4045e8e1d4SVenkat Duvvuru 	BNXT_ULP_DRV_FUNC_FID,
4145e8e1d4SVenkat Duvvuru 	BNXT_ULP_VF_FUNC_FID
4245e8e1d4SVenkat Duvvuru };
4345e8e1d4SVenkat Duvvuru 
4445e8e1d4SVenkat Duvvuru struct ulp_func_if_info {
4545e8e1d4SVenkat Duvvuru 	uint16_t		func_valid;
4645e8e1d4SVenkat Duvvuru 	uint16_t		func_svif;
4745e8e1d4SVenkat Duvvuru 	uint16_t		func_spif;
4845e8e1d4SVenkat Duvvuru 	uint16_t		func_parif;
4945e8e1d4SVenkat Duvvuru 	uint16_t		func_vnic;
50ddaf0afaSKishore Padmanabha 	uint8_t			func_mac[RTE_ETHER_ADDR_LEN];
51ddaf0afaSKishore Padmanabha 	uint16_t		func_parent_vnic;
52ddaf0afaSKishore Padmanabha 	uint8_t			func_parent_mac[RTE_ETHER_ADDR_LEN];
5345e8e1d4SVenkat Duvvuru 	uint16_t		phy_port_id;
5414f260c0SKishore Padmanabha 	uint16_t		ifindex;
55d9e70b1dSRandy Schacher 	uint16_t		vf_meta_data;
56dd0191d5SShuanglin Wang 	uint8_t			table_scope;
5745e8e1d4SVenkat Duvvuru };
58dc8ee812SKishore Padmanabha 
59dc8ee812SKishore Padmanabha /* Structure for the Port database resource information. */
60dc8ee812SKishore Padmanabha struct ulp_interface_info {
61dc8ee812SKishore Padmanabha 	enum bnxt_ulp_intf_type	type;
6245e8e1d4SVenkat Duvvuru 	uint16_t		drv_func_id;
6345e8e1d4SVenkat Duvvuru 	uint16_t		vf_func_id;
64d9e70b1dSRandy Schacher 	uint8_t			type_is_pf;
6535a7fe80SVenkat Duvvuru };
6635a7fe80SVenkat Duvvuru 
6735a7fe80SVenkat Duvvuru struct ulp_phy_port_info {
6845e8e1d4SVenkat Duvvuru 	uint16_t	port_valid;
6935a7fe80SVenkat Duvvuru 	uint16_t	port_svif;
7035a7fe80SVenkat Duvvuru 	uint16_t	port_spif;
7135a7fe80SVenkat Duvvuru 	uint16_t	port_parif;
7235a7fe80SVenkat Duvvuru 	uint16_t	port_vport;
73*d4b36fc5SKishore Padmanabha 	uint32_t	port_mirror_id;
74dc8ee812SKishore Padmanabha };
75dc8ee812SKishore Padmanabha 
76dc8ee812SKishore Padmanabha /* Structure for the Port database */
77dc8ee812SKishore Padmanabha struct bnxt_ulp_port_db {
78dc8ee812SKishore Padmanabha 	struct ulp_interface_info	*ulp_intf_list;
79dc8ee812SKishore Padmanabha 	uint32_t			ulp_intf_list_size;
80dc8ee812SKishore Padmanabha 
81dc8ee812SKishore Padmanabha 	/* dpdk device external port list */
82dc8ee812SKishore Padmanabha 	uint16_t			dev_port_list[RTE_MAX_ETHPORTS];
8345e8e1d4SVenkat Duvvuru 	struct ulp_phy_port_info	*phy_port_list;
843c334fcdSKishore Padmanabha 	uint16_t			phy_port_cnt;
8545e8e1d4SVenkat Duvvuru 	struct ulp_func_if_info		ulp_func_id_tbl[BNXT_PORT_DB_MAX_FUNC];
86dc8ee812SKishore Padmanabha };
87dc8ee812SKishore Padmanabha 
88dc8ee812SKishore Padmanabha /*
89dc8ee812SKishore Padmanabha  * Initialize the port database. Memory is allocated in this
90dc8ee812SKishore Padmanabha  * call and assigned to the port database.
91dc8ee812SKishore Padmanabha  *
92dc8ee812SKishore Padmanabha  * ulp_ctxt [in] Ptr to ulp context
93dc8ee812SKishore Padmanabha  *
94dc8ee812SKishore Padmanabha  * Returns 0 on success or negative number on failure.
95dc8ee812SKishore Padmanabha  */
9645e8e1d4SVenkat Duvvuru int32_t	ulp_port_db_init(struct bnxt_ulp_context *ulp_ctxt, uint8_t port_cnt);
97dc8ee812SKishore Padmanabha 
98dc8ee812SKishore Padmanabha /*
99dc8ee812SKishore Padmanabha  * Deinitialize the port database. Memory is deallocated in
100dc8ee812SKishore Padmanabha  * this call.
101dc8ee812SKishore Padmanabha  *
102dc8ee812SKishore Padmanabha  * ulp_ctxt [in] Ptr to ulp context
103dc8ee812SKishore Padmanabha  *
104dc8ee812SKishore Padmanabha  * Returns 0 on success.
105dc8ee812SKishore Padmanabha  */
106dc8ee812SKishore Padmanabha int32_t	ulp_port_db_deinit(struct bnxt_ulp_context *ulp_ctxt);
107dc8ee812SKishore Padmanabha 
108dc8ee812SKishore Padmanabha /*
109dc8ee812SKishore Padmanabha  * Update the port database.This api is called when the port
110dc8ee812SKishore Padmanabha  * details are available during the startup.
111dc8ee812SKishore Padmanabha  *
112dc8ee812SKishore Padmanabha  * ulp_ctxt [in] Ptr to ulp context
113dc8ee812SKishore Padmanabha  * bp [in]. ptr to the device function.
114dc8ee812SKishore Padmanabha  *
115dc8ee812SKishore Padmanabha  * Returns 0 on success or negative number on failure.
116dc8ee812SKishore Padmanabha  */
117d9e70b1dSRandy Schacher int32_t	ulp_port_db_port_update(struct bnxt_ulp_context *ulp_ctxt,
118410e5b8bSVenkat Duvvuru 				struct rte_eth_dev *eth_dev);
119dc8ee812SKishore Padmanabha 
120dc8ee812SKishore Padmanabha /*
121dc8ee812SKishore Padmanabha  * Api to get the ulp ifindex for a given device port.
122dc8ee812SKishore Padmanabha  *
123dc8ee812SKishore Padmanabha  * ulp_ctxt [in] Ptr to ulp context
124dc8ee812SKishore Padmanabha  * port_id [in].device port id
125dc8ee812SKishore Padmanabha  * ifindex [out] ulp ifindex
126dc8ee812SKishore Padmanabha  *
127dc8ee812SKishore Padmanabha  * Returns 0 on success or negative number on failure.
128dc8ee812SKishore Padmanabha  */
129dc8ee812SKishore Padmanabha int32_t
130dc8ee812SKishore Padmanabha ulp_port_db_dev_port_to_ulp_index(struct bnxt_ulp_context *ulp_ctxt,
13135a7fe80SVenkat Duvvuru 				  uint32_t port_id, uint32_t *ifindex);
132dc8ee812SKishore Padmanabha 
133dc8ee812SKishore Padmanabha /*
134dc8ee812SKishore Padmanabha  * Api to get the function id for a given ulp ifindex.
135dc8ee812SKishore Padmanabha  *
136dc8ee812SKishore Padmanabha  * ulp_ctxt [in] Ptr to ulp context
137dc8ee812SKishore Padmanabha  * ifindex [in] ulp ifindex
138dc8ee812SKishore Padmanabha  * func_id [out] the function id of the given ifindex.
139dc8ee812SKishore Padmanabha  *
140dc8ee812SKishore Padmanabha  * Returns 0 on success or negative number on failure.
141dc8ee812SKishore Padmanabha  */
142dc8ee812SKishore Padmanabha int32_t
143dc8ee812SKishore Padmanabha ulp_port_db_function_id_get(struct bnxt_ulp_context *ulp_ctxt,
14445e8e1d4SVenkat Duvvuru 			    uint32_t ifindex, uint32_t fid_type,
14545e8e1d4SVenkat Duvvuru 			    uint16_t *func_id);
146dc8ee812SKishore Padmanabha 
147dc8ee812SKishore Padmanabha /*
14835a7fe80SVenkat Duvvuru  * Api to get the svif for a given ulp ifindex.
149dc8ee812SKishore Padmanabha  *
150dc8ee812SKishore Padmanabha  * ulp_ctxt [in] Ptr to ulp context
151dc8ee812SKishore Padmanabha  * ifindex [in] ulp ifindex
152dc8ee812SKishore Padmanabha  * dir [in] the direction for the flow.
153dc8ee812SKishore Padmanabha  * svif [out] the svif of the given ifindex.
154dc8ee812SKishore Padmanabha  *
155dc8ee812SKishore Padmanabha  * Returns 0 on success or negative number on failure.
156dc8ee812SKishore Padmanabha  */
157dc8ee812SKishore Padmanabha int32_t
158dc8ee812SKishore Padmanabha ulp_port_db_svif_get(struct bnxt_ulp_context *ulp_ctxt,
15935a7fe80SVenkat Duvvuru 		     uint32_t ifindex, uint32_t dir, uint16_t *svif);
16035a7fe80SVenkat Duvvuru 
16135a7fe80SVenkat Duvvuru /*
16235a7fe80SVenkat Duvvuru  * Api to get the spif for a given ulp ifindex.
16335a7fe80SVenkat Duvvuru  *
16435a7fe80SVenkat Duvvuru  * ulp_ctxt [in] Ptr to ulp context
16535a7fe80SVenkat Duvvuru  * ifindex [in] ulp ifindex
16635a7fe80SVenkat Duvvuru  * dir [in] the direction for the flow.
16735a7fe80SVenkat Duvvuru  * spif [out] the spif of the given ifindex.
16835a7fe80SVenkat Duvvuru  *
16935a7fe80SVenkat Duvvuru  * Returns 0 on success or negative number on failure.
17035a7fe80SVenkat Duvvuru  */
17135a7fe80SVenkat Duvvuru int32_t
17235a7fe80SVenkat Duvvuru ulp_port_db_spif_get(struct bnxt_ulp_context *ulp_ctxt,
17335a7fe80SVenkat Duvvuru 		     uint32_t ifindex, uint32_t dir, uint16_t *spif);
17435a7fe80SVenkat Duvvuru 
17535a7fe80SVenkat Duvvuru /*
17635a7fe80SVenkat Duvvuru  * Api to get the parif for a given ulp ifindex.
17735a7fe80SVenkat Duvvuru  *
17835a7fe80SVenkat Duvvuru  * ulp_ctxt [in] Ptr to ulp context
17935a7fe80SVenkat Duvvuru  * ifindex [in] ulp ifindex
18035a7fe80SVenkat Duvvuru  * dir [in] the direction for the flow.
18135a7fe80SVenkat Duvvuru  * parif [out] the parif of the given ifindex.
18235a7fe80SVenkat Duvvuru  *
18335a7fe80SVenkat Duvvuru  * Returns 0 on success or negative number on failure.
18435a7fe80SVenkat Duvvuru  */
18535a7fe80SVenkat Duvvuru int32_t
18635a7fe80SVenkat Duvvuru ulp_port_db_parif_get(struct bnxt_ulp_context *ulp_ctxt,
18735a7fe80SVenkat Duvvuru 		      uint32_t ifindex, uint32_t dir, uint16_t *parif);
188dc8ee812SKishore Padmanabha 
189dc8ee812SKishore Padmanabha /*
190dc8ee812SKishore Padmanabha  * Api to get the vnic id for a given ulp ifindex.
191dc8ee812SKishore Padmanabha  *
192dc8ee812SKishore Padmanabha  * ulp_ctxt [in] Ptr to ulp context
193dc8ee812SKishore Padmanabha  * ifindex [in] ulp ifindex
194dc8ee812SKishore Padmanabha  * vnic [out] the vnic of the given ifindex.
195dc8ee812SKishore Padmanabha  *
196dc8ee812SKishore Padmanabha  * Returns 0 on success or negative number on failure.
197dc8ee812SKishore Padmanabha  */
198dc8ee812SKishore Padmanabha int32_t
199dc8ee812SKishore Padmanabha ulp_port_db_default_vnic_get(struct bnxt_ulp_context *ulp_ctxt,
20045e8e1d4SVenkat Duvvuru 			     uint32_t ifindex, uint32_t vnic_type,
20145e8e1d4SVenkat Duvvuru 			     uint16_t *vnic);
20235a7fe80SVenkat Duvvuru 
20335a7fe80SVenkat Duvvuru /*
20435a7fe80SVenkat Duvvuru  * Api to get the vport id for a given ulp ifindex.
20535a7fe80SVenkat Duvvuru  *
20635a7fe80SVenkat Duvvuru  * ulp_ctxt [in] Ptr to ulp context
20735a7fe80SVenkat Duvvuru  * ifindex [in] ulp ifindex
20835a7fe80SVenkat Duvvuru  * vport [out] the port of the given ifindex.
20935a7fe80SVenkat Duvvuru  *
21035a7fe80SVenkat Duvvuru  * Returns 0 on success or negative number on failure.
21135a7fe80SVenkat Duvvuru  */
21235a7fe80SVenkat Duvvuru int32_t
21335a7fe80SVenkat Duvvuru ulp_port_db_vport_get(struct bnxt_ulp_context *ulp_ctxt,
21435a7fe80SVenkat Duvvuru 		      uint32_t ifindex,	uint16_t *vport);
215dc8ee812SKishore Padmanabha 
2163c334fcdSKishore Padmanabha /*
2173c334fcdSKishore Padmanabha  * Api to get the vport for a given physical port.
2183c334fcdSKishore Padmanabha  *
2193c334fcdSKishore Padmanabha  * ulp_ctxt [in] Ptr to ulp context
2203c334fcdSKishore Padmanabha  * phy_port [in] physical port index
2213c334fcdSKishore Padmanabha  * out_port [out] the port of the given physical index
2223c334fcdSKishore Padmanabha  *
2233c334fcdSKishore Padmanabha  * Returns 0 on success or negative number on failure.
2243c334fcdSKishore Padmanabha  */
2253c334fcdSKishore Padmanabha int32_t
2263c334fcdSKishore Padmanabha ulp_port_db_phy_port_vport_get(struct bnxt_ulp_context *ulp_ctxt,
2273c334fcdSKishore Padmanabha 			       uint32_t phy_port,
2283c334fcdSKishore Padmanabha 			       uint16_t *out_port);
2293c334fcdSKishore Padmanabha 
23014f260c0SKishore Padmanabha /*
23177b359eeSKishore Padmanabha  * Api to get the svif for a given physical port.
23277b359eeSKishore Padmanabha  *
23377b359eeSKishore Padmanabha  * ulp_ctxt [in] Ptr to ulp context
23477b359eeSKishore Padmanabha  * phy_port [in] physical port index
23577b359eeSKishore Padmanabha  * svif [out] the svif of the given physical index
23677b359eeSKishore Padmanabha  *
23777b359eeSKishore Padmanabha  * Returns 0 on success or negative number on failure.
23877b359eeSKishore Padmanabha  */
23977b359eeSKishore Padmanabha int32_t
24077b359eeSKishore Padmanabha ulp_port_db_phy_port_svif_get(struct bnxt_ulp_context *ulp_ctxt,
24177b359eeSKishore Padmanabha 			      uint32_t phy_port,
24277b359eeSKishore Padmanabha 			      uint16_t *svif);
24377b359eeSKishore Padmanabha 
24477b359eeSKishore Padmanabha /*
245*d4b36fc5SKishore Padmanabha  * Api to get the socket direct svif for a given device port.
246*d4b36fc5SKishore Padmanabha  *
247*d4b36fc5SKishore Padmanabha  * ulp_ctxt [in] Ptr to ulp context
248*d4b36fc5SKishore Padmanabha  * port_id [in] device port id
249*d4b36fc5SKishore Padmanabha  * svif [out] the socket direct svif of the given device index
250*d4b36fc5SKishore Padmanabha  *
251*d4b36fc5SKishore Padmanabha  * Returns 0 on success or negative number on failure.
252*d4b36fc5SKishore Padmanabha  */
253*d4b36fc5SKishore Padmanabha int32_t
254*d4b36fc5SKishore Padmanabha ulp_port_db_dev_port_socket_direct_svif_get(struct bnxt_ulp_context *ulp_ctxt,
255*d4b36fc5SKishore Padmanabha 					    uint32_t port_id,
256*d4b36fc5SKishore Padmanabha 					    uint16_t *svif);
257*d4b36fc5SKishore Padmanabha 
258*d4b36fc5SKishore Padmanabha /*
25914f260c0SKishore Padmanabha  * Api to get the port type for a given ulp ifindex.
26014f260c0SKishore Padmanabha  *
26114f260c0SKishore Padmanabha  * ulp_ctxt [in] Ptr to ulp context
26214f260c0SKishore Padmanabha  * ifindex [in] ulp ifindex
26314f260c0SKishore Padmanabha  *
26414f260c0SKishore Padmanabha  * Returns port type.
26514f260c0SKishore Padmanabha  */
26614f260c0SKishore Padmanabha enum bnxt_ulp_intf_type
26714f260c0SKishore Padmanabha ulp_port_db_port_type_get(struct bnxt_ulp_context *ulp_ctxt,
26814f260c0SKishore Padmanabha 			  uint32_t ifindex);
26914f260c0SKishore Padmanabha 
27014f260c0SKishore Padmanabha /*
27114f260c0SKishore Padmanabha  * Api to get the ulp ifindex for a given function id.
27214f260c0SKishore Padmanabha  *
27314f260c0SKishore Padmanabha  * ulp_ctxt [in] Ptr to ulp context
27414f260c0SKishore Padmanabha  * func_id [in].device func id
27514f260c0SKishore Padmanabha  * ifindex [out] ulp ifindex
27614f260c0SKishore Padmanabha  *
27714f260c0SKishore Padmanabha  * Returns 0 on success or negative number on failure.
27814f260c0SKishore Padmanabha  */
27914f260c0SKishore Padmanabha int32_t
28014f260c0SKishore Padmanabha ulp_port_db_dev_func_id_to_ulp_index(struct bnxt_ulp_context *ulp_ctxt,
28114f260c0SKishore Padmanabha 				     uint32_t func_id, uint32_t *ifindex);
28214f260c0SKishore Padmanabha 
283c53c2f43SKishore Padmanabha /*
284c53c2f43SKishore Padmanabha  * Api to get the function id for a given port id.
285c53c2f43SKishore Padmanabha  *
286c53c2f43SKishore Padmanabha  * ulp_ctxt [in] Ptr to ulp context
287c53c2f43SKishore Padmanabha  * port_id [in] dpdk port id
288c53c2f43SKishore Padmanabha  * func_id [out] the function id of the given ifindex.
289c53c2f43SKishore Padmanabha  *
290c53c2f43SKishore Padmanabha  * Returns 0 on success or negative number on failure.
291c53c2f43SKishore Padmanabha  */
292c53c2f43SKishore Padmanabha int32_t
293c53c2f43SKishore Padmanabha ulp_port_db_port_func_id_get(struct bnxt_ulp_context *ulp_ctxt,
294c53c2f43SKishore Padmanabha 			     uint16_t port_id, uint16_t *func_id);
295c53c2f43SKishore Padmanabha 
296ddaf0afaSKishore Padmanabha /*
297ddaf0afaSKishore Padmanabha  * Api to get the parent mac address for a given port id.
298ddaf0afaSKishore Padmanabha  *
299ddaf0afaSKishore Padmanabha  * ulp_ctxt [in] Ptr to ulp context
3003fe124d2SKishore Padmanabha  * port_id [in] device port id
301ddaf0afaSKishore Padmanabha  * mac_addr [out] mac address
302ddaf0afaSKishore Padmanabha  *
303ddaf0afaSKishore Padmanabha  * Returns 0 on success or negative number on failure.
304ddaf0afaSKishore Padmanabha  */
305ddaf0afaSKishore Padmanabha int32_t
306ddaf0afaSKishore Padmanabha ulp_port_db_parent_mac_addr_get(struct bnxt_ulp_context *ulp_ctxt,
307ddaf0afaSKishore Padmanabha 				uint32_t port_id, uint8_t **mac_addr);
3083fe124d2SKishore Padmanabha 
3093fe124d2SKishore Padmanabha /*
3103fe124d2SKishore Padmanabha  * Api to get the mac address for a given port id.
3113fe124d2SKishore Padmanabha  *
3123fe124d2SKishore Padmanabha  * ulp_ctxt [in] Ptr to ulp context
3133fe124d2SKishore Padmanabha  * port_id [in] device port id
3143fe124d2SKishore Padmanabha  * mac_addr [out] mac address
3153fe124d2SKishore Padmanabha  *
3163fe124d2SKishore Padmanabha  * Returns 0 on success or negative number on failure.
3173fe124d2SKishore Padmanabha  */
3183fe124d2SKishore Padmanabha int32_t
3193fe124d2SKishore Padmanabha ulp_port_db_drv_mac_addr_get(struct bnxt_ulp_context *ulp_ctxt,
3203fe124d2SKishore Padmanabha 			     uint32_t port_id, uint8_t **mac_addr);
3213fe124d2SKishore Padmanabha 
3223fe124d2SKishore Padmanabha /*
3233fe124d2SKishore Padmanabha  * Api to get the parent vnic for a given port id.
3243fe124d2SKishore Padmanabha  *
3253fe124d2SKishore Padmanabha  * ulp_ctxt [in] Ptr to ulp context
3263fe124d2SKishore Padmanabha  * port_id [in] device port id
3273fe124d2SKishore Padmanabha  * vnic [out] parent vnic
3283fe124d2SKishore Padmanabha  *
3293fe124d2SKishore Padmanabha  * Returns 0 on success or negative number on failure.
3303fe124d2SKishore Padmanabha  */
3313fe124d2SKishore Padmanabha int32_t
3323fe124d2SKishore Padmanabha ulp_port_db_parent_vnic_get(struct bnxt_ulp_context *ulp_ctxt,
3333fe124d2SKishore Padmanabha 			    uint32_t port_id, uint8_t **vnic);
3343fe124d2SKishore Padmanabha 
33562d8961fSKishore Padmanabha /*
33662d8961fSKishore Padmanabha  * Api to get the phy port for a given port id.
33762d8961fSKishore Padmanabha  *
33862d8961fSKishore Padmanabha  * ulp_ctxt [in] Ptr to ulp context
33962d8961fSKishore Padmanabha  * port_id [in] device port id
34062d8961fSKishore Padmanabha  * phy_port [out] phy_port of the dpdk port_id
34162d8961fSKishore Padmanabha  *
34262d8961fSKishore Padmanabha  * Returns 0 on success or negative number on failure.
34362d8961fSKishore Padmanabha  */
34462d8961fSKishore Padmanabha int32_t
34562d8961fSKishore Padmanabha ulp_port_db_phy_port_get(struct bnxt_ulp_context *ulp_ctxt,
34662d8961fSKishore Padmanabha 			 uint32_t port_id, uint16_t *phy_port);
3476d160d77SRandy Schacher 
3486d160d77SRandy Schacher /*
3496d160d77SRandy Schacher  * Api to get the port type for a given port id.
3506d160d77SRandy Schacher  *
3516d160d77SRandy Schacher  * ulp_ctxt [in] Ptr to ulp context
3526d160d77SRandy Schacher  * port_id [in] device port id
3536d160d77SRandy Schacher  * type [out] type if pf or not
3546d160d77SRandy Schacher  *
3556d160d77SRandy Schacher  * Returns 0 on success or negative number on failure.
3566d160d77SRandy Schacher  */
3576d160d77SRandy Schacher int32_t
3586d160d77SRandy Schacher ulp_port_db_port_is_pf_get(struct bnxt_ulp_context *ulp_ctxt,
3596d160d77SRandy Schacher 			   uint32_t port_id, uint8_t **type);
3606d160d77SRandy Schacher 
3616d160d77SRandy Schacher /*
3626d160d77SRandy Schacher  * Api to get the meta data for a given port id.
3636d160d77SRandy Schacher  *
3646d160d77SRandy Schacher  * ulp_ctxt [in] Ptr to ulp context
3656d160d77SRandy Schacher  * port_id [in] dpdk port id
3666d160d77SRandy Schacher  * meta data [out] the meta data of the given port
3676d160d77SRandy Schacher  *
3686d160d77SRandy Schacher  * Returns 0 on success or negative number on failure.
3696d160d77SRandy Schacher  */
3706d160d77SRandy Schacher int32_t
3716d160d77SRandy Schacher ulp_port_db_port_meta_data_get(struct bnxt_ulp_context *ulp_ctxt,
3726d160d77SRandy Schacher 			       uint16_t port_id, uint8_t **meta_data);
373032d49efSKishore Padmanabha 
374032d49efSKishore Padmanabha /* Api to get the function id for a given port id
375032d49efSKishore Padmanabha  *
376032d49efSKishore Padmanabha  * ulp_ctxt [in] Ptr to ulp context
377032d49efSKishore Padmanabha  * port_id [in] dpdk port id
378032d49efSKishore Padmanabha  * fid_data [out] the function id of the given port
379032d49efSKishore Padmanabha  */
380032d49efSKishore Padmanabha int32_t
381032d49efSKishore Padmanabha ulp_port_db_port_vf_fid_get(struct bnxt_ulp_context *ulp_ctxt,
382032d49efSKishore Padmanabha 			    uint16_t port_id, uint8_t **fid_data);
383032d49efSKishore Padmanabha 
384dd0191d5SShuanglin Wang /*
385dd0191d5SShuanglin Wang  * Api to get the table scope for a given port id.
386dd0191d5SShuanglin Wang  *
387dd0191d5SShuanglin Wang  * ulp_ctxt [in] Ptr to ulp context
388dd0191d5SShuanglin Wang  * port_id [in] dpdk port id
389dd0191d5SShuanglin Wang  * table_scope data [out] the table scope
390dd0191d5SShuanglin Wang  *
391dd0191d5SShuanglin Wang  * Returns 0 on success or negative number on failure.
392dd0191d5SShuanglin Wang  */
393dd0191d5SShuanglin Wang 
394dd0191d5SShuanglin Wang int32_t
395dd0191d5SShuanglin Wang ulp_port_db_port_table_scope_get(struct bnxt_ulp_context *ulp_ctxt,
396dd0191d5SShuanglin Wang 				 uint16_t port_id, uint8_t **tsid);
397*d4b36fc5SKishore Padmanabha 
398*d4b36fc5SKishore Padmanabha /* Api to get the PF Mirror Id for a given port id
399*d4b36fc5SKishore Padmanabha  *
400*d4b36fc5SKishore Padmanabha  * ulp_ctxt [in] Ptr to ulp context
401*d4b36fc5SKishore Padmanabha  * port_id [in] dpdk port id
402*d4b36fc5SKishore Padmanabha  * mirror id [in] mirror id
403*d4b36fc5SKishore Padmanabha  *
404*d4b36fc5SKishore Padmanabha  * Returns 0 on success or negative number on failure.
405*d4b36fc5SKishore Padmanabha  */
406*d4b36fc5SKishore Padmanabha int32_t
407*d4b36fc5SKishore Padmanabha ulp_port_db_port_table_mirror_set(struct bnxt_ulp_context *ulp_ctxt,
408*d4b36fc5SKishore Padmanabha 				  uint16_t port_id, uint32_t mirror_id);
409*d4b36fc5SKishore Padmanabha 
410dc8ee812SKishore Padmanabha #endif /* _ULP_PORT_DB_H_ */
411