qeth: HiperSockets layer-3 interface drop non IPv4 or non IPv6 packets
authorKlaus D. Wacker <kdwacker@de.ibm.com>
Fri, 5 Oct 2007 14:45:44 +0000 (16:45 +0200)
committerDavid S. Miller <davem@sunset.davemloft.net>
Wed, 10 Oct 2007 23:54:39 +0000 (16:54 -0700)
HiperSockets infrastructure (layer-3 mode) supports only IPv4 or
IPv6 packets. Sending other packet types disturbs TCP/IP on z/VM,
which issues messages about invalid packets.
Qeth send routine will detect packet type on sending over a
HiperSockets interface (in layer-3 mode) and drop non IP packets.
The error and drop count of the interface is incremented.

Signed-off-by: Klaus D. Wacker <kdwacker@de.ibm.com>
Signed-off-by: Ursula Braun <braunu@de.ibm.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/s390/net/qeth_main.c

index 778ddfb..b41a538 100644 (file)
@@ -4719,8 +4719,8 @@ qeth_send_packet(struct qeth_card *card, struct sk_buff *skb)
                rc = qeth_do_send_packet(card, queue, new_skb, hdr,
                                         elements_needed, ctx);
        else {
-               if ((skb->protocol == htons(ETH_P_ARP)) &&
-                   (card->dev->flags & IFF_NOARP)) {
+               if ((!card->options.layer2) &&
+                   (ipv == 0)) {
                        __qeth_free_new_skb(skb, new_skb);
                        return -EPERM;
                }