net: stmmac: selftests: Add Split Header test
authorJose Abreu <Jose.Abreu@synopsys.com>
Fri, 6 Sep 2019 07:41:16 +0000 (09:41 +0200)
committerDavid S. Miller <davem@davemloft.net>
Sat, 7 Sep 2019 15:57:41 +0000 (17:57 +0200)
Add a test to validate that Split Header feature is working correctly.
It works by using the rececently introduced counter that increments each
time a packet with split header is received.

Signed-off-by: Jose Abreu <joabreu@synopsys.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c

index 2943943bec4322afd25387d793283e5723085e2b..c56e89e1ae563945f2e901158352772709fe48e6 100644 (file)
@@ -1603,6 +1603,44 @@ static int stmmac_test_mjumbo(struct stmmac_priv *priv)
        return 0;
 }
 
+static int stmmac_test_sph(struct stmmac_priv *priv)
+{
+       unsigned long cnt_end, cnt_start = priv->xstats.rx_split_hdr_pkt_n;
+       struct stmmac_packet_attrs attr = { };
+       int ret;
+
+       if (!priv->sph)
+               return -EOPNOTSUPP;
+
+       /* Check for UDP first */
+       attr.dst = priv->dev->dev_addr;
+       attr.tcp = false;
+
+       ret = __stmmac_test_loopback(priv, &attr);
+       if (ret)
+               return ret;
+
+       cnt_end = priv->xstats.rx_split_hdr_pkt_n;
+       if (cnt_end <= cnt_start)
+               return -EINVAL;
+
+       /* Check for TCP now */
+       cnt_start = cnt_end;
+
+       attr.dst = priv->dev->dev_addr;
+       attr.tcp = true;
+
+       ret = __stmmac_test_loopback(priv, &attr);
+       if (ret)
+               return ret;
+
+       cnt_end = priv->xstats.rx_split_hdr_pkt_n;
+       if (cnt_end <= cnt_start)
+               return -EINVAL;
+
+       return 0;
+}
+
 #define STMMAC_LOOPBACK_NONE   0
 #define STMMAC_LOOPBACK_MAC    1
 #define STMMAC_LOOPBACK_PHY    2
@@ -1724,6 +1762,10 @@ static const struct stmmac_test {
                .name = "Multichannel Jumbo  ",
                .lb = STMMAC_LOOPBACK_PHY,
                .fn = stmmac_test_mjumbo,
+       }, {
+               .name = "Split Header        ",
+               .lb = STMMAC_LOOPBACK_PHY,
+               .fn = stmmac_test_sph,
        },
 };