Hi Ilya, Thank you for the patch. It looks fine for me. Also I verified that the flow control is working fine with the modification.
Regards _Sugesh > -----Original Message----- > From: Ilya Maximets [mailto:i.maxim...@samsung.com] > Sent: Wednesday, September 21, 2016 11:39 AM > To: dev@openvswitch.org; Daniele Di Proietto <diproiet...@vmware.com> > Cc: Dyasly Sergey <s.dya...@samsung.com>; Heetae Ahn > <heetae82....@samsung.com>; Chandran, Sugesh > <sugesh.chand...@intel.com>; Bodireddy, Bhanuprakash > <bhanuprakash.bodire...@intel.com>; Loftus, Ciara > <ciara.lof...@intel.com> > Subject: Re: [PATCH v2] netdev-dpdk: Configure flow control only when > necessary. > > On 21.09.2016 13:35, Ilya Maximets wrote: > > It is not necessary to touch the physical device each time, if the > > configuration has not been changed. Also, few style issues fixed. > > > > Thread-safety annotation added to 'dpdk_set_rxq_config()'. It was > > missed while previous refactoring of the flow control configuration. > > > > Signed-off-by: Ilya Maximets <i.maxim...@samsung.com> > > --- > > Sorry, forget about the changelog: > > Version 2: > > * Only commit-message updated. (thread-safety annotation) > > > lib/netdev-dpdk.c | 30 +++++++++++++++++------------- > > 1 file changed, 17 insertions(+), 13 deletions(-) > > > > diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c index > > 89bdc4d..602217f 100644 > > --- a/lib/netdev-dpdk.c > > +++ b/lib/netdev-dpdk.c > > @@ -1059,6 +1059,7 @@ netdev_dpdk_get_config(const struct netdev > > *netdev, struct smap *args) > > > > static void > > dpdk_set_rxq_config(struct netdev_dpdk *dev, const struct smap *args) > > + OVS_REQUIRES(dev->mutex) > > { > > int new_n_rxq; > > > > @@ -1073,24 +1074,27 @@ static int > > netdev_dpdk_set_config(struct netdev *netdev, const struct smap > > *args) { > > struct netdev_dpdk *dev = netdev_dpdk_cast(netdev); > > + uint8_t rx_fc_en, tx_fc_en, autoneg; > > + enum rte_eth_fc_mode fc_mode; > > + static const enum rte_eth_fc_mode fc_mode_set[2][2] = { > > + {RTE_FC_NONE, RTE_FC_TX_PAUSE}, > > + {RTE_FC_RX_PAUSE, RTE_FC_FULL } > > + }; > > > > ovs_mutex_lock(&dev->mutex); > > > > dpdk_set_rxq_config(dev, args); > > > > - /* Flow control support is only available for DPDK Ethernet ports. */ > > - bool rx_fc_en = false; > > - bool tx_fc_en = false; > > - enum rte_eth_fc_mode fc_mode_set[2][2] = > > - {{RTE_FC_NONE, RTE_FC_TX_PAUSE}, > > - {RTE_FC_RX_PAUSE, RTE_FC_FULL} > > - }; > > - rx_fc_en = smap_get_bool(args, "rx-flow-ctrl", false); > > - tx_fc_en = smap_get_bool(args, "tx-flow-ctrl", false); > > - dev->fc_conf.autoneg = smap_get_bool(args, "flow-ctrl-autoneg", > false); > > - dev->fc_conf.mode = fc_mode_set[tx_fc_en][rx_fc_en]; > > - > > - dpdk_eth_flow_ctrl_setup(dev); > > + rx_fc_en = smap_get_bool(args, "rx-flow-ctrl", false) ? 1 : 0; > > + tx_fc_en = smap_get_bool(args, "tx-flow-ctrl", false) ? 1 : 0; > > + autoneg = smap_get_bool(args, "flow-ctrl-autoneg", false) ? 1 : > > + 0; > > + > > + fc_mode = fc_mode_set[tx_fc_en][rx_fc_en]; > > + if (dev->fc_conf.mode != fc_mode || autoneg != dev- > >fc_conf.autoneg) { > > + dev->fc_conf.mode = fc_mode; > > + dev->fc_conf.autoneg = autoneg; > > + dpdk_eth_flow_ctrl_setup(dev); > > + } > > > > ovs_mutex_unlock(&dev->mutex); > > > > _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev