X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fsfc%2Fsfc_ethdev.c;h=4c9335f3325d001391e05b48ecaef586fb1f3673;hb=63ab5e0c8fdad1ce773f31a71bba22f5b8126479;hp=7620080e64d83834ab2559723d6eefcfb33e05a6;hpb=2617ec3f64321b530eb54397c86d40d510a2c69b;p=dpdk.git diff --git a/drivers/net/sfc/sfc_ethdev.c b/drivers/net/sfc/sfc_ethdev.c index 7620080e64..4c9335f332 100644 --- a/drivers/net/sfc/sfc_ethdev.c +++ b/drivers/net/sfc/sfc_ethdev.c @@ -1084,10 +1084,12 @@ sfc_dev_rss_hash_conf_get(struct rte_eth_dev *dev, { struct sfc_adapter *sa = dev->data->dev_private; - if ((sa->rss_channels == 1) || - (sa->rss_support != EFX_RX_SCALE_EXCLUSIVE)) + if (sa->rss_support != EFX_RX_SCALE_EXCLUSIVE) return -ENOTSUP; + if (sa->rss_channels == 0) + return -EINVAL; + sfc_adapter_lock(sa); /* @@ -1114,12 +1116,16 @@ sfc_dev_rss_hash_update(struct rte_eth_dev *dev, unsigned int efx_hash_types; int rc = 0; - if ((sa->rss_channels == 1) || - (sa->rss_support != EFX_RX_SCALE_EXCLUSIVE)) { + if (sa->rss_support != EFX_RX_SCALE_EXCLUSIVE) { sfc_err(sa, "RSS is not available"); return -ENOTSUP; } + if (sa->rss_channels == 0) { + sfc_err(sa, "RSS is not configured"); + return -EINVAL; + } + if ((rss_conf->rss_key != NULL) && (rss_conf->rss_key_len != sizeof(sa->rss_key))) { sfc_err(sa, "RSS key size is wrong (should be %lu)", @@ -1176,10 +1182,12 @@ sfc_dev_rss_reta_query(struct rte_eth_dev *dev, struct sfc_adapter *sa = dev->data->dev_private; int entry; - if ((sa->rss_channels == 1) || - (sa->rss_support != EFX_RX_SCALE_EXCLUSIVE)) + if (sa->rss_support != EFX_RX_SCALE_EXCLUSIVE) return -ENOTSUP; + if (sa->rss_channels == 0) + return -EINVAL; + if (reta_size != EFX_RSS_TBL_SIZE) return -EINVAL; @@ -1209,12 +1217,16 @@ sfc_dev_rss_reta_update(struct rte_eth_dev *dev, int rc; - if ((sa->rss_channels == 1) || - (sa->rss_support != EFX_RX_SCALE_EXCLUSIVE)) { + if (sa->rss_support != EFX_RX_SCALE_EXCLUSIVE) { sfc_err(sa, "RSS is not available"); return -ENOTSUP; } + if (sa->rss_channels == 0) { + sfc_err(sa, "RSS is not configured"); + return -EINVAL; + } + if (reta_size != EFX_RSS_TBL_SIZE) { sfc_err(sa, "RETA size is wrong (should be %u)", EFX_RSS_TBL_SIZE);