int qlcnic_diag_alloc_res(struct net_device *netdev, int test);
 netdev_tx_t qlcnic_xmit_frame(struct sk_buff *skb, struct net_device *netdev);
 int qlcnic_set_max_rss(struct qlcnic_adapter *, u8, size_t);
-int qlcnic_validate_max_rss(u8, u8);
+int qlcnic_validate_max_rss(struct qlcnic_adapter *, __u32);
 void qlcnic_alloc_lb_filters_mem(struct qlcnic_adapter *adapter);
 int qlcnic_enable_msix(struct qlcnic_adapter *, u32);
 
 
        return err;
 }
 
-int qlcnic_validate_max_rss(u8 max_hw, u8 val)
+int qlcnic_validate_max_rss(struct qlcnic_adapter *adapter,
+                           __u32 val)
 {
+       struct net_device *netdev = adapter->netdev;
+       u8 max_hw = adapter->ahw->max_rx_ques;
        u32 max_allowed;
 
-       if (max_hw > QLC_MAX_SDS_RINGS) {
-               max_hw = QLC_MAX_SDS_RINGS;
-               pr_info("max rss reset to %d\n", QLC_MAX_SDS_RINGS);
+       if (val > QLC_MAX_SDS_RINGS) {
+               netdev_err(netdev, "RSS value should not be higher than %u\n",
+                          QLC_MAX_SDS_RINGS);
+               return -EINVAL;
        }
 
        max_allowed = rounddown_pow_of_two(min_t(int, max_hw,
                                                 num_online_cpus()));
        if ((val > max_allowed) || (val < 2) || !is_power_of_2(val)) {
-               pr_info("rss_ring valid range [2 - %x] in powers of 2\n",
-                       max_allowed);
+               if (!is_power_of_2(val))
+                       netdev_err(netdev, "RSS value should be a power of 2\n");
+
+               if (val < 2)
+                       netdev_err(netdev, "RSS value should not be lower than 2\n");
+
+               if (val > max_hw)
+                       netdev_err(netdev,
+                                  "RSS value should not be higher than[%u], the max RSS rings supported by the adapter\n",
+                                  max_hw);
+
+               if (val > num_online_cpus())
+                       netdev_err(netdev,
+                                  "RSS value should not be higher than[%u], number of online CPUs in the system\n",
+                                  num_online_cpus());
+
+               netdev_err(netdev, "Unable to configure %u RSS rings\n", val);
+
                return -EINVAL;
        }
        return 0;