/* * On OcteonTX2 platform IPSec ucode can use both IE and SE engines therefore * IE and SE engines can be attached to the same engine group.
*/ #define OTX2_CPT_MAX_ETYPES_PER_GRP 2
/* Maximum and current number of engines available for all engine groups */ struct otx2_cpt_engs_available { int max_se_cnt; int max_ie_cnt; int max_ae_cnt; int se_cnt; int ie_cnt; int ae_cnt;
};
/* Engines reserved to an engine group */ struct otx2_cpt_engs_rsvd { int type; /* engine type */ int count; /* number of engines attached */ int offset; /* constant offset of engine type in the bitmap */ unsignedlong *bmap; /* attached engines bitmap */ struct otx2_cpt_ucode *ucode; /* ucode used by these engines */
};
struct otx2_cpt_mirror_info { int is_ena; /* * is mirroring enabled, it is set only for engine * group which mirrors another engine group
*/ int idx; /* * index of engine group which is mirrored by this * group, set only for engine group which mirrors * another group
*/ int ref_count; /* * number of times this engine group is mirrored by * other groups, this is set only for engine group * which is mirrored by other group(s)
*/
};
struct otx2_cpt_eng_grp_info { struct otx2_cpt_eng_grps *g; /* pointer to engine_groups structure */ /* engines attached */ struct otx2_cpt_engs_rsvd engs[OTX2_CPT_MAX_ETYPES_PER_GRP]; /* ucodes information */ struct otx2_cpt_ucode ucode[OTX2_CPT_MAX_ETYPES_PER_GRP]; /* engine group mirroring information */ struct otx2_cpt_mirror_info mirror; int idx; /* engine group index */ bool is_enabled; /* * is engine group enabled, engine group is enabled * when it has engines attached and ucode loaded
*/
};
struct otx2_cpt_eng_grps { struct mutex lock; struct otx2_cpt_eng_grp_info grp[OTX2_CPT_MAX_ENGINE_GROUPS]; struct otx2_cpt_engs_available avail; void *obj; /* device specific data */ int engs_num; /* total number of engines supported */
u8 eng_ref_cnt[OTX2_CPT_MAX_ENGINES];/* engines reference count */ bool is_grps_created; /* Is the engine groups are already created */
u16 rid;
}; struct otx2_cptpf_dev; int otx2_cpt_init_eng_grps(struct pci_dev *pdev, struct otx2_cpt_eng_grps *eng_grps); void otx2_cpt_cleanup_eng_grps(struct pci_dev *pdev, struct otx2_cpt_eng_grps *eng_grps); int otx2_cpt_create_eng_grps(struct otx2_cptpf_dev *cptpf, struct otx2_cpt_eng_grps *eng_grps); int otx2_cpt_disable_all_cores(struct otx2_cptpf_dev *cptpf); int otx2_cpt_get_eng_grp(struct otx2_cpt_eng_grps *eng_grps, int eng_type); int otx2_cpt_discover_eng_capabilities(struct otx2_cptpf_dev *cptpf); int otx2_cpt_dl_custom_egrp_create(struct otx2_cptpf_dev *cptpf, struct devlink_param_gset_ctx *ctx); int otx2_cpt_dl_custom_egrp_delete(struct otx2_cptpf_dev *cptpf, struct devlink_param_gset_ctx *ctx); struct otx2_cpt_engs_rsvd *find_engines_by_type( struct otx2_cpt_eng_grp_info *eng_grp, int eng_type); #endif/* __OTX2_CPTPF_UCODE_H */
Messung V0.5
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.