Open
Description
以下这段代码可以看到,当30秒后dpdk网卡才启动的话netif_port_start函数就会直接返回,导致后续的混杂模式、MTU、flush_fdir都不会执行到,后续网卡link up也不会进行重新配置了,建议是否可以在link up之前就可以进行这些配置,因为这些都是基础网卡配置,即使没有link up也可以进行设置。
// wait the device link up
RTE_LOG(INFO, NETIF, "Waiting for %s link up, be patient ...\n", port->name);
for (ii = 0; ii < wait_link_up_msecs; ii++) {
rte_eth_link_get_nowait(port->id, &link);
if (link.link_status) {
RTE_LOG(INFO, NETIF, ">> %s: link up - speed %u Mbps - %s\n",
port->name, (unsigned)link.link_speed,
(link.link_duplex == ETH_LINK_FULL_DUPLEX) ?
"full-duplex" : "half-duplex");
break;
}
rte_delay_ms(1);
}
if (!link.link_status) {
RTE_LOG(ERR, NETIF, "%s: fail to bring up %s\n", func, port->name);
return EDPVS_DPDKAPIFAIL;
}
port->flag |= NETIF_PORT_FLAG_RUNNING;
// enable promicuous mode if configured
if (promisc_on) {
RTE_LOG(INFO, NETIF, "promiscous mode enabled for device %s\n", port->name);
rte_eth_promiscuous_enable(port->id);
}
ret = rte_eth_dev_set_mtu(port->id, NETIF_JUMBO_FRAME_SIZE);
if (ret < 0) {
RTE_LOG(ERR, NETIF, "%s: fail to set %s mtu\n", __func__, port->name);
}
rte_eth_dev_get_mtu(port->id, &port->mtu);
/* bonding device's macaddr is updated by its primary device when start,
* so we should update its macaddr after start. */
if (port->type == PORT_TYPE_BOND_MASTER)
update_bond_macaddr(port);
/* add in6_addr multicast address */
/* The MLNX doesn't support rte_eth_dev_set_mc_addr_list
ret = idev_add_mcast_init(port);
if (ret != EDPVS_OK) {
RTE_LOG(WARNING, NETIF, "multicast address add failed for device %s\n", port->name);
return ret;
}
*/
/* flush FDIR filters */
ret = fdir_filter_flush(port);
if (ret != EDPVS_OK) {
RTE_LOG(WARNING, NETIF, "fail to flush FDIR filters for device %s\n", port->name);
return ret;
}