aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c
diff options
context:
space:
mode:
authorMadalin Bucur <madalin.bucur@nxp.com>2017-08-27 16:13:41 +0300
committerDavid S. Miller <davem@davemloft.net>2017-08-28 16:41:00 -0700
commit056057e288e70755a423ddfd2e45b97cd147a411 (patch)
treecd74a0a65449c37009cf7bb0543ec8472dfcdf02 /drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c
parentdpaa_eth: enable Rx hashing control (diff)
downloadlinux-dev-056057e288e70755a423ddfd2e45b97cd147a411.tar.xz
linux-dev-056057e288e70755a423ddfd2e45b97cd147a411.zip
dpaa_eth: add NETIF_F_RXHASH
Set the skb hash when then FMan Keygen hash result is available. Signed-off-by: Madalin Bucur <madalin.bucur@nxp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c')
-rw-r--r--drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c b/drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c
index 965f6520d58a..faea674094b9 100644
--- a/drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c
+++ b/drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c
@@ -402,6 +402,8 @@ static void dpaa_get_strings(struct net_device *net_dev, u32 stringset,
static int dpaa_get_hash_opts(struct net_device *dev,
struct ethtool_rxnfc *cmd)
{
+ struct dpaa_priv *priv = netdev_priv(dev);
+
cmd->data = 0;
switch (cmd->flow_type) {
@@ -409,7 +411,8 @@ static int dpaa_get_hash_opts(struct net_device *dev,
case TCP_V6_FLOW:
case UDP_V4_FLOW:
case UDP_V6_FLOW:
- cmd->data |= RXH_L4_B_0_1 | RXH_L4_B_2_3;
+ if (priv->keygen_in_use)
+ cmd->data |= RXH_L4_B_0_1 | RXH_L4_B_2_3;
/* Fall through */
case IPV4_FLOW:
case IPV6_FLOW:
@@ -421,7 +424,8 @@ static int dpaa_get_hash_opts(struct net_device *dev,
case AH_V6_FLOW:
case ESP_V4_FLOW:
case ESP_V6_FLOW:
- cmd->data |= RXH_IP_SRC | RXH_IP_DST;
+ if (priv->keygen_in_use)
+ cmd->data |= RXH_IP_SRC | RXH_IP_DST;
break;
default:
cmd->data = 0;
@@ -458,6 +462,7 @@ static void dpaa_set_hash(struct net_device *net_dev, bool enable)
rxport = mac_dev->port[0];
fman_port_use_kg_hash(rxport, enable);
+ priv->keygen_in_use = enable;
}
static int dpaa_set_hash_opts(struct net_device *dev,