MCPcopy Create free account
hub / github.com/F-Stack/f-stack / efx_mae_init

Function efx_mae_init

dpdk/drivers/common/sfc_efx/base/efx_mae.c:267–345  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

265}
266
267 __checkReturn efx_rc_t
268efx_mae_init(
269 __in efx_nic_t *enp)
270{
271 const efx_nic_cfg_t *encp = efx_nic_cfg_get(enp);
272 efx_mae_field_cap_t *or_fcaps;
273 size_t or_fcaps_size;
274 efx_mae_field_cap_t *ar_fcaps;
275 size_t ar_fcaps_size;
276 efx_mae_t *maep;
277 efx_rc_t rc;
278
279 if (encp->enc_mae_supported == B_FALSE) {
280 rc = ENOTSUP;
281 goto fail1;
282 }
283
284 EFSYS_KMEM_ALLOC(enp->en_esip, sizeof (*maep), maep);
285 if (maep == NULL) {
286 rc = ENOMEM;
287 goto fail2;
288 }
289
290 enp->en_maep = maep;
291
292 rc = efx_mae_get_capabilities(enp);
293 if (rc != 0)
294 goto fail3;
295
296 or_fcaps_size = maep->em_max_nfields * sizeof (*or_fcaps);
297 EFSYS_KMEM_ALLOC(enp->en_esip, or_fcaps_size, or_fcaps);
298 if (or_fcaps == NULL) {
299 rc = ENOMEM;
300 goto fail4;
301 }
302
303 maep->em_outer_rule_field_caps_size = or_fcaps_size;
304 maep->em_outer_rule_field_caps = or_fcaps;
305
306 rc = efx_mae_get_outer_rule_caps(enp, maep->em_max_nfields, or_fcaps);
307 if (rc != 0)
308 goto fail5;
309
310 ar_fcaps_size = maep->em_max_nfields * sizeof (*ar_fcaps);
311 EFSYS_KMEM_ALLOC(enp->en_esip, ar_fcaps_size, ar_fcaps);
312 if (ar_fcaps == NULL) {
313 rc = ENOMEM;
314 goto fail6;
315 }
316
317 maep->em_action_rule_field_caps_size = ar_fcaps_size;
318 maep->em_action_rule_field_caps = ar_fcaps;
319
320 rc = efx_mae_get_action_rule_caps(enp, maep->em_max_nfields, ar_fcaps);
321 if (rc != 0)
322 goto fail7;
323
324 return (0);

Callers 1

sfc_mae_attachFunction · 0.85

Calls 4

efx_nic_cfg_getFunction · 0.85
efx_mae_get_capabilitiesFunction · 0.85

Tested by

no test coverage detected