return 0;
 }
 
-/**
- * i40e_get_rss_hash_opts - Get RSS hash Input Set for each flow type
- * @adapter: board private structure
- * @cmd: ethtool rxnfc command
- *
- * Returns Success if the flow is supported, else Invalid Input.
- **/
-static int i40evf_get_rss_hash_opts(struct i40evf_adapter *adapter,
-                                   struct ethtool_rxnfc *cmd)
-{
-       /* We always hash on IP src and dest addresses */
-       cmd->data = RXH_IP_SRC | RXH_IP_DST;
-
-       switch (cmd->flow_type) {
-       case TCP_V4_FLOW:
-               if (adapter->hena & BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV4_TCP))
-                       cmd->data |= RXH_L4_B_0_1 | RXH_L4_B_2_3;
-               break;
-       case UDP_V4_FLOW:
-               if (adapter->hena & BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV4_UDP))
-                       cmd->data |= RXH_L4_B_0_1 | RXH_L4_B_2_3;
-               break;
-
-       case SCTP_V4_FLOW:
-       case AH_ESP_V4_FLOW:
-       case AH_V4_FLOW:
-       case ESP_V4_FLOW:
-       case IPV4_FLOW:
-               break;
-
-       case TCP_V6_FLOW:
-               if (adapter->hena & BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV6_TCP))
-                       cmd->data |= RXH_L4_B_0_1 | RXH_L4_B_2_3;
-               break;
-       case UDP_V6_FLOW:
-               if (adapter->hena & BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV6_UDP))
-                       cmd->data |= RXH_L4_B_0_1 | RXH_L4_B_2_3;
-               break;
-
-       case SCTP_V6_FLOW:
-       case AH_ESP_V6_FLOW:
-       case AH_V6_FLOW:
-       case ESP_V6_FLOW:
-       case IPV6_FLOW:
-               break;
-       default:
-               cmd->data = 0;
-               return -EINVAL;
-       }
-
-       return 0;
-}
-
 /**
  * i40evf_get_rxnfc - command to get RX flow classification rules
  * @netdev: network interface device structure
                ret = 0;
                break;
        case ETHTOOL_GRXFH:
-               ret = i40evf_get_rss_hash_opts(adapter, cmd);
-               break;
-       default:
-               break;
-       }
-
-       return ret;
-}
-
-/**
- * i40evf_set_rss_hash_opt - Enable/Disable flow types for RSS hash
- * @adapter: board private structure
- * @cmd: ethtool rxnfc command
- *
- * Returns Success if the flow input set is supported.
- **/
-static int i40evf_set_rss_hash_opt(struct i40evf_adapter *adapter,
-                                  struct ethtool_rxnfc *nfc)
-{
-       struct i40e_hw *hw = &adapter->hw;
-       u32 flags = adapter->vf_res->vf_offload_flags;
-
-       /* RSS does not support anything other than hashing
-        * to queues on src and dst IPs and ports
-        */
-       if (nfc->data & ~(RXH_IP_SRC | RXH_IP_DST |
-                         RXH_L4_B_0_1 | RXH_L4_B_2_3))
-               return -EINVAL;
-
-       /* We need at least the IP SRC and DEST fields for hashing */
-       if (!(nfc->data & RXH_IP_SRC) ||
-           !(nfc->data & RXH_IP_DST))
-               return -EINVAL;
-
-       switch (nfc->flow_type) {
-       case TCP_V4_FLOW:
-               if (nfc->data & (RXH_L4_B_0_1 | RXH_L4_B_2_3)) {
-                       if (flags & I40E_VIRTCHNL_VF_OFFLOAD_RSS_PCTYPE_V2)
-                               adapter->hena |=
-                          BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV4_TCP_SYN_NO_ACK);
-
-                       adapter->hena |=
-                BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV4_TCP);
-               } else {
-                       return -EINVAL;
-               }
-               break;
-       case TCP_V6_FLOW:
-               if (nfc->data & (RXH_L4_B_0_1 | RXH_L4_B_2_3)) {
-                       if (flags & I40E_VIRTCHNL_VF_OFFLOAD_RSS_PCTYPE_V2)
-                               adapter->hena |=
-                          BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV6_TCP_SYN_NO_ACK);
-
-                       adapter->hena |=
-                BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV6_TCP);
-               } else {
-                       return -EINVAL;
-               }
-               break;
-       case UDP_V4_FLOW:
-               if (nfc->data & (RXH_L4_B_0_1 | RXH_L4_B_2_3)) {
-                       if (flags & I40E_VIRTCHNL_VF_OFFLOAD_RSS_PCTYPE_V2)
-                               adapter->hena |=
-                           BIT_ULL(I40E_FILTER_PCTYPE_NONF_UNICAST_IPV4_UDP) |
-                           BIT_ULL(I40E_FILTER_PCTYPE_NONF_MULTICAST_IPV4_UDP);
-
-                       adapter->hena |=
-                               (BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV4_UDP) |
-                                BIT_ULL(I40E_FILTER_PCTYPE_FRAG_IPV4));
-               } else {
-                       return -EINVAL;
-               }
-               break;
-       case UDP_V6_FLOW:
-               if (nfc->data & (RXH_L4_B_0_1 | RXH_L4_B_2_3)) {
-                       if (flags & I40E_VIRTCHNL_VF_OFFLOAD_RSS_PCTYPE_V2)
-                               adapter->hena |=
-                           BIT_ULL(I40E_FILTER_PCTYPE_NONF_UNICAST_IPV6_UDP) |
-                           BIT_ULL(I40E_FILTER_PCTYPE_NONF_MULTICAST_IPV6_UDP);
-
-                       adapter->hena |=
-                               (BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV6_UDP) |
-                                BIT_ULL(I40E_FILTER_PCTYPE_FRAG_IPV6));
-               } else {
-                       return -EINVAL;
-               }
-               break;
-       case AH_ESP_V4_FLOW:
-       case AH_V4_FLOW:
-       case ESP_V4_FLOW:
-       case SCTP_V4_FLOW:
-               if ((nfc->data & RXH_L4_B_0_1) ||
-                   (nfc->data & RXH_L4_B_2_3))
-                       return -EINVAL;
-               adapter->hena |= BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV4_OTHER);
-               break;
-       case AH_ESP_V6_FLOW:
-       case AH_V6_FLOW:
-       case ESP_V6_FLOW:
-       case SCTP_V6_FLOW:
-               if ((nfc->data & RXH_L4_B_0_1) ||
-                   (nfc->data & RXH_L4_B_2_3))
-                       return -EINVAL;
-               adapter->hena |= BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV6_OTHER);
-               break;
-       case IPV4_FLOW:
-               adapter->hena |= (BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV4_OTHER) |
-                                 BIT_ULL(I40E_FILTER_PCTYPE_FRAG_IPV4));
-               break;
-       case IPV6_FLOW:
-               adapter->hena |= (BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV6_OTHER) |
-                                 BIT_ULL(I40E_FILTER_PCTYPE_FRAG_IPV6));
-               break;
-       default:
-               return -EINVAL;
-       }
-
-       if (RSS_PF(adapter)) {
-               adapter->aq_required = I40EVF_FLAG_AQ_SET_HENA;
-       } else {
-               wr32(hw, I40E_VFQF_HENA(0), (u32)adapter->hena);
-               wr32(hw, I40E_VFQF_HENA(1), (u32)(adapter->hena >> 32));
-               i40e_flush(hw);
-       }
-
-       return 0;
-}
-
-/**
- * i40evf_set_rxnfc - command to set RX flow classification rules
- * @netdev: network interface device structure
- * @cmd: ethtool rxnfc command
- *
- * Returns Success if the command is supported.
- **/
-static int i40evf_set_rxnfc(struct net_device *netdev,
-                           struct ethtool_rxnfc *cmd)
-{
-       struct i40evf_adapter *adapter = netdev_priv(netdev);
-       int ret = -EOPNOTSUPP;
-
-       switch (cmd->cmd) {
-       case ETHTOOL_SRXFH:
-               ret = i40evf_set_rss_hash_opt(adapter, cmd);
+               netdev_info(netdev,
+                           "RSS hash info is not available to vf, use pf.\n");
                break;
        default:
                break;
 
        return ret;
 }
-
 /**
  * i40evf_get_channels: get the number of channels supported by the device
  * @netdev: network interface device structure
        .get_coalesce           = i40evf_get_coalesce,
        .set_coalesce           = i40evf_set_coalesce,
        .get_rxnfc              = i40evf_get_rxnfc,
-       .set_rxnfc              = i40evf_set_rxnfc,
        .get_rxfh_indir_size    = i40evf_get_rxfh_indir_size,
        .get_rxfh               = i40evf_get_rxfh,
        .set_rxfh               = i40evf_set_rxfh,