From: Venkat Duvvuru <venkatkumar.duvv...@broadcom.com> In bnxt_rss_hash_update_op, driver is proceeding with bnxt_hwrm_vnic_rss_cfg even though RSS hashkey length is invalid.
This patch fixes the problem by returning -EINVAL when RSS hashkey length is invalid. Signed-off-by: Venkat Duvvuru <venkatkumar.duvv...@broadcom.com> Reviewed-by: Somnath Kotur <somnath.ko...@broadcom.com> Reviewed-by: Rahul Gupta <rahul.gu...@broadcom.com> Reviewed-by: Santoshkumar Karanappa Rastapur <santosh.rasta...@broadcom.com> Reviewed-by: Kalesh Anakkur Purayil <kalesh-anakkur.pura...@broadcom.com> Reviewed-by: Ajit Khaparde <ajit.khapa...@broadcom.com> Signed-off-by: Ajit Khaparde <ajit.khapa...@broadcom.com> --- drivers/net/bnxt/bnxt_ethdev.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index b72466467..5ef2ee0c4 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -1308,14 +1308,20 @@ static int bnxt_rss_hash_update_op(struct rte_eth_dev *eth_dev, vnic->hash_type = bnxt_rte_to_hwrm_hash_types(rss_conf->rss_hf); /* - * Use the supplied key if the key length is - * acceptable and the rss_key is not NULL + * If hashkey is not specified, use the previously configured + * hashkey */ - if (rss_conf->rss_key && rss_conf->rss_key_len <= HW_HASH_KEY_SIZE) - memcpy(vnic->rss_hash_key, - rss_conf->rss_key, - rss_conf->rss_key_len); + if (!rss_conf->rss_key) + goto rss_config; + if (rss_conf->rss_key_len != HW_HASH_KEY_SIZE) { + PMD_DRV_LOG(ERR, + "Invalid hashkey length, should be 16 bytes\n"); + return -EINVAL; + } + memcpy(vnic->rss_hash_key, rss_conf->rss_key, rss_conf->rss_key_len); + +rss_config: bnxt_hwrm_vnic_rss_cfg(bp, vnic); return 0; } -- 2.20.1 (Apple Git-117)