Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > fc11cd6e1c513a17304da94a5390f3cd > files > 3183

kernel-2.6.18-194.11.1.el5.src.rpm

From: Hans-Joachim Picht <hpicht@redhat.com>
Date: Thu, 24 Apr 2008 17:33:53 +0200
Subject: [s390] qeth: ccl-seq. numbers req for protocol 802.2
Message-id: 20080424153353.GA7903@redhat.com
O-Subject: Re: [RHEL5 U3 PATCH 4/7] s390 - qeth: CCL-seq. numbers required for protocol 802.2 only
Bugzilla: 440227
RH-Acked-by: Pete Zaitcev <zaitcev@redhat.com>
RH-Acked-by: Pete Zaitcev <zaitcev@redhat.com>

Description
============
We see a slow CCL response time, because non-802.2 packets
are not delivered to NDH for CCL, but CCL detects
missing sequence numbers, which cause serious
performance problem with CCL.

The problem is fixed assigning sequence numbers to 802.2 packets only

Bugzilla
=========

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

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

This patch was posted upstream:
http://marc.info/?l=linux-s390&m=120716475603359&w=2
I'll reply to this message as soon as we have a git commit id

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

diff --git a/drivers/s390/net/qeth_main.c b/drivers/s390/net/qeth_main.c
index e6b9411..ca72fe0 100644
--- a/drivers/s390/net/qeth_main.c
+++ b/drivers/s390/net/qeth_main.c
@@ -2558,7 +2558,8 @@ qeth_layer2_rebuild_skb(struct qeth_card *card, struct sk_buff *skb,
 		skb_pull(skb, VLAN_HLEN);
 	}
 #endif
-	*((__u32 *)skb->cb) = ++card->seqno.pkt_seqno;
+	if (skb->protocol == htons(ETH_P_802_2))
+		*((__u32 *)skb->cb) = ++card->seqno.pkt_seqno;
 	return vlan_id;
 }
 
@@ -2644,7 +2645,8 @@ qeth_process_inbound_buffer(struct qeth_card *card,
 				skb->ip_summed = CHECKSUM_UNNECESSARY;
 			else
 				skb->ip_summed = CHECKSUM_NONE;
-			*((__u32 *)skb->cb) = ++card->seqno.pkt_seqno;
+			if (skb->protocol == htons(ETH_P_802_2))
+				*((__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 if (hdr->hdr.osn.id == QETH_HEADER_TYPE_OSN) {