[dpdk-dev] [dpdk-stable] [PATCH] net/sfc: specify correct scale table size on Rx start

Ferruh Yigit ferruh.yigit at intel.com
Tue Aug 29 19:03:59 CEST 2017


On 8/28/2017 1:53 PM, Andrew Rybchenko wrote:
> From: Ivan Malov <ivan.malov at oktetlabs.ru>
> 
> efx_rx_scale_tbl_set() takes the number of entries in the scale table
> to be set, not the size of the table in bytes; currently this bug does
> not make any damage since the size argument is used to wrap the loop
> on the input table when filling in an MCDI request in case if the table
> size in the MCDI request is larger then one provided by the user,
> and MCDI scale table size is the same as the size of the table provided
> by the driver; this patch brings a fix for the bug
> 
> Fixes: 4ec1fc3ba881 ("net/sfc: add basic stubs for RSS support on driver attach")
> Cc: stable at dpdk.org
> 
> Signed-off-by: Ivan Malov <ivan.malov at oktetlabs.ru>
> Signed-off-by: Andrew Rybchenko <arybchenko at solarflare.com>
> ---
>  drivers/net/sfc/sfc_rx.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/net/sfc/sfc_rx.c b/drivers/net/sfc/sfc_rx.c
> index 1bf8644..364f718 100644
> --- a/drivers/net/sfc/sfc_rx.c
> +++ b/drivers/net/sfc/sfc_rx.c
> @@ -1068,7 +1068,7 @@ struct sfc_dp_rx sfc_efx_rx = {
>  			goto finish;
>  

It is not shown in this patch, but there is "sizeof(sa->rss_key)" usage
here, since its type is uint8_t, it is not wrong, but it can be good to
change that one too to RTE_DIM() both to show the intent and to be safe
if in the future type updated... But this is your call to update or not.

>  		rc = efx_rx_scale_tbl_set(sa->nic, sa->rss_tbl,
> -					  sizeof(sa->rss_tbl));
> +					  RTE_DIM(sa->rss_tbl));

There are more sizeof(sa->rss_tbl) usage in sfc_ethdev.c [1], can you
please check them too? malloc and memcpy ones look suspicious.

[1]
$ git grep "sizeof(sa->rss_tbl)"
drivers/net/sfc/sfc_ethdev.c:   rss_tbl_new = rte_zmalloc("rss_tbl_new",
sizeof(sa->rss_tbl), 0);
drivers/net/sfc/sfc_ethdev.c:   rte_memcpy(rss_tbl_new, sa->rss_tbl,
sizeof(sa->rss_tbl));
drivers/net/sfc/sfc_ethdev.c:           rte_memcpy(sa->rss_tbl,
rss_tbl_new, sizeof(sa->rss_tbl));
drivers/net/sfc/sfc_rx.c:
sizeof(sa->rss_tbl));

>  	}
>  
>  finish:
> 



More information about the dev mailing list