Re: [dpdk-dev] [RFC] lib/ethdev: add dev configured flag
From: Huisong Li <lihuisong@huawei.com>
Date: 2021-07-05 03:19:00
在 2021/7/5 4:05, Thomas Monjalon 写道:
08/05/2021 10:00, Huisong Li:quoted
Currently, if dev_configure is not invoked or fails to be invoked, users can still invoke dev_start successfully. This patch adds a "dev_configured" flag in "rte_eth_dev_data" to control whether dev_start can be invoked.[...]quoted
--- a/lib/ethdev/rte_ethdev_core.h +++ b/lib/ethdev/rte_ethdev_core.h@@ -167,7 +167,11 @@ struct rte_eth_dev_data { scattered_rx : 1, /**< RX of scattered packets is ON(1) / OFF(0) */ all_multicast : 1, /**< RX all multicast mode ON(1) / OFF(0). */ dev_started : 1, /**< Device state: STARTED(1) / STOPPED(0). */ - lro : 1; /**< RX LRO is ON(1) / OFF(0) */ + lro : 1, /**< RX LRO is ON(1) / OFF(0) */ + dev_configured : 1; + /**< Device configuration state: + * CONFIGURED(1) / NOT CONFIGURED(0). + */Why not using "enum rte_eth_dev_state"? Because rte_eth_dev.state is not shared between processes?
It doesn't feel right. "enum rte_eth_dev_state" is private to the primary and secondary processes and can be independently controlled. However, the secondary process does not make resource allocations and does not call dev_configure(). These are done by the primary process and can be obtained or used by the secondary process. Like "dev_started" in struct rte_eth_dev_data.
.