net/bnxt: support flow meter drop counter
This patch adds flow meter drop counter support for Thor. Signed-off-by: Jay Ding <jay.ding@broadcom.com> Reviewed-by: Farah Smith <farah.smith@broadcom.com> Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
This commit is contained in:
parent
dfc65c77c0
commit
998b9639df
@ -104,11 +104,12 @@
|
||||
#define CFA_RESOURCE_TYPE_P58_WC_FKB 0x12UL
|
||||
/* VEB TCAM */
|
||||
#define CFA_RESOURCE_TYPE_P58_VEB_TCAM 0x13UL
|
||||
/* Metadata */
|
||||
#define CFA_RESOURCE_TYPE_P58_METADATA 0x14UL
|
||||
/* Meter drop counter */
|
||||
#define CFA_RESOURCE_TYPE_P58_METER_DROP_CNT 0x15UL
|
||||
#define CFA_RESOURCE_TYPE_P58_LAST CFA_RESOURCE_TYPE_P58_METER_DROP_CNT
|
||||
|
||||
|
||||
/* Multicast Group */
|
||||
#define CFA_RESOURCE_TYPE_P45_MCG 0x0UL
|
||||
/* Encap 8 byte record */
|
||||
|
@ -283,9 +283,9 @@ enum tf_tbl_type {
|
||||
TF_TBL_TYPE_ACT_MODIFY_32B,
|
||||
/** TH 64B Modify Record */
|
||||
TF_TBL_TYPE_ACT_MODIFY_64B,
|
||||
/** (Future) Meter Profiles */
|
||||
/** Meter Profiles */
|
||||
TF_TBL_TYPE_METER_PROF,
|
||||
/** (Future) Meter Instance */
|
||||
/** Meter Instance */
|
||||
TF_TBL_TYPE_METER_INST,
|
||||
/** Wh+/SR/Th Mirror Config */
|
||||
TF_TBL_TYPE_MIRROR_CONFIG,
|
||||
@ -301,6 +301,8 @@ enum tf_tbl_type {
|
||||
TF_TBL_TYPE_EM_FKB,
|
||||
/** TH WC Flexible Key builder */
|
||||
TF_TBL_TYPE_WC_FKB,
|
||||
/** Meter Drop Counter */
|
||||
TF_TBL_TYPE_METER_DROP_CNT,
|
||||
|
||||
/* External */
|
||||
|
||||
@ -2194,6 +2196,8 @@ enum tf_global_config_type {
|
||||
TF_TUNNEL_ENCAP, /**< Tunnel Encap Config(TECT) */
|
||||
TF_ACTION_BLOCK, /**< Action Block Config(ABCR) */
|
||||
TF_COUNTER_CFG, /**< Counter Configuration (CNTRS_CTRL) */
|
||||
TF_METER_CFG, /**< Meter Config(ACTP4_FMTCR) */
|
||||
TF_METER_INTERVAL_CFG, /**< Meter Interval Config(FMTCR_INTERVAL) */
|
||||
TF_GLOBAL_CFG_TYPE_MAX
|
||||
};
|
||||
|
||||
|
@ -43,6 +43,7 @@ const char *tf_resource_str_p58[CFA_RESOURCE_TYPE_P58_LAST + 1] = {
|
||||
[CFA_RESOURCE_TYPE_P58_EM_FKB] = "em_fkb ",
|
||||
[CFA_RESOURCE_TYPE_P58_WC_FKB] = "wc_fkb ",
|
||||
[CFA_RESOURCE_TYPE_P58_VEB_TCAM] = "veb ",
|
||||
[CFA_RESOURCE_TYPE_P58_METADATA] = "metadata",
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -75,10 +75,18 @@ struct tf_rm_element_cfg tf_tbl_p58[TF_TBL_TYPE_MAX] = {
|
||||
TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P58_METER,
|
||||
0, 0, 0
|
||||
},
|
||||
[TF_TBL_TYPE_METER_DROP_CNT] = {
|
||||
TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P58_METER_DROP_CNT,
|
||||
0, 0, 0
|
||||
},
|
||||
[TF_TBL_TYPE_MIRROR_CONFIG] = {
|
||||
TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P58_MIRROR,
|
||||
0, 0, 0
|
||||
},
|
||||
[TF_TBL_TYPE_METADATA] = {
|
||||
TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P58_METADATA,
|
||||
0, 0, 0
|
||||
},
|
||||
/* Policy - ARs in bank 1 */
|
||||
[TF_TBL_TYPE_FULL_ACT_RECORD] = {
|
||||
.cfg_type = TF_RM_ELEM_CFG_HCAPI_BA_PARENT,
|
||||
@ -194,5 +202,11 @@ struct tf_global_cfg_cfg tf_global_cfg_p58[TF_GLOBAL_CFG_TYPE_MAX] = {
|
||||
[TF_COUNTER_CFG] = {
|
||||
TF_GLOBAL_CFG_CFG_HCAPI, TF_COUNTER_CFG
|
||||
},
|
||||
[TF_METER_CFG] = {
|
||||
TF_GLOBAL_CFG_CFG_HCAPI, TF_METER_CFG
|
||||
},
|
||||
[TF_METER_INTERVAL_CFG] = {
|
||||
TF_GLOBAL_CFG_CFG_HCAPI, TF_METER_INTERVAL_CFG
|
||||
},
|
||||
};
|
||||
#endif /* _TF_DEVICE_P58_H_ */
|
||||
|
@ -374,6 +374,10 @@ tf_tbl_set(struct tf *tfp,
|
||||
}
|
||||
}
|
||||
|
||||
/* Do not check meter drop counter because it is not allocated
|
||||
* resources
|
||||
*/
|
||||
if (parms->type != TF_TBL_TYPE_METER_DROP_CNT) {
|
||||
/* Verify that the entry has been previously allocated */
|
||||
aparms.rm_db = tbl_db->tbl_db[parms->dir];
|
||||
aparms.subtype = parms->type;
|
||||
@ -392,6 +396,7 @@ tf_tbl_set(struct tf *tfp,
|
||||
parms->idx);
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
/* Set the entry */
|
||||
hparms.rm_db = tbl_db->tbl_db[parms->dir];
|
||||
@ -477,6 +482,10 @@ tf_tbl_get(struct tf *tfp,
|
||||
}
|
||||
}
|
||||
|
||||
/* Do not check meter drop counter because it is not allocated
|
||||
* resources.
|
||||
*/
|
||||
if (parms->type != TF_TBL_TYPE_METER_DROP_CNT) {
|
||||
/* Verify that the entry has been previously allocated */
|
||||
aparms.rm_db = tbl_db->tbl_db[parms->dir];
|
||||
aparms.subtype = parms->type;
|
||||
@ -495,6 +504,7 @@ tf_tbl_get(struct tf *tfp,
|
||||
parms->idx);
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
/* Set the entry */
|
||||
hparms.rm_db = tbl_db->tbl_db[parms->dir];
|
||||
|
@ -112,6 +112,8 @@ tf_tbl_type_2_str(enum tf_tbl_type tbl_type)
|
||||
return "WC Flexible Key Builder";
|
||||
case TF_TBL_TYPE_EXT:
|
||||
return "External";
|
||||
case TF_TBL_TYPE_METER_DROP_CNT:
|
||||
return "Meter drop counter";
|
||||
default:
|
||||
return "Invalid tbl type";
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user