Hi ,
I am attempting to setup/configure bond and slave interfaces in DPDK
application and it fails in DPDK 19.11.
DPDK daemon is started with the following command line arguments:
--no-daemon --socket-mem 1024 1024 --vdev
eth_bond_bond0,mode=4,xmit_policy=l34,socket_id=1,mac=ac:1f:6b:8d:d7:c6,lacp_rate=1,slave=0000:81:00.0,slave=0000:81:00.1
1. DPDK application initializes the bond interface first . It sets rx and tx
offloads in dev_conf structure as (DEV_RX_OFFLOAD_CHECKSUM |
DEV_RX_OFFLOAD_JUMBO_FRAME )
and (DEV_TX_OFFLOAD_UDP_CKSUM | DEV_TX_OFFLOAD_TCP_CKSUM |
DEV_TX_OFFLOAD_IPV4_CKSUM) respectively.
Then the application invokes rte_eth_dev_configure to setup bond. This causes
some conditions such as below to fail In DPDK 19.11 :
if ((dev_conf->rxmode.offloads & dev_info.rx_offload_capa) !=
dev_conf->rxmode.offloads) {
RTE_ETHDEV_LOG(ERR,
"Ethdev port_id=%u requested
Rx offloads 0x%"PRIx64" doesn't match Rx offloads "
"capabilities 0x%"PRIx64" in %s()\n",
port_id, dev_conf->rxmode.offloads,
dev_info.rx_offload_capa,
__func__);
Return -EINVAL;
}
if ((dev_conf->txmode.offloads & dev_info.tx_offload_capa) !=
dev_conf->txmode.offloads) {
RTE_ETHDEV_LOG(ERR,
"Ethdev port_id=%u requested Tx offloads
0x%"PRIx64" doesn't match Tx offloads "
"capabilities 0x%"PRIx64" in %s()\n",
port_id, dev_conf->txmode.offloads,
dev_info.tx_offload_capa,
__func__);
Return -EINVAL;
}
Since no slaves are configured yet, the offloads in dev_info structure
of bond are set to 0.Hence there is a mismatch between dev_conf structure whose
offloads are set in DPDK
application and dev_info structure in which all the values 0.
Finally this causes bond and slave driver setup to fail. How can this
issue be fixed ?
Thanks and Regards,
Nandini
Juniper Business Use Only