netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [patch 0/4] s390: qeth fixes 2.6.28-rc1
@ 2008-10-24  9:16 frank.blaschka
  2008-10-24  9:16 ` [patch 1/4] qeth: remove non-recover-thread checkings frank.blaschka
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: frank.blaschka @ 2008-10-24  9:16 UTC (permalink / raw)
  To: jgarzik; +Cc: netdev, linux-s390

Hi Jeff,

here are a couple of qeth bug fixes for 2.6.28-rc1

shortlog:
Ursula Braun (2)
qeth: remove non-recover-thread checkings
qeth: avoid skb_under_panic for malformatted inbound data

Frank Blaschka (2)
qeth: fix offset error in non prealloc header path
qeth: remove unnecessary support ckeck in sysfs route6

Thanks,
        Frank

-- 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [patch 1/4] qeth: remove non-recover-thread checkings
  2008-10-24  9:16 [patch 0/4] s390: qeth fixes 2.6.28-rc1 frank.blaschka
@ 2008-10-24  9:16 ` frank.blaschka
  2008-10-27 18:52   ` Jeff Garzik
  2008-10-24  9:16 ` [patch 2/4] qeth: fix offset error in non prealloc header path frank.blaschka
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 6+ messages in thread
From: frank.blaschka @ 2008-10-24  9:16 UTC (permalink / raw)
  To: jgarzik; +Cc: netdev, linux-s390, Ursula Braun

[-- Attachment #1: 600-qeth-thread.diff --]
[-- Type: text/plain, Size: 3565 bytes --]

From: Ursula Braun <ursula.braun@de.ibm.com>

IP-threads have been removed from the qeth driver. Only the
recover-thread is left over. This makes checkings for
non-recover threads superfluous.

Signed-off-by: Ursula Braun <ursula.braun@de.ibm.com>
Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>
---

 drivers/s390/net/qeth_l2_main.c |   14 +-------------
 drivers/s390/net/qeth_l3_main.c |   13 +------------
 2 files changed, 2 insertions(+), 25 deletions(-)

Index: git_linus/drivers/s390/net/qeth_l2_main.c
===================================================================
--- git_linus.orig/drivers/s390/net/qeth_l2_main.c
+++ git_linus/drivers/s390/net/qeth_l2_main.c
@@ -373,8 +373,6 @@ static int qeth_l2_stop_card(struct qeth
 	QETH_DBF_HEX(SETUP, 2, &card, sizeof(void *));
 
 	qeth_set_allowed_threads(card, 0, 1);
-	if (qeth_wait_for_threads(card, ~QETH_RECOVER_THREAD))
-		return -ERESTARTSYS;
 	if (card->read.state == CH_STATE_UP &&
 	    card->write.state == CH_STATE_UP &&
 	    (card->state == CARD_STATE_UP)) {
@@ -975,12 +973,6 @@ static int __qeth_l2_set_online(struct c
 	QETH_DBF_HEX(SETUP, 2, &card, sizeof(void *));
 
 	qeth_set_allowed_threads(card, QETH_RECOVER_THREAD, 1);
-	if (qeth_wait_for_threads(card, ~QETH_RECOVER_THREAD)) {
-		PRINT_WARN("set_online of card %s interrupted by user!\n",
-			   CARD_BUS_ID(card));
-		return -ERESTARTSYS;
-	}
-
 	recover_flag = card->state;
 	rc = ccw_device_set_online(CARD_RDEV(card));
 	if (rc) {
@@ -1091,11 +1083,7 @@ static int __qeth_l2_set_offline(struct 
 	if (card->dev && netif_carrier_ok(card->dev))
 		netif_carrier_off(card->dev);
 	recover_flag = card->state;
-	if (qeth_l2_stop_card(card, recovery_mode) == -ERESTARTSYS) {
-		PRINT_WARN("Stopping card %s interrupted by user!\n",
-			   CARD_BUS_ID(card));
-		return -ERESTARTSYS;
-	}
+	qeth_l2_stop_card(card, recovery_mode);
 	rc  = ccw_device_set_offline(CARD_DDEV(card));
 	rc2 = ccw_device_set_offline(CARD_WDEV(card));
 	rc3 = ccw_device_set_offline(CARD_RDEV(card));
Index: git_linus/drivers/s390/net/qeth_l3_main.c
===================================================================
--- git_linus.orig/drivers/s390/net/qeth_l3_main.c
+++ git_linus/drivers/s390/net/qeth_l3_main.c
@@ -2064,8 +2064,6 @@ static int qeth_l3_stop_card(struct qeth
 	QETH_DBF_HEX(SETUP, 2, &card, sizeof(void *));
 
 	qeth_set_allowed_threads(card, 0, 1);
-	if (qeth_wait_for_threads(card, ~QETH_RECOVER_THREAD))
-		return -ERESTARTSYS;
 	if (card->read.state == CH_STATE_UP &&
 	    card->write.state == CH_STATE_UP &&
 	    (card->state == CARD_STATE_UP)) {
@@ -3049,11 +3047,6 @@ static int __qeth_l3_set_online(struct c
 	QETH_DBF_HEX(SETUP, 2, &card, sizeof(void *));
 
 	qeth_set_allowed_threads(card, QETH_RECOVER_THREAD, 1);
-	if (qeth_wait_for_threads(card, ~QETH_RECOVER_THREAD)) {
-		PRINT_WARN("set_online of card %s interrupted by user!\n",
-			   CARD_BUS_ID(card));
-		return -ERESTARTSYS;
-	}
 
 	recover_flag = card->state;
 	rc = ccw_device_set_online(CARD_RDEV(card));
@@ -3170,11 +3163,7 @@ static int __qeth_l3_set_offline(struct 
 	if (card->dev && netif_carrier_ok(card->dev))
 		netif_carrier_off(card->dev);
 	recover_flag = card->state;
-	if (qeth_l3_stop_card(card, recovery_mode) == -ERESTARTSYS) {
-		PRINT_WARN("Stopping card %s interrupted by user!\n",
-			   CARD_BUS_ID(card));
-		return -ERESTARTSYS;
-	}
+	qeth_l3_stop_card(card, recovery_mode);
 	rc  = ccw_device_set_offline(CARD_DDEV(card));
 	rc2 = ccw_device_set_offline(CARD_WDEV(card));
 	rc3 = ccw_device_set_offline(CARD_RDEV(card));

-- 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [patch 2/4] qeth: fix offset error in non prealloc header path
  2008-10-24  9:16 [patch 0/4] s390: qeth fixes 2.6.28-rc1 frank.blaschka
  2008-10-24  9:16 ` [patch 1/4] qeth: remove non-recover-thread checkings frank.blaschka
@ 2008-10-24  9:16 ` frank.blaschka
  2008-10-24  9:16 ` [patch 3/4] qeth: remove unnecessary support ckeck in sysfs route6 frank.blaschka
  2008-10-24  9:16 ` [patch 4/4] qeth: avoid skb_under_panic for malformatted inbound data frank.blaschka
  3 siblings, 0 replies; 6+ messages in thread
From: frank.blaschka @ 2008-10-24  9:16 UTC (permalink / raw)
  To: jgarzik; +Cc: netdev, linux-s390

[-- Attachment #1: 603-qeth-offset.diff --]
[-- Type: text/plain, Size: 938 bytes --]

From: Frank Blaschka <frank.blaschka@de.ibm.com>

For the non preallocated qeth header code path we should not
change the header length.

Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>
---

 drivers/s390/net/qeth_core_main.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Index: git_linus/drivers/s390/net/qeth_core_main.c
===================================================================
--- git_linus.orig/drivers/s390/net/qeth_core_main.c
+++ git_linus/drivers/s390/net/qeth_core_main.c
@@ -3025,7 +3025,7 @@ static inline void __qeth_fill_buffer(st
 	struct qdio_buffer *buffer, int is_tso, int *next_element_to_fill,
 	int offset)
 {
-	int length = skb->len - offset;
+	int length = skb->len;
 	int length_here;
 	int element;
 	char *data;
@@ -3037,6 +3037,7 @@ static inline void __qeth_fill_buffer(st
 
 	if (offset >= 0) {
 		data = skb->data + offset;
+		length -= offset;
 		first_lap = 0;
 	}
 

-- 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [patch 3/4] qeth: remove unnecessary support ckeck in sysfs route6
  2008-10-24  9:16 [patch 0/4] s390: qeth fixes 2.6.28-rc1 frank.blaschka
  2008-10-24  9:16 ` [patch 1/4] qeth: remove non-recover-thread checkings frank.blaschka
  2008-10-24  9:16 ` [patch 2/4] qeth: fix offset error in non prealloc header path frank.blaschka
@ 2008-10-24  9:16 ` frank.blaschka
  2008-10-24  9:16 ` [patch 4/4] qeth: avoid skb_under_panic for malformatted inbound data frank.blaschka
  3 siblings, 0 replies; 6+ messages in thread
From: frank.blaschka @ 2008-10-24  9:16 UTC (permalink / raw)
  To: jgarzik; +Cc: netdev, linux-s390

[-- Attachment #1: 604-qeth-ipv6check.diff --]
[-- Type: text/plain, Size: 1054 bytes --]

From: Frank Blaschka <frank.blaschka@de.ibm.com>

Removing this check improves usability because you do not have to
set the device online to initially set ipv6 routing option.

Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>
---

 drivers/s390/net/qeth_l3_sys.c |    7 -------
 1 file changed, 7 deletions(-)

Index: git_linus/drivers/s390/net/qeth_l3_sys.c
===================================================================
--- git_linus.orig/drivers/s390/net/qeth_l3_sys.c
+++ git_linus/drivers/s390/net/qeth_l3_sys.c
@@ -121,9 +121,6 @@ static ssize_t qeth_l3_dev_route6_show(s
 	if (!card)
 		return -EINVAL;
 
-	if (!qeth_is_supported(card, IPA_IPV6))
-		return sprintf(buf, "%s\n", "n/a");
-
 	return qeth_l3_dev_route_show(card, &card->options.route6, buf);
 }
 
@@ -135,10 +132,6 @@ static ssize_t qeth_l3_dev_route6_store(
 	if (!card)
 		return -EINVAL;
 
-	if (!qeth_is_supported(card, IPA_IPV6)) {
-		return -EOPNOTSUPP;
-	}
-
 	return qeth_l3_dev_route_store(card, &card->options.route6,
 				QETH_PROT_IPV6, buf, count);
 }

-- 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [patch 4/4] qeth: avoid skb_under_panic for malformatted inbound data
  2008-10-24  9:16 [patch 0/4] s390: qeth fixes 2.6.28-rc1 frank.blaschka
                   ` (2 preceding siblings ...)
  2008-10-24  9:16 ` [patch 3/4] qeth: remove unnecessary support ckeck in sysfs route6 frank.blaschka
@ 2008-10-24  9:16 ` frank.blaschka
  3 siblings, 0 replies; 6+ messages in thread
From: frank.blaschka @ 2008-10-24  9:16 UTC (permalink / raw)
  To: jgarzik; +Cc: netdev, linux-s390, Ursula Braun

[-- Attachment #1: 605-qeth-panic.diff --]
[-- Type: text/plain, Size: 1270 bytes --]

From: Ursula Braun <ursula.braun@de.ibm.com>

To make the qeth driver more robust in case of malformatted inbound
packets due to hardware problems, an additional check for
OSN-card-type is added for OSN-type packets.

Signed-off-by: Ursula Braun <ursula.braun@de.ibm.com>
Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>
---

 drivers/s390/net/qeth_l2_main.c |   13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

Index: git_linus/drivers/s390/net/qeth_l2_main.c
===================================================================
--- git_linus.orig/drivers/s390/net/qeth_l2_main.c
+++ git_linus/drivers/s390/net/qeth_l2_main.c
@@ -449,12 +449,15 @@ static void qeth_l2_process_inbound_buff
 			netif_rx(skb);
 			break;
 		case QETH_HEADER_TYPE_OSN:
-			skb_push(skb, sizeof(struct qeth_hdr));
-			skb_copy_to_linear_data(skb, hdr,
+			if (card->info.type == QETH_CARD_TYPE_OSN) {
+				skb_push(skb, sizeof(struct qeth_hdr));
+				skb_copy_to_linear_data(skb, hdr,
 						sizeof(struct qeth_hdr));
-			len = skb->len;
-			card->osn_info.data_cb(skb);
-			break;
+				len = skb->len;
+				card->osn_info.data_cb(skb);
+				break;
+			}
+			/* else unknown */
 		default:
 			dev_kfree_skb_any(skb);
 			QETH_DBF_TEXT(TRACE, 3, "inbunkno");

-- 

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [patch 1/4] qeth: remove non-recover-thread checkings
  2008-10-24  9:16 ` [patch 1/4] qeth: remove non-recover-thread checkings frank.blaschka
@ 2008-10-27 18:52   ` Jeff Garzik
  0 siblings, 0 replies; 6+ messages in thread
From: Jeff Garzik @ 2008-10-27 18:52 UTC (permalink / raw)
  To: frank.blaschka; +Cc: netdev, linux-s390, Ursula Braun

frank.blaschka@de.ibm.com wrote:
> From: Ursula Braun <ursula.braun@de.ibm.com>
> 
> IP-threads have been removed from the qeth driver. Only the
> recover-thread is left over. This makes checkings for
> non-recover threads superfluous.
> 
> Signed-off-by: Ursula Braun <ursula.braun@de.ibm.com>
> Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>
> ---
> 
>  drivers/s390/net/qeth_l2_main.c |   14 +-------------
>  drivers/s390/net/qeth_l3_main.c |   13 +------------
>  2 files changed, 2 insertions(+), 25 deletions(-)

applied 1-4



^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2008-10-27 18:52 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-10-24  9:16 [patch 0/4] s390: qeth fixes 2.6.28-rc1 frank.blaschka
2008-10-24  9:16 ` [patch 1/4] qeth: remove non-recover-thread checkings frank.blaschka
2008-10-27 18:52   ` Jeff Garzik
2008-10-24  9:16 ` [patch 2/4] qeth: fix offset error in non prealloc header path frank.blaschka
2008-10-24  9:16 ` [patch 3/4] qeth: remove unnecessary support ckeck in sysfs route6 frank.blaschka
2008-10-24  9:16 ` [patch 4/4] qeth: avoid skb_under_panic for malformatted inbound data frank.blaschka

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).