]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
net: stmmac: selftests: Add tests for VLAN Perfect Filtering
authorJose Abreu <joabreu@synopsys.com>
Sun, 6 Oct 2019 11:17:13 +0000 (13:17 +0200)
committerDavid S. Miller <davem@davemloft.net>
Sun, 6 Oct 2019 16:46:31 +0000 (18:46 +0200)
Add two new tests for VLAN Perfect Filtering. While at it, increase a
little bit the tests strings lenght so that we can have more descriptive
test names.

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 cc76a42c7466c27cc7d025bc94a03014d6bcfda3..68c59cfb8f70ae90ef7ff8a49e93fbd7c9d061d5 100644 (file)
@@ -816,16 +816,13 @@ static int stmmac_test_vlan_validate(struct sk_buff *skb,
        return 0;
 }
 
-static int stmmac_test_vlanfilt(struct stmmac_priv *priv)
+static int __stmmac_test_vlanfilt(struct stmmac_priv *priv)
 {
        struct stmmac_packet_attrs attr = { };
        struct stmmac_test_priv *tpriv;
        struct sk_buff *skb = NULL;
        int ret = 0, i;
 
-       if (!priv->dma_cap.vlhash)
-               return -EOPNOTSUPP;
-
        tpriv = kzalloc(sizeof(*tpriv), GFP_KERNEL);
        if (!tpriv)
                return -ENOMEM;
@@ -891,16 +888,32 @@ static int stmmac_test_vlanfilt(struct stmmac_priv *priv)
        return ret;
 }
 
-static int stmmac_test_dvlanfilt(struct stmmac_priv *priv)
+static int stmmac_test_vlanfilt(struct stmmac_priv *priv)
+{
+       if (!priv->dma_cap.vlhash)
+               return -EOPNOTSUPP;
+
+       return __stmmac_test_vlanfilt(priv);
+}
+
+static int stmmac_test_vlanfilt_perfect(struct stmmac_priv *priv)
+{
+       int ret, prev_cap = priv->dma_cap.vlhash;
+
+       priv->dma_cap.vlhash = 0;
+       ret = __stmmac_test_vlanfilt(priv);
+       priv->dma_cap.vlhash = prev_cap;
+
+       return ret;
+}
+
+static int __stmmac_test_dvlanfilt(struct stmmac_priv *priv)
 {
        struct stmmac_packet_attrs attr = { };
        struct stmmac_test_priv *tpriv;
        struct sk_buff *skb = NULL;
        int ret = 0, i;
 
-       if (!priv->dma_cap.vlhash)
-               return -EOPNOTSUPP;
-
        tpriv = kzalloc(sizeof(*tpriv), GFP_KERNEL);
        if (!tpriv)
                return -ENOMEM;
@@ -967,6 +980,25 @@ static int stmmac_test_dvlanfilt(struct stmmac_priv *priv)
        return ret;
 }
 
+static int stmmac_test_dvlanfilt(struct stmmac_priv *priv)
+{
+       if (!priv->dma_cap.vlhash)
+               return -EOPNOTSUPP;
+
+       return __stmmac_test_dvlanfilt(priv);
+}
+
+static int stmmac_test_dvlanfilt_perfect(struct stmmac_priv *priv)
+{
+       int ret, prev_cap = priv->dma_cap.vlhash;
+
+       priv->dma_cap.vlhash = 0;
+       ret = __stmmac_test_dvlanfilt(priv);
+       priv->dma_cap.vlhash = prev_cap;
+
+       return ret;
+}
+
 #ifdef CONFIG_NET_CLS_ACT
 static int stmmac_test_rxp(struct stmmac_priv *priv)
 {
@@ -1641,119 +1673,127 @@ static const struct stmmac_test {
        int (*fn)(struct stmmac_priv *priv);
 } stmmac_selftests[] = {
        {
-               .name = "MAC Loopback         ",
+               .name = "MAC Loopback               ",
                .lb = STMMAC_LOOPBACK_MAC,
                .fn = stmmac_test_mac_loopback,
        }, {
-               .name = "PHY Loopback         ",
+               .name = "PHY Loopback               ",
                .lb = STMMAC_LOOPBACK_NONE, /* Test will handle it */
                .fn = stmmac_test_phy_loopback,
        }, {
-               .name = "MMC Counters         ",
+               .name = "MMC Counters               ",
                .lb = STMMAC_LOOPBACK_PHY,
                .fn = stmmac_test_mmc,
        }, {
-               .name = "EEE                  ",
+               .name = "EEE                        ",
                .lb = STMMAC_LOOPBACK_PHY,
                .fn = stmmac_test_eee,
        }, {
-               .name = "Hash Filter MC       ",
+               .name = "Hash Filter MC             ",
                .lb = STMMAC_LOOPBACK_PHY,
                .fn = stmmac_test_hfilt,
        }, {
-               .name = "Perfect Filter UC    ",
+               .name = "Perfect Filter UC          ",
                .lb = STMMAC_LOOPBACK_PHY,
                .fn = stmmac_test_pfilt,
        }, {
-               .name = "MC Filter            ",
+               .name = "MC Filter                  ",
                .lb = STMMAC_LOOPBACK_PHY,
                .fn = stmmac_test_mcfilt,
        }, {
-               .name = "UC Filter            ",
+               .name = "UC Filter                  ",
                .lb = STMMAC_LOOPBACK_PHY,
                .fn = stmmac_test_ucfilt,
        }, {
-               .name = "Flow Control         ",
+               .name = "Flow Control               ",
                .lb = STMMAC_LOOPBACK_PHY,
                .fn = stmmac_test_flowctrl,
        }, {
-               .name = "RSS                  ",
+               .name = "RSS                        ",
                .lb = STMMAC_LOOPBACK_PHY,
                .fn = stmmac_test_rss,
        }, {
-               .name = "VLAN Filtering       ",
+               .name = "VLAN Filtering             ",
                .lb = STMMAC_LOOPBACK_PHY,
                .fn = stmmac_test_vlanfilt,
        }, {
-               .name = "Double VLAN Filtering",
+               .name = "VLAN Filtering (perf)      ",
+               .lb = STMMAC_LOOPBACK_PHY,
+               .fn = stmmac_test_vlanfilt_perfect,
+       }, {
+               .name = "Double VLAN Filter         ",
                .lb = STMMAC_LOOPBACK_PHY,
                .fn = stmmac_test_dvlanfilt,
        }, {
-               .name = "Flexible RX Parser   ",
+               .name = "Double VLAN Filter (perf)  ",
+               .lb = STMMAC_LOOPBACK_PHY,
+               .fn = stmmac_test_dvlanfilt_perfect,
+       }, {
+               .name = "Flexible RX Parser         ",
                .lb = STMMAC_LOOPBACK_PHY,
                .fn = stmmac_test_rxp,
        }, {
-               .name = "SA Insertion (desc)  ",
+               .name = "SA Insertion (desc)        ",
                .lb = STMMAC_LOOPBACK_PHY,
                .fn = stmmac_test_desc_sai,
        }, {
-               .name = "SA Replacement (desc)",
+               .name = "SA Replacement (desc)      ",
                .lb = STMMAC_LOOPBACK_PHY,
                .fn = stmmac_test_desc_sar,
        }, {
-               .name = "SA Insertion (reg)  ",
+               .name = "SA Insertion (reg)         ",
                .lb = STMMAC_LOOPBACK_PHY,
                .fn = stmmac_test_reg_sai,
        }, {
-               .name = "SA Replacement (reg)",
+               .name = "SA Replacement (reg)       ",
                .lb = STMMAC_LOOPBACK_PHY,
                .fn = stmmac_test_reg_sar,
        }, {
-               .name = "VLAN TX Insertion   ",
+               .name = "VLAN TX Insertion          ",
                .lb = STMMAC_LOOPBACK_PHY,
                .fn = stmmac_test_vlanoff,
        }, {
-               .name = "SVLAN TX Insertion  ",
+               .name = "SVLAN TX Insertion         ",
                .lb = STMMAC_LOOPBACK_PHY,
                .fn = stmmac_test_svlanoff,
        }, {
-               .name = "L3 DA Filtering     ",
+               .name = "L3 DA Filtering            ",
                .lb = STMMAC_LOOPBACK_PHY,
                .fn = stmmac_test_l3filt_da,
        }, {
-               .name = "L3 SA Filtering     ",
+               .name = "L3 SA Filtering            ",
                .lb = STMMAC_LOOPBACK_PHY,
                .fn = stmmac_test_l3filt_sa,
        }, {
-               .name = "L4 DA TCP Filtering ",
+               .name = "L4 DA TCP Filtering        ",
                .lb = STMMAC_LOOPBACK_PHY,
                .fn = stmmac_test_l4filt_da_tcp,
        }, {
-               .name = "L4 SA TCP Filtering ",
+               .name = "L4 SA TCP Filtering        ",
                .lb = STMMAC_LOOPBACK_PHY,
                .fn = stmmac_test_l4filt_sa_tcp,
        }, {
-               .name = "L4 DA UDP Filtering ",
+               .name = "L4 DA UDP Filtering        ",
                .lb = STMMAC_LOOPBACK_PHY,
                .fn = stmmac_test_l4filt_da_udp,
        }, {
-               .name = "L4 SA UDP Filtering ",
+               .name = "L4 SA UDP Filtering        ",
                .lb = STMMAC_LOOPBACK_PHY,
                .fn = stmmac_test_l4filt_sa_udp,
        }, {
-               .name = "ARP Offload         ",
+               .name = "ARP Offload                ",
                .lb = STMMAC_LOOPBACK_PHY,
                .fn = stmmac_test_arpoffload,
        }, {
-               .name = "Jumbo Frame         ",
+               .name = "Jumbo Frame                ",
                .lb = STMMAC_LOOPBACK_PHY,
                .fn = stmmac_test_jumbo,
        }, {
-               .name = "Multichannel Jumbo  ",
+               .name = "Multichannel Jumbo         ",
                .lb = STMMAC_LOOPBACK_PHY,
                .fn = stmmac_test_mjumbo,
        }, {
-               .name = "Split Header        ",
+               .name = "Split Header               ",
                .lb = STMMAC_LOOPBACK_PHY,
                .fn = stmmac_test_sph,
        },