]> git.baikalelectronics.ru Git - kernel.git/commitdiff
net: stmmac: selftests: Update status when disabling RSS
authorJose Abreu <Jose.Abreu@synopsys.com>
Fri, 10 Jan 2020 15:23:52 +0000 (16:23 +0100)
committerDavid S. Miller <davem@davemloft.net>
Fri, 10 Jan 2020 19:31:10 +0000 (11:31 -0800)
We are disabling RSS on HW but not updating the internal private status
to the 'disabled' state. This is needed for next tc commit that will
check if RSS is disabled before trying to apply filters.

Fixes: 2918c9431322 ("net: stmmac: selftests: Add selftest for L3/L4 Filters")
Signed-off-by: Jose Abreu <Jose.Abreu@synopsys.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c

index 13227909287c03010189e00e7878029e08010d55..36a4c43a799aabf67028d6fcab33ed13650e248d 100644 (file)
@@ -1323,16 +1323,19 @@ static int __stmmac_test_l3filt(struct stmmac_priv *priv, u32 dst, u32 src,
        struct stmmac_packet_attrs attr = { };
        struct flow_dissector *dissector;
        struct flow_cls_offload *cls;
+       int ret, old_enable = 0;
        struct flow_rule *rule;
-       int ret;
 
        if (!tc_can_offload(priv->dev))
                return -EOPNOTSUPP;
        if (!priv->dma_cap.l3l4fnum)
                return -EOPNOTSUPP;
-       if (priv->rss.enable)
+       if (priv->rss.enable) {
+               old_enable = priv->rss.enable;
+               priv->rss.enable = false;
                stmmac_rss_configure(priv, priv->hw, NULL,
                                     priv->plat->rx_queues_to_use);
+       }
 
        dissector = kzalloc(sizeof(*dissector), GFP_KERNEL);
        if (!dissector) {
@@ -1399,7 +1402,8 @@ cleanup_cls:
 cleanup_dissector:
        kfree(dissector);
 cleanup_rss:
-       if (priv->rss.enable) {
+       if (old_enable) {
+               priv->rss.enable = old_enable;
                stmmac_rss_configure(priv, priv->hw, &priv->rss,
                                     priv->plat->rx_queues_to_use);
        }
@@ -1444,16 +1448,19 @@ static int __stmmac_test_l4filt(struct stmmac_priv *priv, u32 dst, u32 src,
        struct stmmac_packet_attrs attr = { };
        struct flow_dissector *dissector;
        struct flow_cls_offload *cls;
+       int ret, old_enable = 0;
        struct flow_rule *rule;
-       int ret;
 
        if (!tc_can_offload(priv->dev))
                return -EOPNOTSUPP;
        if (!priv->dma_cap.l3l4fnum)
                return -EOPNOTSUPP;
-       if (priv->rss.enable)
+       if (priv->rss.enable) {
+               old_enable = priv->rss.enable;
+               priv->rss.enable = false;
                stmmac_rss_configure(priv, priv->hw, NULL,
                                     priv->plat->rx_queues_to_use);
+       }
 
        dissector = kzalloc(sizeof(*dissector), GFP_KERNEL);
        if (!dissector) {
@@ -1525,7 +1532,8 @@ cleanup_cls:
 cleanup_dissector:
        kfree(dissector);
 cleanup_rss:
-       if (priv->rss.enable) {
+       if (old_enable) {
+               priv->rss.enable = old_enable;
                stmmac_rss_configure(priv, priv->hw, &priv->rss,
                                     priv->plat->rx_queues_to_use);
        }