xref: /dpdk/drivers/net/bnxt/rte_pmd_bnxt.h (revision e6e8f03e5459f25153f1e4cd3e9ac30d3e473a61)
1fd710bb1SScott Branden /* SPDX-License-Identifier: BSD-3-Clause
2*e6e8f03eSRandy Schacher  * Copyright(c) 2017-2023 Broadcom
349947a13SAjit Khaparde  * All rights reserved.
449947a13SAjit Khaparde  */
549947a13SAjit Khaparde 
649947a13SAjit Khaparde #ifndef _PMD_BNXT_H_
749947a13SAjit Khaparde #define _PMD_BNXT_H_
849947a13SAjit Khaparde 
961ede395SFerruh Yigit #include <rte_ethdev.h>
1061ede395SFerruh Yigit #include <rte_ether.h>
1149947a13SAjit Khaparde 
12d7430428SThomas Monjalon /** mbuf dynamic field where CFA code is stored */
13d7430428SThomas Monjalon #define RTE_PMD_BNXT_CFA_CODE_DYNFIELD_NAME "rte_net_bnxt_dynfield_cfa_code"
14d7430428SThomas Monjalon 
1520c8f79dSAjit Khaparde /*
1620c8f79dSAjit Khaparde  * Response sent back to the caller after callback
1720c8f79dSAjit Khaparde  */
1820c8f79dSAjit Khaparde enum rte_pmd_bnxt_mb_event_rsp {
1920c8f79dSAjit Khaparde 	RTE_PMD_BNXT_MB_EVENT_NOOP_ACK,  /**< skip mbox request and ACK */
2020c8f79dSAjit Khaparde 	RTE_PMD_BNXT_MB_EVENT_NOOP_NACK, /**< skip mbox request and NACK */
2120c8f79dSAjit Khaparde 	RTE_PMD_BNXT_MB_EVENT_PROCEED,  /**< proceed with mbox request  */
2220c8f79dSAjit Khaparde 	RTE_PMD_BNXT_MB_EVENT_MAX       /**< max value of this enum */
2320c8f79dSAjit Khaparde };
2420c8f79dSAjit Khaparde 
2520c8f79dSAjit Khaparde /* mailbox message types */
2620c8f79dSAjit Khaparde #define BNXT_VF_RESET			0x01 /* VF requests reset */
2720c8f79dSAjit Khaparde #define BNXT_VF_SET_MAC_ADDR	0x02 /* VF requests PF to set MAC addr */
2820c8f79dSAjit Khaparde #define BNXT_VF_SET_VLAN		0x03 /* VF requests PF to set VLAN */
2920c8f79dSAjit Khaparde #define BNXT_VF_SET_MTU			0x04 /* VF requests PF to set MTU */
3020c8f79dSAjit Khaparde #define BNXT_VF_SET_MRU			0x05 /* VF requests PF to set MRU */
3120c8f79dSAjit Khaparde 
3220c8f79dSAjit Khaparde /*
3320c8f79dSAjit Khaparde  * Data sent to the caller when the callback is executed.
3420c8f79dSAjit Khaparde  */
3520c8f79dSAjit Khaparde struct rte_pmd_bnxt_mb_event_param {
3620c8f79dSAjit Khaparde 	uint16_t vf_id;	/* Virtual Function number */
3720c8f79dSAjit Khaparde 	int	retval;	/* return value */
3820c8f79dSAjit Khaparde 	void	*msg;	/* pointer to message */
3920c8f79dSAjit Khaparde };
4020c8f79dSAjit Khaparde 
4149947a13SAjit Khaparde /**
4236735a93SAjit Khaparde  * Enable/Disable VF MAC anti spoof
4336735a93SAjit Khaparde  *
4436735a93SAjit Khaparde  * @param port
4536735a93SAjit Khaparde  *    The port identifier of the Ethernet device.
4636735a93SAjit Khaparde  * @param vf
4736735a93SAjit Khaparde  *   VF id.
4836735a93SAjit Khaparde  * @param on
4936735a93SAjit Khaparde  *    1 - Enable VF MAC anti spoof.
5036735a93SAjit Khaparde  *    0 - Disable VF MAC anti spoof.
5136735a93SAjit Khaparde  *
5236735a93SAjit Khaparde  * @return
5336735a93SAjit Khaparde  *   - (0) if successful.
5436735a93SAjit Khaparde  *   - (-ENODEV) if *port* invalid.
5536735a93SAjit Khaparde  *   - (-EINVAL) if bad parameter.
5636735a93SAjit Khaparde  */
57f8244c63SZhiyong Yang int rte_pmd_bnxt_set_vf_mac_anti_spoof(uint16_t port, uint16_t vf, uint8_t on);
5836735a93SAjit Khaparde 
5936735a93SAjit Khaparde /**
6049947a13SAjit Khaparde  * Set the VF MAC address.
6149947a13SAjit Khaparde  *
6249947a13SAjit Khaparde  * @param port
6349947a13SAjit Khaparde  *   The port identifier of the Ethernet device.
6449947a13SAjit Khaparde  * @param vf
6549947a13SAjit Khaparde  *   VF id.
6649947a13SAjit Khaparde  * @param mac_addr
6749947a13SAjit Khaparde  *   VF MAC address.
6849947a13SAjit Khaparde  * @return
6949947a13SAjit Khaparde  *   - (0) if successful.
7049947a13SAjit Khaparde  *   - (-ENODEV) if *port* invalid.
7149947a13SAjit Khaparde  *   - (-EINVAL) if *vf* or *mac_addr* is invalid.
7249947a13SAjit Khaparde  */
73f8244c63SZhiyong Yang int rte_pmd_bnxt_set_vf_mac_addr(uint16_t port, uint16_t vf,
746d13ea8eSOlivier Matz 		struct rte_ether_addr *mac_addr);
7549947a13SAjit Khaparde 
7649947a13SAjit Khaparde /**
7736735a93SAjit Khaparde  * Enable/Disable vf vlan strip for all queues in a pool
7836735a93SAjit Khaparde  *
7936735a93SAjit Khaparde  * @param port
8036735a93SAjit Khaparde  *    The port identifier of the Ethernet device.
8136735a93SAjit Khaparde  * @param vf
8236735a93SAjit Khaparde  *    ID specifying VF.
8336735a93SAjit Khaparde  * @param on
8436735a93SAjit Khaparde  *    1 - Enable VF's vlan strip on RX queues.
8536735a93SAjit Khaparde  *    0 - Disable VF's vlan strip on RX queues.
8636735a93SAjit Khaparde  *
8736735a93SAjit Khaparde  * @return
8836735a93SAjit Khaparde  *   - (0) if successful.
8936735a93SAjit Khaparde  *   - (-ENOTSUP) if hardware doesn't support this feature.
9036735a93SAjit Khaparde  *   - (-ENODEV) if *port* invalid.
9136735a93SAjit Khaparde  *   - (-EINVAL) if bad parameter.
9236735a93SAjit Khaparde  */
9336735a93SAjit Khaparde int
94f8244c63SZhiyong Yang rte_pmd_bnxt_set_vf_vlan_stripq(uint16_t port, uint16_t vf, uint8_t on);
9536735a93SAjit Khaparde 
9636735a93SAjit Khaparde /**
9718c2854bSAjit Khaparde  * Enable/Disable vf vlan insert
9818c2854bSAjit Khaparde  *
9918c2854bSAjit Khaparde  * @param port
10018c2854bSAjit Khaparde  *    The port identifier of the Ethernet device.
10118c2854bSAjit Khaparde  * @param vf
10218c2854bSAjit Khaparde  *    ID specifying VF.
10318c2854bSAjit Khaparde  * @param vlan_id
10418c2854bSAjit Khaparde  *    0 - Disable VF's vlan insert.
10518c2854bSAjit Khaparde  *    n - Enable; n is inserted as the vlan id.
10618c2854bSAjit Khaparde  *
10718c2854bSAjit Khaparde  * @return
10818c2854bSAjit Khaparde  *   - (0) if successful.
10918c2854bSAjit Khaparde  *   - (-ENODEV) if *port* invalid.
11018c2854bSAjit Khaparde  *   - (-EINVAL) if bad parameter.
11118c2854bSAjit Khaparde  */
11218c2854bSAjit Khaparde int
113f8244c63SZhiyong Yang rte_pmd_bnxt_set_vf_vlan_insert(uint16_t port, uint16_t vf,
11418c2854bSAjit Khaparde 		uint16_t vlan_id);
11518c2854bSAjit Khaparde 
11618c2854bSAjit Khaparde /**
11736735a93SAjit Khaparde  * Enable/Disable hardware VF VLAN filtering by an Ethernet device of
11836735a93SAjit Khaparde  * received VLAN packets tagged with a given VLAN Tag Identifier.
11936735a93SAjit Khaparde  *
12036735a93SAjit Khaparde  * @param port
12136735a93SAjit Khaparde  *   The port identifier of the Ethernet device.
12236735a93SAjit Khaparde  * @param vlan
12336735a93SAjit Khaparde  *   The VLAN Tag Identifier whose filtering must be enabled or disabled.
12436735a93SAjit Khaparde  * @param vf_mask
12536735a93SAjit Khaparde  *    Bitmap listing which VFs participate in the VLAN filtering.
12636735a93SAjit Khaparde  * @param vlan_on
12736735a93SAjit Khaparde  *    1 - Enable VFs VLAN filtering.
12836735a93SAjit Khaparde  *    0 - Disable VFs VLAN filtering.
12936735a93SAjit Khaparde  * @return
13036735a93SAjit Khaparde  *   - (0) if successful.
13136735a93SAjit Khaparde  *   - (-ENOTSUP) if hardware doesn't support.
13236735a93SAjit Khaparde  *   - (-ENODEV) if *port_id* invalid.
13336735a93SAjit Khaparde  *   - (-EINVAL) if bad parameter.
13436735a93SAjit Khaparde  */
135f8244c63SZhiyong Yang int rte_pmd_bnxt_set_vf_vlan_filter(uint16_t port, uint16_t vlan,
13636735a93SAjit Khaparde 				    uint64_t vf_mask, uint8_t vlan_on);
13736735a93SAjit Khaparde 
13836735a93SAjit Khaparde /**
13949947a13SAjit Khaparde  * Enable/Disable tx loopback
14049947a13SAjit Khaparde  *
14149947a13SAjit Khaparde  * @param port
14249947a13SAjit Khaparde  *    The port identifier of the Ethernet device.
14349947a13SAjit Khaparde  * @param on
14449947a13SAjit Khaparde  *    1 - Enable tx loopback.
14549947a13SAjit Khaparde  *    0 - Disable tx loopback.
14649947a13SAjit Khaparde  *
14749947a13SAjit Khaparde  * @return
14849947a13SAjit Khaparde  *   - (0) if successful.
14949947a13SAjit Khaparde  *   - (-ENODEV) if *port* invalid.
15049947a13SAjit Khaparde  *   - (-EINVAL) if bad parameter.
15149947a13SAjit Khaparde  */
152f8244c63SZhiyong Yang int rte_pmd_bnxt_set_tx_loopback(uint16_t port, uint8_t on);
15349947a13SAjit Khaparde 
15449947a13SAjit Khaparde /**
15549947a13SAjit Khaparde  * set all queues drop enable bit
15649947a13SAjit Khaparde  *
15749947a13SAjit Khaparde  * @param port
15849947a13SAjit Khaparde  *    The port identifier of the Ethernet device.
15949947a13SAjit Khaparde  * @param on
16049947a13SAjit Khaparde  *    1 - set the queue drop enable bit for all pools.
16149947a13SAjit Khaparde  *    0 - reset the queue drop enable bit for all pools.
16249947a13SAjit Khaparde  *
16349947a13SAjit Khaparde  * @return
16449947a13SAjit Khaparde  *   - (0) if successful.
16549947a13SAjit Khaparde  *   - (-ENODEV) if *port* invalid.
16649947a13SAjit Khaparde  *   - (-EINVAL) if bad parameter.
16749947a13SAjit Khaparde  */
168f8244c63SZhiyong Yang int rte_pmd_bnxt_set_all_queues_drop_en(uint16_t port, uint8_t on);
16936735a93SAjit Khaparde 
17036735a93SAjit Khaparde /**
17136735a93SAjit Khaparde  * Set the VF rate limit.
17236735a93SAjit Khaparde  *
17336735a93SAjit Khaparde  * @param port
17436735a93SAjit Khaparde  *   The port identifier of the Ethernet device.
17536735a93SAjit Khaparde  * @param vf
17636735a93SAjit Khaparde  *   VF id.
17736735a93SAjit Khaparde  * @param tx_rate
17836735a93SAjit Khaparde  *   Tx rate for the VF
17936735a93SAjit Khaparde  * @param q_msk
18036735a93SAjit Khaparde  *   Mask of the Tx queue
18136735a93SAjit Khaparde  * @return
18236735a93SAjit Khaparde  *   - (0) if successful.
18336735a93SAjit Khaparde  *   - (-ENODEV) if *port* invalid.
18436735a93SAjit Khaparde  *   - (-EINVAL) if *vf* or *mac_addr* is invalid.
18536735a93SAjit Khaparde  */
186f8244c63SZhiyong Yang int rte_pmd_bnxt_set_vf_rate_limit(uint16_t port, uint16_t vf,
1873a26e41eSSatha Rao 				uint32_t tx_rate, uint64_t q_msk);
18836735a93SAjit Khaparde 
18936735a93SAjit Khaparde /**
190dd46c6bbSAjit Khaparde  * Get VF's statistics
191dd46c6bbSAjit Khaparde  *
192dd46c6bbSAjit Khaparde  * @param port
193dd46c6bbSAjit Khaparde  *    The port identifier of the Ethernet device.
194dd46c6bbSAjit Khaparde  * @param vf_id
195dd46c6bbSAjit Khaparde  *    VF on which to get.
196dd46c6bbSAjit Khaparde  * @param stats
197dd46c6bbSAjit Khaparde  *    A pointer to a structure of type *rte_eth_stats* to be filled with
198dd46c6bbSAjit Khaparde  *    the values of device counters supported statistics:
199dd46c6bbSAjit Khaparde  * @return
200dd46c6bbSAjit Khaparde  *   - (0) if successful.
201dd46c6bbSAjit Khaparde  *   - (-ENODEV) if *port* invalid.
202dd46c6bbSAjit Khaparde  *   - (-EINVAL) if bad parameter.
203dd46c6bbSAjit Khaparde  */
204dd46c6bbSAjit Khaparde 
205f8244c63SZhiyong Yang int rte_pmd_bnxt_get_vf_stats(uint16_t port,
206dd46c6bbSAjit Khaparde 			      uint16_t vf_id,
207dd46c6bbSAjit Khaparde 			      struct rte_eth_stats *stats);
208dd46c6bbSAjit Khaparde 
209dd46c6bbSAjit Khaparde /**
210dd46c6bbSAjit Khaparde  * Clear VF's statistics
211dd46c6bbSAjit Khaparde  *
212dd46c6bbSAjit Khaparde  * @param port
213dd46c6bbSAjit Khaparde  *    The port identifier of the Ethernet device.
214dd46c6bbSAjit Khaparde  * @param vf_id
215dd46c6bbSAjit Khaparde  *    VF on which to get.
216dd46c6bbSAjit Khaparde  * @return
217dd46c6bbSAjit Khaparde  *   - (0) if successful.
218dd46c6bbSAjit Khaparde  *   - (-ENODEV) if *port* invalid.
219dd46c6bbSAjit Khaparde  *   - (-EINVAL) if bad parameter.
220dd46c6bbSAjit Khaparde  */
221f8244c63SZhiyong Yang int rte_pmd_bnxt_reset_vf_stats(uint16_t port,
222dd46c6bbSAjit Khaparde 				uint16_t vf_id);
223dd46c6bbSAjit Khaparde 
224dd46c6bbSAjit Khaparde /**
22536735a93SAjit Khaparde  * Enable/Disable VF VLAN anti spoof
22636735a93SAjit Khaparde  *
22736735a93SAjit Khaparde  * @param port
22836735a93SAjit Khaparde  *    The port identifier of the Ethernet device.
22936735a93SAjit Khaparde  * @param vf
23036735a93SAjit Khaparde  *   VF id.
23136735a93SAjit Khaparde  * @param on
23236735a93SAjit Khaparde  *    1 - Enable VF VLAN anti spoof.
23336735a93SAjit Khaparde  *    0 - Disable VF VLAN anti spoof.
23436735a93SAjit Khaparde  *
23536735a93SAjit Khaparde  * @return
23636735a93SAjit Khaparde  *   - (0) if successful.
23736735a93SAjit Khaparde  *   - (-ENODEV) if *port* invalid.
23836735a93SAjit Khaparde  *   - (-EINVAL) if bad parameter.
23936735a93SAjit Khaparde  */
240f8244c63SZhiyong Yang int rte_pmd_bnxt_set_vf_vlan_anti_spoof(uint16_t port, uint16_t vf, uint8_t on);
241dd46c6bbSAjit Khaparde 
2424cfe399fSAjit Khaparde /**
2434cfe399fSAjit Khaparde  * Set RX L2 Filtering mode of a VF of an Ethernet device.
2444cfe399fSAjit Khaparde  *
2454cfe399fSAjit Khaparde  * @param port
2464cfe399fSAjit Khaparde  *   The port identifier of the Ethernet device.
2474cfe399fSAjit Khaparde  * @param vf
2484cfe399fSAjit Khaparde  *   VF id.
2494cfe399fSAjit Khaparde  * @param rx_mask
2504cfe399fSAjit Khaparde  *    The RX mode mask
2514cfe399fSAjit Khaparde  * @param on
2524cfe399fSAjit Khaparde  *    1 - Enable a VF RX mode.
2534cfe399fSAjit Khaparde  *    0 - Disable a VF RX mode.
2544cfe399fSAjit Khaparde  * @return
2554cfe399fSAjit Khaparde  *   - (0) if successful.
2564cfe399fSAjit Khaparde  *   - (-ENODEV) if *port_id* invalid.
2574cfe399fSAjit Khaparde  *   - (-EINVAL) if bad parameter.
2584cfe399fSAjit Khaparde  */
259f8244c63SZhiyong Yang int rte_pmd_bnxt_set_vf_rxmode(uint16_t port, uint16_t vf,
2604cfe399fSAjit Khaparde 				uint16_t rx_mask, uint8_t on);
261ff63ebbbSAjit Khaparde 
262ff63ebbbSAjit Khaparde /**
263ff63ebbbSAjit Khaparde  * Returns the number of default RX queues on a VF
264ff63ebbbSAjit Khaparde  *
265ff63ebbbSAjit Khaparde  * @param port
266ff63ebbbSAjit Khaparde  *    The port identifier of the Ethernet device.
267ff63ebbbSAjit Khaparde  * @param vf
268ff63ebbbSAjit Khaparde  *   VF id.
269ff63ebbbSAjit Khaparde  * @return
270ff63ebbbSAjit Khaparde  *   - Non-negative value - Number of default RX queues
271ff63ebbbSAjit Khaparde  *   - (-EINVAL) if bad parameter.
272ff63ebbbSAjit Khaparde  *   - (-ENOTSUP) if on a function without VFs
273ff63ebbbSAjit Khaparde  *   - (-ENOMEM) on an allocation failure
274ff63ebbbSAjit Khaparde  *   - (-1) firmware interface error
275ff63ebbbSAjit Khaparde  */
276f8244c63SZhiyong Yang int rte_pmd_bnxt_get_vf_rx_status(uint16_t port, uint16_t vf_id);
277ff63ebbbSAjit Khaparde 
278dd46c6bbSAjit Khaparde /**
279dd46c6bbSAjit Khaparde  * Queries the TX drop counter for the function
280dd46c6bbSAjit Khaparde  *
281dd46c6bbSAjit Khaparde  * @param port
282dd46c6bbSAjit Khaparde  *    The port identifier of the Ethernet device.
283dd46c6bbSAjit Khaparde  * @param vf_id
284dd46c6bbSAjit Khaparde  *    VF on which to get.
285dd46c6bbSAjit Khaparde  * @param count
286dd46c6bbSAjit Khaparde  *    Pointer to a uint64_t that will be populated with the counter value.
287dd46c6bbSAjit Khaparde  * @return
288dd46c6bbSAjit Khaparde  *   - Positive Non-zero value - Error code from HWRM
289dd46c6bbSAjit Khaparde  *   - (-EINVAL) invalid vf_id specified.
290dd46c6bbSAjit Khaparde  *   - (-ENOTSUP) Ethernet device is not a PF
291dd46c6bbSAjit Khaparde  */
292f8244c63SZhiyong Yang int rte_pmd_bnxt_get_vf_tx_drop_count(uint16_t port, uint16_t vf_id,
293dd46c6bbSAjit Khaparde 				      uint64_t *count);
2947a5b0874SAjit Khaparde 
2957a5b0874SAjit Khaparde /**
2967a5b0874SAjit Khaparde  * Programs the MAC address for the function specified
2977a5b0874SAjit Khaparde  *
2987a5b0874SAjit Khaparde  * @param port
2997a5b0874SAjit Khaparde  *    The port identifier of the Ethernet device.
3007a5b0874SAjit Khaparde  * @param mac_addr
3017a5b0874SAjit Khaparde  *    The MAC address to be programmed in the filter.
3027a5b0874SAjit Khaparde  * @param vf_id
3037a5b0874SAjit Khaparde  *    VF on which to get.
3047a5b0874SAjit Khaparde  * @return
3057a5b0874SAjit Khaparde  *   - Positive Non-zero value - Error code from HWRM
3067a5b0874SAjit Khaparde  *   - (-EINVAL) invalid vf_id specified.
3077a5b0874SAjit Khaparde  *   - (-ENOTSUP) Ethernet device is not a PF
3087a5b0874SAjit Khaparde  *   - (-ENOMEM) on an allocation failure
3097a5b0874SAjit Khaparde  */
3106d13ea8eSOlivier Matz int rte_pmd_bnxt_mac_addr_add(uint16_t port, struct rte_ether_addr *mac_addr,
3117a5b0874SAjit Khaparde 				uint32_t vf_id);
31244bec709SAjit Khaparde 
31344bec709SAjit Khaparde /**
31444bec709SAjit Khaparde  * Enable/Disable VF statistics retention
31544bec709SAjit Khaparde  *
31644bec709SAjit Khaparde  * @param port
31744bec709SAjit Khaparde  *    The port identifier of the Ethernet device.
31844bec709SAjit Khaparde  * @param vf
31944bec709SAjit Khaparde  *   VF id.
32044bec709SAjit Khaparde  * @param on
32144bec709SAjit Khaparde  *    1 - Prevent VF statistics from automatically resetting
32244bec709SAjit Khaparde  *    0 - Allow VF statistics to automatically reset
32344bec709SAjit Khaparde  *
32444bec709SAjit Khaparde  * @return
32544bec709SAjit Khaparde  *   - (0) if successful.
32644bec709SAjit Khaparde  *   - (-ENODEV) if *port* invalid.
32744bec709SAjit Khaparde  *   - (-EINVAL) if bad parameter.
32844bec709SAjit Khaparde  */
329f8244c63SZhiyong Yang int rte_pmd_bnxt_set_vf_persist_stats(uint16_t port, uint16_t vf, uint8_t on);
33049947a13SAjit Khaparde #endif /* _PMD_BNXT_H_ */
331