1 /* SPDX-License-Identifier: BSD-3-Clause
3 * Copyright(c) 2019-2020 Xilinx, Inc.
4 * Copyright(c) 2019 Solarflare Communications Inc.
6 * This software was jointly developed between OKTET Labs (under contract
7 * for Solarflare) and Solarflare Communications, Inc.
12 #include <rte_common.h>
20 sfc_mae_attach(struct sfc_adapter *sa)
22 const efx_nic_cfg_t *encp = efx_nic_cfg_get(sa->nic);
23 struct sfc_mae *mae = &sa->mae;
24 efx_mae_limits_t limits;
27 sfc_log_init(sa, "entry");
29 if (!encp->enc_mae_supported) {
30 mae->status = SFC_MAE_STATUS_UNSUPPORTED;
34 sfc_log_init(sa, "init MAE");
35 rc = efx_mae_init(sa->nic);
39 sfc_log_init(sa, "get MAE limits");
40 rc = efx_mae_get_limits(sa->nic, &limits);
42 goto fail_mae_get_limits;
44 mae->status = SFC_MAE_STATUS_SUPPORTED;
45 mae->nb_action_rule_prios_max = limits.eml_max_n_action_prios;
47 sfc_log_init(sa, "done");
52 efx_mae_fini(sa->nic);
55 sfc_log_init(sa, "failed %d", rc);
61 sfc_mae_detach(struct sfc_adapter *sa)
63 struct sfc_mae *mae = &sa->mae;
64 enum sfc_mae_status status_prev = mae->status;
66 sfc_log_init(sa, "entry");
68 mae->nb_action_rule_prios_max = 0;
69 mae->status = SFC_MAE_STATUS_UNKNOWN;
71 if (status_prev != SFC_MAE_STATUS_SUPPORTED)
74 efx_mae_fini(sa->nic);
76 sfc_log_init(sa, "done");