Synopsys AXS101 boards do not support unaligned memory loads or stores.
Change the selftests mechanism to explicity:
- Not add extra alignment in TX SKB
- Use the unaligned version of ether_addr_equal()

Fixes: 091810dbded9 ("net: stmmac: Introduce selftests support")
Signed-off-by: Jose Abreu <jose.ab...@synopsys.com>

---
Cc: Giuseppe Cavallaro <peppe.cavall...@st.com>
Cc: Alexandre Torgue <alexandre.tor...@st.com>
Cc: Jose Abreu <joab...@synopsys.com>
Cc: "David S. Miller" <da...@davemloft.net>
Cc: Maxime Coquelin <mcoquelin.st...@gmail.com>
Cc: net...@vger.kernel.org
Cc: linux-st...@st-md-mailman.stormreply.com
Cc: linux-arm-ker...@lists.infradead.org
Cc: linux-ker...@vger.kernel.org
Cc: Alexey Brodkin <abrod...@synopsys.com>
Cc: Vineet Gupta <vgu...@synopsys.com>
Cc: linux-snps-arc@lists.infradead.org
---
 .../net/ethernet/stmicro/stmmac/stmmac_selftests.c   | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c 
b/drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
index 36a4c43a799a..6516d65e84b8 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
@@ -80,7 +80,7 @@ static struct sk_buff *stmmac_test_get_udp_skb(struct 
stmmac_priv *priv,
        if (attr->max_size && (attr->max_size > size))
                size = attr->max_size;
 
-       skb = netdev_alloc_skb_ip_align(priv->dev, size);
+       skb = netdev_alloc_skb(priv->dev, size);
        if (!skb)
                return NULL;
 
@@ -244,6 +244,8 @@ static int stmmac_test_loopback_validate(struct sk_buff 
*skb,
                                         struct net_device *orig_ndev)
 {
        struct stmmac_test_priv *tpriv = pt->af_packet_priv;
+       unsigned char *src = tpriv->packet->src;
+       unsigned char *dst = tpriv->packet->dst;
        struct stmmachdr *shdr;
        struct ethhdr *ehdr;
        struct udphdr *uhdr;
@@ -260,15 +262,15 @@ static int stmmac_test_loopback_validate(struct sk_buff 
*skb,
                goto out;
 
        ehdr = (struct ethhdr *)skb_mac_header(skb);
-       if (tpriv->packet->dst) {
-               if (!ether_addr_equal(ehdr->h_dest, tpriv->packet->dst))
+       if (dst) {
+               if (!ether_addr_equal_unaligned(ehdr->h_dest, dst))
                        goto out;
        }
        if (tpriv->packet->sarc) {
-               if (!ether_addr_equal(ehdr->h_source, ehdr->h_dest))
+               if (!ether_addr_equal_unaligned(ehdr->h_source, ehdr->h_dest))
                        goto out;
-       } else if (tpriv->packet->src) {
-               if (!ether_addr_equal(ehdr->h_source, tpriv->packet->src))
+       } else if (src) {
+               if (!ether_addr_equal_unaligned(ehdr->h_source, src))
                        goto out;
        }
 
@@ -714,7 +716,7 @@ static int stmmac_test_flowctrl_validate(struct sk_buff 
*skb,
        struct ethhdr *ehdr;
 
        ehdr = (struct ethhdr *)skb_mac_header(skb);
-       if (!ether_addr_equal(ehdr->h_source, orig_ndev->dev_addr))
+       if (!ether_addr_equal_unaligned(ehdr->h_source, orig_ndev->dev_addr))
                goto out;
        if (ehdr->h_proto != htons(ETH_P_PAUSE))
                goto out;
@@ -856,7 +858,7 @@ static int stmmac_test_vlan_validate(struct sk_buff *skb,
        }
 
        ehdr = (struct ethhdr *)skb_mac_header(skb);
-       if (!ether_addr_equal(ehdr->h_dest, tpriv->packet->dst))
+       if (!ether_addr_equal_unaligned(ehdr->h_dest, tpriv->packet->dst))
                goto out;
 
        ihdr = ip_hdr(skb);
@@ -1586,7 +1588,7 @@ static int stmmac_test_arp_validate(struct sk_buff *skb,
        struct arphdr *ahdr;
 
        ehdr = (struct ethhdr *)skb_mac_header(skb);
-       if (!ether_addr_equal(ehdr->h_dest, tpriv->packet->src))
+       if (!ether_addr_equal_unaligned(ehdr->h_dest, tpriv->packet->src))
                goto out;
 
        ahdr = arp_hdr(skb);
-- 
2.7.4


_______________________________________________
linux-snps-arc mailing list
linux-snps-arc@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-snps-arc

Reply via email to