qeth: layer 3 support vlan IPv6 on hiper socket
authorFrank Blaschka <frank.blaschka@de.ibm.com>
Thu, 24 Apr 2008 08:15:22 +0000 (10:15 +0200)
committerJeff Garzik <jgarzik@redhat.com>
Tue, 29 Apr 2008 05:56:31 +0000 (01:56 -0400)
hiper socket require the QETH_HDR_EXT_VLAN_FRAME flag in the
qdio header to handle vlan tagged frames.

Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
drivers/s390/net/qeth_l3_main.c

index 62a54364a512768fef3b97b501b356bd86c1813e..f385e93d757ae05ca6e3bb0bf0cc0124bb1472f1 100644 (file)
@@ -2568,9 +2568,10 @@ static void qeth_l3_fill_header(struct qeth_card *card, struct qeth_hdr *hdr,
         * v6 uses passthrough, v4 sets the tag in the QDIO header.
         */
        if (card->vlangrp && vlan_tx_tag_present(skb)) {
-               hdr->hdr.l3.ext_flags = (ipv == 4) ?
-                       QETH_HDR_EXT_VLAN_FRAME :
-                       QETH_HDR_EXT_INCLUDE_VLAN_TAG;
+               if ((ipv == 4) || (card->info.type == QETH_CARD_TYPE_IQD))
+                       hdr->hdr.l3.ext_flags = QETH_HDR_EXT_VLAN_FRAME;
+               else
+                       hdr->hdr.l3.ext_flags = QETH_HDR_EXT_INCLUDE_VLAN_TAG;
                hdr->hdr.l3.vlan_id = vlan_tx_tag_get(skb);
        }