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

Function ionic_dev_link_update

dpdk/drivers/net/ionic/ionic_ethdev.c:260–310  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

258}
259
260int
261ionic_dev_link_update(struct rte_eth_dev *eth_dev,
262 int wait_to_complete __rte_unused)
263{
264 struct ionic_lif *lif = IONIC_ETH_DEV_TO_LIF(eth_dev);
265 struct ionic_adapter *adapter = lif->adapter;
266 struct rte_eth_link link;
267
268 IONIC_PRINT_CALL();
269
270 /* Initialize */
271 memset(&link, 0, sizeof(link));
272
273 if (adapter->idev.port_info->config.an_enable) {
274 link.link_autoneg = RTE_ETH_LINK_AUTONEG;
275 }
276
277 if (!adapter->link_up ||
278 !(lif->state & IONIC_LIF_F_UP)) {
279 /* Interface is down */
280 link.link_status = RTE_ETH_LINK_DOWN;
281 link.link_duplex = RTE_ETH_LINK_HALF_DUPLEX;
282 link.link_speed = RTE_ETH_SPEED_NUM_NONE;
283 } else {
284 /* Interface is up */
285 link.link_status = RTE_ETH_LINK_UP;
286 link.link_duplex = RTE_ETH_LINK_FULL_DUPLEX;
287 switch (adapter->link_speed) {
288 case 10000:
289 link.link_speed = RTE_ETH_SPEED_NUM_10G;
290 break;
291 case 25000:
292 link.link_speed = RTE_ETH_SPEED_NUM_25G;
293 break;
294 case 40000:
295 link.link_speed = RTE_ETH_SPEED_NUM_40G;
296 break;
297 case 50000:
298 link.link_speed = RTE_ETH_SPEED_NUM_50G;
299 break;
300 case 100000:
301 link.link_speed = RTE_ETH_SPEED_NUM_100G;
302 break;
303 default:
304 link.link_speed = RTE_ETH_SPEED_NUM_NONE;
305 break;
306 }
307 }
308
309 return rte_eth_linkstatus_set(eth_dev, &link);
310}
311
312/**
313 * Interrupt handler triggered by NIC for handling

Callers 4

ionic_dev_set_link_upFunction · 0.85
ionic_dev_set_link_downFunction · 0.85
ionic_dev_startFunction · 0.85
ionic_link_status_checkFunction · 0.85

Calls 2

memsetFunction · 0.85
rte_eth_linkstatus_setFunction · 0.85

Tested by

no test coverage detected