On Thu, Apr 19, 2018 at 11:48:39PM +0800, Xueming Li wrote: > Add supported RSS hash function check in device configuration to > have better error verbosity for application developers. > > Signed-off-by: Xueming Li <xuemi...@mellanox.com>
In general, I do not like API/wrappers generating log messages on their own, as those can't be caught and interpreted by applications. I believe error codes should be explicit enough. However in this specific instance, rte_eth_dev_configure() already does it a lot, so I guess it's fine: Acked-by: Adrien Mazarguil <adrien.mazarg...@6wind.com> One nit below. > --- > lib/librte_ether/rte_ethdev.c | 23 +++++++++++++++++++++++ > 1 file changed, 23 insertions(+) > > diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c > index 3c049ef43..4ac0fadae 100644 > --- a/lib/librte_ether/rte_ethdev.c > +++ b/lib/librte_ether/rte_ethdev.c > @@ -1179,6 +1179,18 @@ rte_eth_dev_configure(uint16_t port_id, uint16_t > nb_rx_q, uint16_t nb_tx_q, > ETHER_MAX_LEN; > } > > + /* Check that device supports requested rss hash functions. */ > + if ((dev_info.flow_type_rss_offloads | > + dev_conf->rx_adv_conf.rss_conf.rss_hf) != > + dev_info.flow_type_rss_offloads) { > + RTE_PMD_DEBUG_TRACE("ethdev port_id=%d invalid rss_hf: " > + "0x%"PRIx64", valid value: 0x%"PRIx64"\n", > + port_id, > + dev_conf->rx_adv_conf.rss_conf.rss_hf, > + dev_info.flow_type_rss_offloads); > + return -EINVAL; > + } > + > /* > * Setup new number of RX/TX queues and reconfigure device. > */ > @@ -2835,9 +2847,20 @@ rte_eth_dev_rss_hash_update(uint16_t port_id, > struct rte_eth_rss_conf *rss_conf) > { > struct rte_eth_dev *dev; > + struct rte_eth_dev_info dev_info = {0}; A "{0}" initializer for structures is nonstandard and may trigger compiler warnings. I encourage you to initialize one field C99-style instead: struct rte_eth_dev_info dev_info = { .device = NULL }; > > RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); > dev = &rte_eth_devices[port_id]; > + rte_eth_dev_info_get(port_id, &dev_info); > + if ((dev_info.flow_type_rss_offloads | rss_conf->rss_hf) != > + dev_info.flow_type_rss_offloads) { > + RTE_PMD_DEBUG_TRACE("ethdev port_id=%d invalid rss_hf: " > + "0x%"PRIx64", valid value: 0x%"PRIx64"\n", > + port_id, > + rss_conf->rss_hf, > + dev_info.flow_type_rss_offloads); > + return -EINVAL; > + } > RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->rss_hash_update, -ENOTSUP); > return eth_err(port_id, (*dev->dev_ops->rss_hash_update)(dev, > rss_conf)); > -- > 2.13.3 > -- Adrien Mazarguil 6WIND