* Updated defines and data types to allow 256 VFRs.
* Increased the encap record cache to support 256 to 4K entries. So
VxLAN connections can be scaled to 4K entries.
Signed-off-by: Shahaji Bhosle <sbhosle@broadcom.com>
Signed-off-by: Kishore Padmanabha <kishore.padmanabha@broadcom.com>
Signed-off-by: Venkat Duvvuru <venkatkumar.duvvuru@broadcom.com>
Reviewed-by: Randy Schacher <stuart.schacher@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
struct bnxt_pf_info {
#define BNXT_FIRST_PF_FID 1
#define BNXT_MAX_VFS(bp) ((bp)->pf->max_vfs)
-#define BNXT_MAX_VF_REPS 64
+#define BNXT_MAX_VF_REPS_WH 64
+#define BNXT_MAX_VF_REPS_TH 256
+#define BNXT_MAX_VF_REPS(bp) \
+ (BNXT_CHIP_P5(bp) ? BNXT_MAX_VF_REPS_TH : \
+ BNXT_MAX_VF_REPS_WH)
#define BNXT_TOTAL_VFS(bp) ((bp)->pf->total_vfs)
#define BNXT_FIRST_VF_FID 128
#define BNXT_PF_RINGS_USED(bp) bnxt_get_num_queues(bp)
BNXT_DEFAULT_VNIC_CHANGE_VF_ID_SFT;
PMD_DRV_LOG(INFO, "async event received vf_id 0x%x\n", vf_fid);
- for (vf_id = 0; vf_id < BNXT_MAX_VF_REPS; vf_id++) {
+ for (vf_id = 0; vf_id < BNXT_MAX_VF_REPS(bp); vf_id++) {
eth_dev = bp->rep_info[vf_id].vfr_eth_dev;
if (!eth_dev)
continue;
struct rte_eth_link *link = ð_dev->data->dev_link;
if (link->link_status)
- PMD_DRV_LOG(INFO, "Port %d Link Up - speed %u Mbps - %s\n",
+ PMD_DRV_LOG(DEBUG, "Port %d Link Up - speed %u Mbps - %s\n",
eth_dev->data->port_id,
(uint32_t)link->link_speed,
(link->link_duplex == RTE_ETH_LINK_FULL_DUPLEX) ?
return 0;
bp->rep_info = rte_zmalloc("bnxt_rep_info",
- sizeof(bp->rep_info[0]) * BNXT_MAX_VF_REPS,
+ sizeof(bp->rep_info[0]) * BNXT_MAX_VF_REPS(bp),
0);
if (!bp->rep_info) {
PMD_DRV_LOG(ERR, "Failed to alloc memory for rep info\n");
{
struct rte_eth_dev *vf_rep_eth_dev;
char name[RTE_ETH_NAME_MAX_LEN];
- struct bnxt *backing_bp;
+ struct bnxt *backing_bp = backing_eth_dev->data->dev_private;
+ uint16_t max_vf_reps = BNXT_MAX_VF_REPS(backing_bp);
+
uint16_t num_rep;
int i, ret = 0;
struct rte_kvargs *kvlist = NULL;
return -ENOTSUP;
}
num_rep = eth_da->nb_representor_ports;
- if (num_rep > BNXT_MAX_VF_REPS) {
+ if (num_rep > max_vf_reps) {
PMD_DRV_LOG(ERR, "nb_representor_ports = %d > %d MAX VF REPS\n",
- num_rep, BNXT_MAX_VF_REPS);
+ num_rep, max_vf_reps);
return -EINVAL;
}
return -EINVAL;
}
- backing_bp = backing_eth_dev->data->dev_private;
-
if (!(BNXT_PF(backing_bp) || BNXT_VF_IS_TRUSTED(backing_bp))) {
PMD_DRV_LOG(ERR,
"Not a PF or trusted VF. No Representor support\n");
.parent_dev = backing_eth_dev
};
- if (representor.vf_id >= BNXT_MAX_VF_REPS) {
+ if (representor.vf_id >= max_vf_reps) {
PMD_DRV_LOG(ERR, "VF-Rep id %d >= %d MAX VF ID\n",
- representor.vf_id, BNXT_MAX_VF_REPS);
+ representor.vf_id, max_vf_reps);
continue;
}
eth_dev->data->dev_link.link_status = link->link_status;
eth_dev->data->dev_link.link_autoneg = link->link_autoneg;
- PMD_DRV_LOG(INFO, "calling bnxt_print_link_info\n");
bnxt_print_link_info(eth_dev);
PMD_DRV_LOG(INFO,
if (!bp->rep_info)
return 0;
- for (vf_id = 0; vf_id < BNXT_MAX_VF_REPS; vf_id++) {
+ for (vf_id = 0; vf_id < BNXT_MAX_VF_REPS(bp); vf_id++) {
rep_eth_dev = bp->rep_info[vf_id].vfr_eth_dev;
if (!rep_eth_dev)
continue;
uint32_t *flags);
int32_t
-bnxt_ulp_get_df_rule_info(uint8_t port_id, struct bnxt_ulp_context *ulp_ctx,
+bnxt_ulp_get_df_rule_info(uint16_t port_id, struct bnxt_ulp_context *ulp_ctx,
struct bnxt_ulp_df_rule_info *info);
struct bnxt_ulp_vfr_rule_info*
* All rights reserved.
*/
-/* date: Thu Sep 9 11:11:05 2021 */
+/* date: Thu Sep 16 11:49:55 2021 */
#include "ulp_template_db_enum.h"
#include "ulp_template_db_field.h"
},
[BNXT_ULP_RESOURCE_SUB_TYPE_GENERIC_TABLE_VXLAN_ENCAP_REC_CACHE << 1 |
BNXT_ULP_DIRECTION_EGRESS] = {
- .name = "INGRESS GEN_TABLE_VXLAN_ENCAP_REC_CACHE",
- .result_num_entries = 256,
+ .name = "EGRESS GEN_TABLE_VXLAN_ENCAP_REC_CACHE",
+ .result_num_entries = 4096,
.result_num_bytes = 6,
.key_num_bytes = 17,
.num_buckets = 8,
- .hash_tbl_entries = 1024,
+ .hash_tbl_entries = 16384,
.result_byte_order = BNXT_ULP_BYTE_ORDER_LE
}
};
bnxt_ulp_destroy_df_rules(struct bnxt *bp, bool global)
{
struct bnxt_ulp_df_rule_info *info;
- uint8_t port_id;
+ uint16_t port_id;
if (!BNXT_TRUFLOW_EN(bp) ||
BNXT_ETH_DEV_IS_REPRESENTOR(bp->eth_dev))
bnxt_ulp_create_df_rules(struct bnxt *bp)
{
struct bnxt_ulp_df_rule_info *info;
- uint8_t port_id;
+ uint16_t port_id;
int rc = 0;
if (!BNXT_TRUFLOW_EN(bp) ||
struct rte_eth_dev *parent_dev = vfr->parent_dev;
struct bnxt *bp = parent_dev->data->dev_private;
uint16_t vfr_port_id = vfr_ethdev->data->port_id;
- uint8_t port_id;
+ uint16_t port_id;
int rc;
if (!bp || !BNXT_TRUFLOW_EN(bp))