Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: mvpp2: skip RSS configurations on loopback port

PPv2 loopback port doesn't support RSS, so we should
skip RSS configurations for this port.

Signed-off-by: Stefan Chulski <stefanc@marvell.com>
Reviewed-by: Marcin Wojtas <mw@semihalf.com>
Link: https://lore.kernel.org/r/1613652123-19021-1-git-send-email-stefanc@marvell.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Stefan Chulski and committed by
Jakub Kicinski
0a8a8000 433dfc99

+14 -11
+14 -11
drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
··· 4699 4699 } 4700 4700 } 4701 4701 4702 - static bool mvpp22_rss_is_supported(void) 4702 + static bool mvpp22_rss_is_supported(struct mvpp2_port *port) 4703 4703 { 4704 - return queue_mode == MVPP2_QDIST_MULTI_MODE; 4704 + return (queue_mode == MVPP2_QDIST_MULTI_MODE) && 4705 + !(port->flags & MVPP2_F_LOOPBACK); 4705 4706 } 4706 4707 4707 4708 static int mvpp2_open(struct net_device *dev) ··· 5514 5513 struct mvpp2_port *port = netdev_priv(dev); 5515 5514 int ret = 0, i, loc = 0; 5516 5515 5517 - if (!mvpp22_rss_is_supported()) 5516 + if (!mvpp22_rss_is_supported(port)) 5518 5517 return -EOPNOTSUPP; 5519 5518 5520 5519 switch (info->cmd) { ··· 5549 5548 struct mvpp2_port *port = netdev_priv(dev); 5550 5549 int ret = 0; 5551 5550 5552 - if (!mvpp22_rss_is_supported()) 5551 + if (!mvpp22_rss_is_supported(port)) 5553 5552 return -EOPNOTSUPP; 5554 5553 5555 5554 switch (info->cmd) { ··· 5570 5569 5571 5570 static u32 mvpp2_ethtool_get_rxfh_indir_size(struct net_device *dev) 5572 5571 { 5573 - return mvpp22_rss_is_supported() ? MVPP22_RSS_TABLE_ENTRIES : 0; 5572 + struct mvpp2_port *port = netdev_priv(dev); 5573 + 5574 + return mvpp22_rss_is_supported(port) ? MVPP22_RSS_TABLE_ENTRIES : 0; 5574 5575 } 5575 5576 5576 5577 static int mvpp2_ethtool_get_rxfh(struct net_device *dev, u32 *indir, u8 *key, ··· 5581 5578 struct mvpp2_port *port = netdev_priv(dev); 5582 5579 int ret = 0; 5583 5580 5584 - if (!mvpp22_rss_is_supported()) 5581 + if (!mvpp22_rss_is_supported(port)) 5585 5582 return -EOPNOTSUPP; 5586 5583 5587 5584 if (indir) ··· 5599 5596 struct mvpp2_port *port = netdev_priv(dev); 5600 5597 int ret = 0; 5601 5598 5602 - if (!mvpp22_rss_is_supported()) 5599 + if (!mvpp22_rss_is_supported(port)) 5603 5600 return -EOPNOTSUPP; 5604 5601 5605 5602 if (hfunc != ETH_RSS_HASH_NO_CHANGE && hfunc != ETH_RSS_HASH_CRC32) ··· 5620 5617 struct mvpp2_port *port = netdev_priv(dev); 5621 5618 int ret = 0; 5622 5619 5623 - if (!mvpp22_rss_is_supported()) 5620 + if (!mvpp22_rss_is_supported(port)) 5624 5621 return -EOPNOTSUPP; 5625 5622 if (rss_context >= MVPP22_N_RSS_TABLES) 5626 5623 return -EINVAL; ··· 5642 5639 struct mvpp2_port *port = netdev_priv(dev); 5643 5640 int ret; 5644 5641 5645 - if (!mvpp22_rss_is_supported()) 5642 + if (!mvpp22_rss_is_supported(port)) 5646 5643 return -EOPNOTSUPP; 5647 5644 5648 5645 if (hfunc != ETH_RSS_HASH_NO_CHANGE && hfunc != ETH_RSS_HASH_CRC32) ··· 5959 5956 mvpp2_cls_oversize_rxq_set(port); 5960 5957 mvpp2_cls_port_config(port); 5961 5958 5962 - if (mvpp22_rss_is_supported()) 5959 + if (mvpp22_rss_is_supported(port)) 5963 5960 mvpp22_port_rss_init(port); 5964 5961 5965 5962 /* Provide an initial Rx packet size */ ··· 6864 6861 dev->hw_features |= features | NETIF_F_RXCSUM | NETIF_F_GRO | 6865 6862 NETIF_F_HW_VLAN_CTAG_FILTER; 6866 6863 6867 - if (mvpp22_rss_is_supported()) { 6864 + if (mvpp22_rss_is_supported(port)) { 6868 6865 dev->hw_features |= NETIF_F_RXHASH; 6869 6866 dev->features |= NETIF_F_NTUPLE; 6870 6867 }