return -EOPNOTSUPP;
        }
 
-       switch (func) {
-       case ENA_ADMIN_TOEPLITZ:
-               if (key) {
-                       if (key_len != sizeof(hash_key->key)) {
-                               netdev_err(ena_dev->net_device,
-                                          "key len (%u) doesn't equal the supported size (%zu)\n",
-                                          key_len, sizeof(hash_key->key));
-                               return -EINVAL;
-                       }
-                       memcpy(hash_key->key, key, key_len);
-                       rss->hash_init_val = init_val;
-                       hash_key->key_parts = key_len / sizeof(hash_key->key[0]);
+       if ((func == ENA_ADMIN_TOEPLITZ) && key) {
+               if (key_len != sizeof(hash_key->key)) {
+                       netdev_err(ena_dev->net_device,
+                                  "key len (%u) doesn't equal the supported size (%zu)\n",
+                                  key_len, sizeof(hash_key->key));
+                       return -EINVAL;
                }
-               break;
-       case ENA_ADMIN_CRC32:
-               rss->hash_init_val = init_val;
-               break;
-       default:
-               netdev_err(ena_dev->net_device, "Invalid hash function (%d)\n",
-                          func);
-               return -EINVAL;
+               memcpy(hash_key->key, key, key_len);
+               hash_key->key_parts = key_len / sizeof(hash_key->key[0]);
        }
 
+       rss->hash_init_val = init_val;
        old_func = rss->hash_func;
        rss->hash_func = func;
        rc = ena_com_set_hash_function(ena_dev);