Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dpdk网卡link up迟了之后,导致后来即使link up后混杂模式和MTU也不会去进行设置 #760

Open
kennydaili opened this issue Sep 26, 2021 · 0 comments
Labels
issue/to-solve issues await answers tobe solved

Comments

@kennydaili
Copy link

kennydaili commented Sep 26, 2021

以下这段代码可以看到,当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;
}
@kennydaili kennydaili changed the title dpvs应用启动后再插入网线dpdk网卡无法link up dpdk网卡link up迟了之后,导致后来即使link up后混杂模式和MTU也不会去进行设置 Sep 27, 2021
@kennydaili kennydaili reopened this Sep 27, 2021
@ywc689 ywc689 added the issue/to-solve issues await answers tobe solved label Oct 27, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
issue/to-solve issues await answers tobe solved
Projects
None yet
Development

No branches or pull requests

2 participants