Sophie

Sophie

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

kernel-2.6.18-128.1.10.el5.src.rpm

From: Hans-Joachim Picht <hpicht@redhat.com>
Date: Thu, 6 Nov 2008 15:47:28 +0100
Subject: [s390] qeth: EDDP for large TSO skb fragment list
Message-id: 20081106144728.GC12027@redhat.com
O-Subject: [RHEL5 U4 PATCH 3/4] s390 - qeth: EDDP for large TSO skb fragment list
Bugzilla: 468068
RH-Acked-by: Pete Zaitcev <zaitcev@redhat.com>

Description
============

We experiemce TSO packet loss (performance) because the TCP/IP stack sends sbk with more fragments than
the hardware can handle.
Solution: Switch temporary to EDDP mode.

Bugzilla
=========

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

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

This problem has been fixes upstream as part of
the qeth device driver rewrite:

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=4a71df50047f0db65ea09b1be155852e81a45eba

Test status:
============

The patch has been tested and fixes the problem.
The fix has been verified by the IBM test department.

Please ACK.

With best regards,

	--Hans

diff --git a/drivers/s390/net/qeth_main.c b/drivers/s390/net/qeth_main.c
index 6d9ec25..b0c32aa 100644
--- a/drivers/s390/net/qeth_main.c
+++ b/drivers/s390/net/qeth_main.c
@@ -4557,6 +4557,11 @@ qeth_send_packet(struct qeth_card *card, struct sk_buff *skb)
 	}
 	if (skb_is_gso(skb))
 		large_send = card->options.large_send;
+
+	if ((large_send == QETH_LARGE_SEND_TSO) &&
+		((skb_shinfo(new_skb)->nr_frags + 2) > 16))
+		large_send = QETH_LARGE_SEND_EDDP;
+
 	/* check on OSN device*/
 	if (card->info.type == QETH_CARD_TYPE_OSN)
 		hdr = (struct qeth_hdr *)new_skb->data;