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

Function efx_mac_addr_set

dpdk/drivers/common/sfc_efx/base/efx_mac.c:156–199  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

154}
155
156 __checkReturn efx_rc_t
157efx_mac_addr_set(
158 __in efx_nic_t *enp,
159 __in uint8_t *addr)
160{
161 efx_port_t *epp = &(enp->en_port);
162 const efx_mac_ops_t *emop = epp->ep_emop;
163 uint8_t old_addr[6];
164 uint32_t oui;
165 efx_rc_t rc;
166
167 EFSYS_ASSERT3U(enp->en_magic, ==, EFX_NIC_MAGIC);
168 EFSYS_ASSERT3U(enp->en_mod_flags, &, EFX_MOD_PORT);
169
170 if (EFX_MAC_ADDR_IS_MULTICAST(addr)) {
171 rc = EINVAL;
172 goto fail1;
173 }
174
175 oui = addr[0] << 16 | addr[1] << 8 | addr[2];
176 if (oui == 0x000000) {
177 rc = EINVAL;
178 goto fail2;
179 }
180
181 EFX_MAC_ADDR_COPY(old_addr, epp->ep_mac_addr);
182 EFX_MAC_ADDR_COPY(epp->ep_mac_addr, addr);
183 if ((rc = emop->emo_addr_set(enp)) != 0)
184 goto fail3;
185
186 return (0);
187
188fail3:
189 EFSYS_PROBE(fail3);
190
191 EFX_MAC_ADDR_COPY(epp->ep_mac_addr, old_addr);
192
193fail2:
194 EFSYS_PROBE(fail2);
195fail1:
196 EFSYS_PROBE1(fail1, efx_rc_t, rc);
197
198 return (rc);
199}
200
201 __checkReturn efx_rc_t
202efx_mac_filter_set(

Callers 2

sfc_mac_addr_setFunction · 0.85
sfc_port_startFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected