05/07/2021 05:18, Huisong Li: > 在 2021/7/5 4:05, Thomas Monjalon 写道: > > 08/05/2021 10:00, Huisong Li: > >> 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. > > [...] > >> --- 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.
That's a good reason, thanks.