Commit 1b2250a0 authored by Jose Abreu's avatar Jose Abreu Committed by David S. Miller

net: stmmac: selftests: Add tests for VLAN Perfect Filtering

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: default avatarJose Abreu <joabreu@synopsys.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent c7ab0b80
...@@ -816,16 +816,13 @@ static int stmmac_test_vlan_validate(struct sk_buff *skb, ...@@ -816,16 +816,13 @@ static int stmmac_test_vlan_validate(struct sk_buff *skb,
return 0; 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_packet_attrs attr = { };
struct stmmac_test_priv *tpriv; struct stmmac_test_priv *tpriv;
struct sk_buff *skb = NULL; struct sk_buff *skb = NULL;
int ret = 0, i; int ret = 0, i;
if (!priv->dma_cap.vlhash)
return -EOPNOTSUPP;
tpriv = kzalloc(sizeof(*tpriv), GFP_KERNEL); tpriv = kzalloc(sizeof(*tpriv), GFP_KERNEL);
if (!tpriv) if (!tpriv)
return -ENOMEM; return -ENOMEM;
...@@ -891,16 +888,32 @@ static int stmmac_test_vlanfilt(struct stmmac_priv *priv) ...@@ -891,16 +888,32 @@ static int stmmac_test_vlanfilt(struct stmmac_priv *priv)
return ret; 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_packet_attrs attr = { };
struct stmmac_test_priv *tpriv; struct stmmac_test_priv *tpriv;
struct sk_buff *skb = NULL; struct sk_buff *skb = NULL;
int ret = 0, i; int ret = 0, i;
if (!priv->dma_cap.vlhash)
return -EOPNOTSUPP;
tpriv = kzalloc(sizeof(*tpriv), GFP_KERNEL); tpriv = kzalloc(sizeof(*tpriv), GFP_KERNEL);
if (!tpriv) if (!tpriv)
return -ENOMEM; return -ENOMEM;
...@@ -967,6 +980,25 @@ static int stmmac_test_dvlanfilt(struct stmmac_priv *priv) ...@@ -967,6 +980,25 @@ static int stmmac_test_dvlanfilt(struct stmmac_priv *priv)
return ret; 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 #ifdef CONFIG_NET_CLS_ACT
static int stmmac_test_rxp(struct stmmac_priv *priv) static int stmmac_test_rxp(struct stmmac_priv *priv)
{ {
...@@ -1641,119 +1673,127 @@ static const struct stmmac_test { ...@@ -1641,119 +1673,127 @@ static const struct stmmac_test {
int (*fn)(struct stmmac_priv *priv); int (*fn)(struct stmmac_priv *priv);
} stmmac_selftests[] = { } stmmac_selftests[] = {
{ {
.name = "MAC Loopback ", .name = "MAC Loopback ",
.lb = STMMAC_LOOPBACK_MAC, .lb = STMMAC_LOOPBACK_MAC,
.fn = stmmac_test_mac_loopback, .fn = stmmac_test_mac_loopback,
}, { }, {
.name = "PHY Loopback ", .name = "PHY Loopback ",
.lb = STMMAC_LOOPBACK_NONE, /* Test will handle it */ .lb = STMMAC_LOOPBACK_NONE, /* Test will handle it */
.fn = stmmac_test_phy_loopback, .fn = stmmac_test_phy_loopback,
}, { }, {
.name = "MMC Counters ", .name = "MMC Counters ",
.lb = STMMAC_LOOPBACK_PHY, .lb = STMMAC_LOOPBACK_PHY,
.fn = stmmac_test_mmc, .fn = stmmac_test_mmc,
}, { }, {
.name = "EEE ", .name = "EEE ",
.lb = STMMAC_LOOPBACK_PHY, .lb = STMMAC_LOOPBACK_PHY,
.fn = stmmac_test_eee, .fn = stmmac_test_eee,
}, { }, {
.name = "Hash Filter MC ", .name = "Hash Filter MC ",
.lb = STMMAC_LOOPBACK_PHY, .lb = STMMAC_LOOPBACK_PHY,
.fn = stmmac_test_hfilt, .fn = stmmac_test_hfilt,
}, { }, {
.name = "Perfect Filter UC ", .name = "Perfect Filter UC ",
.lb = STMMAC_LOOPBACK_PHY, .lb = STMMAC_LOOPBACK_PHY,
.fn = stmmac_test_pfilt, .fn = stmmac_test_pfilt,
}, { }, {
.name = "MC Filter ", .name = "MC Filter ",
.lb = STMMAC_LOOPBACK_PHY, .lb = STMMAC_LOOPBACK_PHY,
.fn = stmmac_test_mcfilt, .fn = stmmac_test_mcfilt,
}, { }, {
.name = "UC Filter ", .name = "UC Filter ",
.lb = STMMAC_LOOPBACK_PHY, .lb = STMMAC_LOOPBACK_PHY,
.fn = stmmac_test_ucfilt, .fn = stmmac_test_ucfilt,
}, { }, {
.name = "Flow Control ", .name = "Flow Control ",
.lb = STMMAC_LOOPBACK_PHY, .lb = STMMAC_LOOPBACK_PHY,
.fn = stmmac_test_flowctrl, .fn = stmmac_test_flowctrl,
}, { }, {
.name = "RSS ", .name = "RSS ",
.lb = STMMAC_LOOPBACK_PHY, .lb = STMMAC_LOOPBACK_PHY,
.fn = stmmac_test_rss, .fn = stmmac_test_rss,
}, { }, {
.name = "VLAN Filtering ", .name = "VLAN Filtering ",
.lb = STMMAC_LOOPBACK_PHY, .lb = STMMAC_LOOPBACK_PHY,
.fn = stmmac_test_vlanfilt, .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, .lb = STMMAC_LOOPBACK_PHY,
.fn = stmmac_test_dvlanfilt, .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, .lb = STMMAC_LOOPBACK_PHY,
.fn = stmmac_test_rxp, .fn = stmmac_test_rxp,
}, { }, {
.name = "SA Insertion (desc) ", .name = "SA Insertion (desc) ",
.lb = STMMAC_LOOPBACK_PHY, .lb = STMMAC_LOOPBACK_PHY,
.fn = stmmac_test_desc_sai, .fn = stmmac_test_desc_sai,
}, { }, {
.name = "SA Replacement (desc)", .name = "SA Replacement (desc) ",
.lb = STMMAC_LOOPBACK_PHY, .lb = STMMAC_LOOPBACK_PHY,
.fn = stmmac_test_desc_sar, .fn = stmmac_test_desc_sar,
}, { }, {
.name = "SA Insertion (reg) ", .name = "SA Insertion (reg) ",
.lb = STMMAC_LOOPBACK_PHY, .lb = STMMAC_LOOPBACK_PHY,
.fn = stmmac_test_reg_sai, .fn = stmmac_test_reg_sai,
}, { }, {
.name = "SA Replacement (reg)", .name = "SA Replacement (reg) ",
.lb = STMMAC_LOOPBACK_PHY, .lb = STMMAC_LOOPBACK_PHY,
.fn = stmmac_test_reg_sar, .fn = stmmac_test_reg_sar,
}, { }, {
.name = "VLAN TX Insertion ", .name = "VLAN TX Insertion ",
.lb = STMMAC_LOOPBACK_PHY, .lb = STMMAC_LOOPBACK_PHY,
.fn = stmmac_test_vlanoff, .fn = stmmac_test_vlanoff,
}, { }, {
.name = "SVLAN TX Insertion ", .name = "SVLAN TX Insertion ",
.lb = STMMAC_LOOPBACK_PHY, .lb = STMMAC_LOOPBACK_PHY,
.fn = stmmac_test_svlanoff, .fn = stmmac_test_svlanoff,
}, { }, {
.name = "L3 DA Filtering ", .name = "L3 DA Filtering ",
.lb = STMMAC_LOOPBACK_PHY, .lb = STMMAC_LOOPBACK_PHY,
.fn = stmmac_test_l3filt_da, .fn = stmmac_test_l3filt_da,
}, { }, {
.name = "L3 SA Filtering ", .name = "L3 SA Filtering ",
.lb = STMMAC_LOOPBACK_PHY, .lb = STMMAC_LOOPBACK_PHY,
.fn = stmmac_test_l3filt_sa, .fn = stmmac_test_l3filt_sa,
}, { }, {
.name = "L4 DA TCP Filtering ", .name = "L4 DA TCP Filtering ",
.lb = STMMAC_LOOPBACK_PHY, .lb = STMMAC_LOOPBACK_PHY,
.fn = stmmac_test_l4filt_da_tcp, .fn = stmmac_test_l4filt_da_tcp,
}, { }, {
.name = "L4 SA TCP Filtering ", .name = "L4 SA TCP Filtering ",
.lb = STMMAC_LOOPBACK_PHY, .lb = STMMAC_LOOPBACK_PHY,
.fn = stmmac_test_l4filt_sa_tcp, .fn = stmmac_test_l4filt_sa_tcp,
}, { }, {
.name = "L4 DA UDP Filtering ", .name = "L4 DA UDP Filtering ",
.lb = STMMAC_LOOPBACK_PHY, .lb = STMMAC_LOOPBACK_PHY,
.fn = stmmac_test_l4filt_da_udp, .fn = stmmac_test_l4filt_da_udp,
}, { }, {
.name = "L4 SA UDP Filtering ", .name = "L4 SA UDP Filtering ",
.lb = STMMAC_LOOPBACK_PHY, .lb = STMMAC_LOOPBACK_PHY,
.fn = stmmac_test_l4filt_sa_udp, .fn = stmmac_test_l4filt_sa_udp,
}, { }, {
.name = "ARP Offload ", .name = "ARP Offload ",
.lb = STMMAC_LOOPBACK_PHY, .lb = STMMAC_LOOPBACK_PHY,
.fn = stmmac_test_arpoffload, .fn = stmmac_test_arpoffload,
}, { }, {
.name = "Jumbo Frame ", .name = "Jumbo Frame ",
.lb = STMMAC_LOOPBACK_PHY, .lb = STMMAC_LOOPBACK_PHY,
.fn = stmmac_test_jumbo, .fn = stmmac_test_jumbo,
}, { }, {
.name = "Multichannel Jumbo ", .name = "Multichannel Jumbo ",
.lb = STMMAC_LOOPBACK_PHY, .lb = STMMAC_LOOPBACK_PHY,
.fn = stmmac_test_mjumbo, .fn = stmmac_test_mjumbo,
}, { }, {
.name = "Split Header ", .name = "Split Header ",
.lb = STMMAC_LOOPBACK_PHY, .lb = STMMAC_LOOPBACK_PHY,
.fn = stmmac_test_sph, .fn = stmmac_test_sph,
}, },
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment