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

Function sfc_port_start

dpdk/drivers/net/sfc/sfc_port.c:185–365  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

183}
184
185int
186sfc_port_start(struct sfc_adapter *sa)
187{
188 struct sfc_port *port = &sa->port;
189 int rc;
190 uint32_t phy_adv_cap;
191 const uint32_t phy_pause_caps =
192 ((1u << EFX_PHY_CAP_PAUSE) | (1u << EFX_PHY_CAP_ASYM));
193
194 sfc_log_init(sa, "entry");
195
196 sfc_log_init(sa, "init filters");
197 rc = efx_filter_init(sa->nic);
198 if (rc != 0)
199 goto fail_filter_init;
200
201 sfc_log_init(sa, "init port");
202 rc = efx_port_init(sa->nic);
203 if (rc != 0)
204 goto fail_port_init;
205
206#if EFSYS_OPT_LOOPBACK
207 if (sa->eth_dev->data->dev_conf.lpbk_mode != 0) {
208 efx_link_mode_t link_mode;
209
210 link_mode =
211 sfc_port_phy_caps_to_max_link_speed(port->phy_adv_cap);
212 sfc_log_init(sa, "set loopback link_mode=%u type=%u", link_mode,
213 sa->eth_dev->data->dev_conf.lpbk_mode);
214 rc = efx_port_loopback_set(sa->nic, link_mode,
215 sa->eth_dev->data->dev_conf.lpbk_mode);
216 if (rc != 0)
217 goto fail_loopback_set;
218 }
219#endif
220
221 sfc_log_init(sa, "set flow control to %#x autoneg=%u",
222 port->flow_ctrl, port->flow_ctrl_autoneg);
223 rc = efx_mac_fcntl_set(sa->nic, port->flow_ctrl,
224 port->flow_ctrl_autoneg);
225 if (rc != 0)
226 goto fail_mac_fcntl_set;
227
228 sfc_log_init(sa, "set vlan strip to %u", port->vlan_strip);
229 rc = efx_port_vlan_strip_set(sa->nic, port->vlan_strip);
230 if (rc != 0)
231 goto fail_mac_vlan_strip_set;
232
233 /* Preserve pause capabilities set by above efx_mac_fcntl_set() */
234 efx_phy_adv_cap_get(sa->nic, EFX_PHY_CAP_CURRENT, &phy_adv_cap);
235 SFC_ASSERT((port->phy_adv_cap & phy_pause_caps) == 0);
236 phy_adv_cap = port->phy_adv_cap | (phy_adv_cap & phy_pause_caps) |
237 port->fec_cfg;
238
239 sfc_log_init(sa, "set phy adv caps to %#x", phy_adv_cap);
240 rc = efx_phy_adv_cap_set(sa->nic, phy_adv_cap);
241 if (rc != 0)
242 goto fail_phy_adv_cap_set;

Callers 1

sfc_try_startFunction · 0.85

Calls 15

efx_filter_initFunction · 0.85
efx_port_initFunction · 0.85
efx_port_loopback_setFunction · 0.85
efx_mac_fcntl_setFunction · 0.85
efx_port_vlan_strip_setFunction · 0.85
efx_phy_adv_cap_getFunction · 0.85
efx_phy_adv_cap_setFunction · 0.85
efx_mac_pdu_setFunction · 0.85
efx_mac_include_fcs_setFunction · 0.85
sfc_sa2sharedFunction · 0.85
efx_mac_addr_setFunction · 0.85

Tested by

no test coverage detected