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