typedef struct efx_mae_limits_s {
uint32_t eml_max_n_action_prios;
+ uint32_t eml_max_n_outer_prios;
+ uint32_t eml_encap_types_supported;
} efx_mae_limits_t;
LIBEFX_API
/** Action rule match field capabilities. */
efx_mae_field_cap_t *em_action_rule_field_caps;
size_t em_action_rule_field_caps_size;
+ uint32_t em_max_n_outer_prios;
+ uint32_t em_encap_types_supported;
} efx_mae_t;
#endif /* EFSYS_OPT_MAE */
goto fail2;
}
+ maep->em_max_n_outer_prios =
+ MCDI_OUT_DWORD(req, MAE_GET_CAPS_OUT_OUTER_PRIOS);
+
maep->em_max_n_action_prios =
MCDI_OUT_DWORD(req, MAE_GET_CAPS_OUT_ACTION_PRIOS);
+ maep->em_encap_types_supported = 0;
+
+ if (MCDI_OUT_DWORD(req, MAE_GET_CAPS_OUT_ENCAP_TYPE_VXLAN) == 1) {
+ maep->em_encap_types_supported |=
+ (1U << EFX_TUNNEL_PROTOCOL_VXLAN);
+ }
+
+ if (MCDI_OUT_DWORD(req, MAE_GET_CAPS_OUT_ENCAP_TYPE_GENEVE) == 1) {
+ maep->em_encap_types_supported |=
+ (1U << EFX_TUNNEL_PROTOCOL_GENEVE);
+ }
+
+ if (MCDI_OUT_DWORD(req, MAE_GET_CAPS_OUT_ENCAP_TYPE_NVGRE) == 1) {
+ maep->em_encap_types_supported |=
+ (1U << EFX_TUNNEL_PROTOCOL_NVGRE);
+ }
+
maep->em_max_nfields =
MCDI_OUT_DWORD(req, MAE_GET_CAPS_OUT_MATCH_FIELD_COUNT);
goto fail1;
}
+ emlp->eml_max_n_outer_prios = maep->em_max_n_outer_prios;
emlp->eml_max_n_action_prios = maep->em_max_n_action_prios;
+ emlp->eml_encap_types_supported = maep->em_encap_types_supported;
return (0);