| 86 | int sfc_dp_mport_offset = -1; |
| 87 | |
| 88 | int |
| 89 | sfc_dp_mport_register(void) |
| 90 | { |
| 91 | static const struct rte_mbuf_dynfield mport = { |
| 92 | .name = "rte_net_sfc_dynfield_mport", |
| 93 | .size = sizeof(efx_mport_id_t), |
| 94 | .align = __alignof__(efx_mport_id_t), |
| 95 | }; |
| 96 | static const struct rte_mbuf_dynflag mport_override = { |
| 97 | .name = "rte_net_sfc_dynflag_mport_override", |
| 98 | }; |
| 99 | |
| 100 | int field_offset; |
| 101 | int flag; |
| 102 | |
| 103 | if (sfc_dp_mport_override != 0) { |
| 104 | SFC_GENERIC_LOG(INFO, "%s() already registered", __func__); |
| 105 | return 0; |
| 106 | } |
| 107 | |
| 108 | field_offset = rte_mbuf_dynfield_register(&mport); |
| 109 | if (field_offset < 0) { |
| 110 | SFC_GENERIC_LOG(ERR, "%s() failed to register mport dynfield", |
| 111 | __func__); |
| 112 | return -1; |
| 113 | } |
| 114 | |
| 115 | flag = rte_mbuf_dynflag_register(&mport_override); |
| 116 | if (flag < 0) { |
| 117 | SFC_GENERIC_LOG(ERR, "%s() failed to register mport dynflag", |
| 118 | __func__); |
| 119 | return -1; |
| 120 | } |
| 121 | |
| 122 | sfc_dp_mport_offset = field_offset; |
| 123 | sfc_dp_mport_override = UINT64_C(1) << flag; |
| 124 | |
| 125 | return 0; |
| 126 | } |
| 127 | |
| 128 | int sfc_dp_ft_ctx_id_offset = -1; |
| 129 | uint64_t sfc_dp_ft_ctx_id_valid; |
no test coverage detected