Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > 89877e42827f16fa5f86b1df0c2860b1 > files > 2000

kernel-2.6.18-128.1.10.el5.src.rpm

From: Hans-Joachim Picht <hpicht@redhat.com>
Date: Tue, 30 Oct 2007 17:07:12 +0100
Subject: [s390] qeth: up sequence number for incoming packets
Message-id: 20071030160712.GG6604@redhat.com
O-Subject: [RHEL5.2 PATCH 2/5] s390 qeth: increment sequence number for incoming packets
Bugzilla: 354851

Problem:
=========

CCL 1.1 cannot handle SNA-traffic correctly
For proper CCL 1.1 support sequence numbers need
to be incremented as well for every arriving packet
when using eth_type_trans.

Bugzilla
=========

BZ 354851
https://bugzilla.redhat.com/show_bug.cgi?id=354851

Upstream status of the patch:
=============================

Posted upstream
http://www.mail-archive.com/netdev@vger.kernel.org/msg29210.html

Test status:
============
Kernel with patch was built and successfully tested

Please ACK.

With best regards,

Hans

diff --git a/drivers/s390/net/qeth_main.c b/drivers/s390/net/qeth_main.c
index 5d9a9b9..5451667 100644
--- a/drivers/s390/net/qeth_main.c
+++ b/drivers/s390/net/qeth_main.c
@@ -2510,9 +2510,15 @@ qeth_process_inbound_buffer(struct qeth_card *card,
 	while((skb = qeth_get_next_skb(card, buf->buffer, &element,
 				       &offset, &hdr))) {
 		skb->dev = card->dev;
-		if (hdr->hdr.l2.id == QETH_HEADER_TYPE_LAYER2)
-			vlan_tag = qeth_layer2_rebuild_skb(card, skb, hdr);
-		else if (hdr->hdr.l3.id == QETH_HEADER_TYPE_LAYER3)
+		if (hdr->hdr.l2.id == QETH_HEADER_TYPE_LAYER2) {
+			skb->pkt_type = PACKET_HOST;
+			skb->protocol = eth_type_trans(skb, skb->dev);
+			if (card->options.checksum_type == NO_CHECKSUMMING)
+				skb->ip_summed = CHECKSUM_UNNECESSARY;
+			else
+				skb->ip_summed = CHECKSUM_NONE;
+			*((__u32 *)skb->cb) = ++card->seqno.pkt_seqno;
+		} else if (hdr->hdr.l3.id == QETH_HEADER_TYPE_LAYER3)
 			vlan_tag = qeth_rebuild_skb(card, skb, hdr);
 		else { /*in case of OSN*/
 			skb_push(skb, sizeof(struct qeth_hdr));