Hi Muset: > -----Original Message----- > From: Ergin, Mesut A > Sent: Saturday, May 25, 2019 2:09 AM > To: Zhang, Qi Z <qi.z.zh...@intel.com>; Xing, Beilei <beilei.x...@intel.com> > Cc: dev@dpdk.org > Subject: RE: [PATCH 3/3] net/i40e: fix inadvertent override of vector RX > allowance > > Hi, > > > > > > i40e_rx_vec_dev_conf_condition_check_default(struct rte_eth_dev > *dev) > > > > > if (rxmode->offloads & DEV_RX_OFFLOAD_VLAN_EXTEND) > > > > > return -1; > > > > > > > > > > + /* Should not override if vector was already disallowed */ > > > > > > > > It is possible a device be reconfigured between > > > > dev_stop/dev_start, vector mode may fit for the new configure, so > > > > the old rx_vec_allowd should be ignored, > > > > > > > > > > i40e_dev_configure would reset rx_vec_allowed already. Am I missing > > > another reconfiguration path? > > > > Look at below scenario, > > > > 1. dev_configure (rx_vec_allowed is reset to true) 2. queue_setup (the > > ring size is not power of 2) 3. dev_start (vector will not be selected > > due to ring size, rx_vec_allowed set to > > false) > > 4. dev_stop > > 5. queue_setup (this time, with power of 2 ring size) 6. dev_start > > (assume vector path should be selected, and rx_vec_allowed should be > > overwrite to true, but your patch will prevent it) > > > > Also, I may not get the point of the gap you observed, would you share > > more detail scenario? > > > > Regards > > Qi > > It seems like queue setup should reset vector_allowed flag, too. Because > i40e_dev_rx_queue_setup_runtime is already doing it, though covering only > half of the state space (i.e. device already started). > > Do you think this patch plus that would be a preferred approach?
First, I need to understand your gap, that might be obvious, but so far I just did not figure out it base your commit log yet, so please give me more heads up :) Secondary, I think move below codes from dev_configure to dev_start might be a better solution ad->rx_bulk_alloc_allowed = true; ad->rx_vec_allowed = true; ad->tx_simple_allowed = true; ad->tx_vec_allowed = true; Regards Qi > > > > > > > > > Mesut > > > > > > > Regards > > > > Qi > > > > > > > > > + if (!ad->rx_vec_allowed) > > > > > + return -1; > > > > > + > > > > > /** > > > > > * Vector mode is allowed only when number of Rx queue > > > > > * descriptor is power of 2. > > > > > -- > > > > > 2.7.4