c53c2f435f
The function id being used in the flush is incorrect, fixed the
flush of the flows.
Fixes: 74bcfc0624
("net/bnxt: add session and function flow flush")
Cc: stable@dpdk.org
Signed-off-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com>
Reviewed-by: Shahaji Bhosle <sbhosle@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
276 lines
6.7 KiB
C
276 lines
6.7 KiB
C
/* SPDX-License-Identifier: BSD-3-Clause
|
|
* Copyright(c) 2014-2019 Broadcom
|
|
* All rights reserved.
|
|
*/
|
|
|
|
#ifndef _ULP_PORT_DB_H_
|
|
#define _ULP_PORT_DB_H_
|
|
|
|
#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;
|
|
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 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 */
|
|
struct bnxt_ulp_port_db {
|
|
struct ulp_interface_info *ulp_intf_list;
|
|
uint32_t ulp_intf_list_size;
|
|
|
|
/* 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];
|
|
};
|
|
|
|
/*
|
|
* Initialize the port database. Memory is allocated in this
|
|
* call and assigned to the port database.
|
|
*
|
|
* ulp_ctxt [in] Ptr to ulp context
|
|
*
|
|
* Returns 0 on success or negative number on failure.
|
|
*/
|
|
int32_t ulp_port_db_init(struct bnxt_ulp_context *ulp_ctxt, uint8_t port_cnt);
|
|
|
|
/*
|
|
* Deinitialize the port database. Memory is deallocated in
|
|
* this call.
|
|
*
|
|
* ulp_ctxt [in] Ptr to ulp context
|
|
*
|
|
* Returns 0 on success.
|
|
*/
|
|
int32_t ulp_port_db_deinit(struct bnxt_ulp_context *ulp_ctxt);
|
|
|
|
/*
|
|
* Update the port database.This api is called when the port
|
|
* details are available during the startup.
|
|
*
|
|
* ulp_ctxt [in] Ptr to ulp context
|
|
* bp [in]. ptr to the device function.
|
|
*
|
|
* Returns 0 on success or negative number on failure.
|
|
*/
|
|
int32_t ulp_port_db_dev_port_intf_update(struct bnxt_ulp_context *ulp_ctxt,
|
|
struct rte_eth_dev *eth_dev);
|
|
|
|
/*
|
|
* Api to get the ulp ifindex for a given device port.
|
|
*
|
|
* ulp_ctxt [in] Ptr to ulp context
|
|
* port_id [in].device port id
|
|
* ifindex [out] ulp ifindex
|
|
*
|
|
* Returns 0 on success or negative number on failure.
|
|
*/
|
|
int32_t
|
|
ulp_port_db_dev_port_to_ulp_index(struct bnxt_ulp_context *ulp_ctxt,
|
|
uint32_t port_id, uint32_t *ifindex);
|
|
|
|
/*
|
|
* Api to get the function id for a given ulp ifindex.
|
|
*
|
|
* ulp_ctxt [in] Ptr to ulp context
|
|
* ifindex [in] ulp ifindex
|
|
* func_id [out] the function id of the given ifindex.
|
|
*
|
|
* Returns 0 on success or negative number on failure.
|
|
*/
|
|
int32_t
|
|
ulp_port_db_function_id_get(struct bnxt_ulp_context *ulp_ctxt,
|
|
uint32_t ifindex, uint32_t fid_type,
|
|
uint16_t *func_id);
|
|
|
|
/*
|
|
* Api to get the svif for a given ulp ifindex.
|
|
*
|
|
* ulp_ctxt [in] Ptr to ulp context
|
|
* ifindex [in] ulp ifindex
|
|
* dir [in] the direction for the flow.
|
|
* svif [out] the svif of the given ifindex.
|
|
*
|
|
* Returns 0 on success or negative number on failure.
|
|
*/
|
|
int32_t
|
|
ulp_port_db_svif_get(struct bnxt_ulp_context *ulp_ctxt,
|
|
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.
|
|
*
|
|
* ulp_ctxt [in] Ptr to ulp context
|
|
* ifindex [in] ulp ifindex
|
|
* vnic [out] the vnic of the given ifindex.
|
|
*
|
|
* Returns 0 on success or negative number on failure.
|
|
*/
|
|
int32_t
|
|
ulp_port_db_default_vnic_get(struct bnxt_ulp_context *ulp_ctxt,
|
|
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);
|
|
|
|
#endif /* _ULP_PORT_DB_H_ */
|