On 10/3/2017 8:43 AM, Andrew Rybchenko wrote: > From: Ivan Malov <ivan.ma...@oktetlabs.ru> > > The callback must not attempt to program RSS table to the HW > in non-started state; the new table must be remembered and > applied on the next start > > Fixes: 32bcfb0a50b1 ("net/sfc: update RSS redirection table") > Cc: sta...@dpdk.org > > Signed-off-by: Ivan Malov <ivan.ma...@oktetlabs.ru> > Signed-off-by: Andrew Rybchenko <arybche...@solarflare.com> > Reviewed-by: Andy Moreton <amore...@solarflare.com> > --- > drivers/net/sfc/sfc_ethdev.c | 13 +++++++++---- > 1 file changed, 9 insertions(+), 4 deletions(-) > > diff --git a/drivers/net/sfc/sfc_ethdev.c b/drivers/net/sfc/sfc_ethdev.c > index 9e65b6a..8650f87 100644 > --- a/drivers/net/sfc/sfc_ethdev.c > +++ b/drivers/net/sfc/sfc_ethdev.c > @@ -1399,11 +1399,16 @@ sfc_dev_rss_reta_update(struct rte_eth_dev *dev, > } > } > > - rc = efx_rx_scale_tbl_set(sa->nic, EFX_RSS_CONTEXT_DEFAULT, > - rss_tbl_new, EFX_RSS_TBL_SIZE); > - if (rc == 0) > - rte_memcpy(sa->rss_tbl, rss_tbl_new, sizeof(sa->rss_tbl)); > + if (sa->state == SFC_ADAPTER_STARTED) {
This is causing a build error with clang: .../dpdk/drivers/net/sfc/sfc_ethdev.c:1402:6: error: variable 'rc' is used uninitialized whenever 'if' condition is false [-Werror,-Wsometimes-uninitialized] if (sa->state == SFC_ADAPTER_STARTED) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .../dpdk/drivers/net/sfc/sfc_ethdev.c:1418:10: note: uninitialized use occurs here return -rc; ^~ .../dpdk/drivers/net/sfc/sfc_ethdev.c:1402:2: note: remove the 'if' if its condition is always true if (sa->state == SFC_ADAPTER_STARTED) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .../dpdk/drivers/net/sfc/sfc_ethdev.c:1357:8: note: initialize the variable 'rc' to silence this warning int rc; ^ = 0 > + rc = efx_rx_scale_tbl_set(sa->nic, EFX_RSS_CONTEXT_DEFAULT, > + rss_tbl_new, EFX_RSS_TBL_SIZE); > + if (rc != 0) > + goto fail_scale_tbl_set; > + } > + > + rte_memcpy(sa->rss_tbl, rss_tbl_new, sizeof(sa->rss_tbl)); > > +fail_scale_tbl_set: > bad_reta_entry: > sfc_adapter_unlock(sa); > >