netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [patch 0/6] [resend] s390: network patches for net-next
@ 2011-02-02 16:04 frank.blaschka
  2011-02-02 16:04 ` [patch 1/6] [PATCH] qeth: show new mac-address if its setting fails frank.blaschka
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: frank.blaschka @ 2011-02-02 16:04 UTC (permalink / raw)
  To: davem; +Cc: netdev, linux-s390

Hi Dave,

I have removed the NET_SKB_PAD patch from the patch set.
We will define it in an arch specific header. The new
version of the patch will come via the s390 tree. Thx!

shortlog:
Ursula Braun (3)
qeth: show new mac-address if its setting fails
qeth: allow HiperSockets framesize change in suspend
qeth: allow OSA CHPARM change in suspend state

Frank Blaschka (1)
qeth: add more strict MTU checking

Stefan Weil (2)
s390: Fix wrong size in memcmp (netiucv)
s390: Fix possibly wrong size in strncmp (smsgiucv)

Thanks,
        Frank


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

* [patch 1/6] [PATCH] qeth: show new mac-address if its setting fails
  2011-02-02 16:04 [patch 0/6] [resend] s390: network patches for net-next frank.blaschka
@ 2011-02-02 16:04 ` frank.blaschka
  2011-02-02 16:04 ` [patch 2/6] [PATCH] qeth: add more strict MTU checking frank.blaschka
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: frank.blaschka @ 2011-02-02 16:04 UTC (permalink / raw)
  To: davem; +Cc: netdev, linux-s390, Ursula Braun

[-- Attachment #1: 604-qeth-mac-address.diff --]
[-- Type: text/plain, Size: 1152 bytes --]

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

Setting of a MAC-address may fail because an already used MAC-address
is to bet set or because of authorization problems. In those cases
qeth issues a message, but the mentioned MAC-address is not the
new MAC-address to be set, but the actual MAC-address. This patch
chooses now the new MAC-address to be set for the error messages.

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 |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
--- a/drivers/s390/net/qeth_l2_main.c
+++ b/drivers/s390/net/qeth_l2_main.c
@@ -573,13 +573,13 @@ static int qeth_l2_send_setmac_cb(struct
 		case IPA_RC_L2_DUP_LAYER3_MAC:
 			dev_warn(&card->gdev->dev,
 				"MAC address %pM already exists\n",
-				card->dev->dev_addr);
+				cmd->data.setdelmac.mac);
 			break;
 		case IPA_RC_L2_MAC_NOT_AUTH_BY_HYP:
 		case IPA_RC_L2_MAC_NOT_AUTH_BY_ADP:
 			dev_warn(&card->gdev->dev,
 				"MAC address %pM is not authorized\n",
-				card->dev->dev_addr);
+				cmd->data.setdelmac.mac);
 			break;
 		default:
 			break;


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

* [patch 2/6] [PATCH] qeth: add more strict MTU checking
  2011-02-02 16:04 [patch 0/6] [resend] s390: network patches for net-next frank.blaschka
  2011-02-02 16:04 ` [patch 1/6] [PATCH] qeth: show new mac-address if its setting fails frank.blaschka
@ 2011-02-02 16:04 ` frank.blaschka
  2011-02-02 16:04 ` [patch 3/6] [PATCH] qeth: allow HiperSockets framesize change in suspend frank.blaschka
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: frank.blaschka @ 2011-02-02 16:04 UTC (permalink / raw)
  To: davem; +Cc: netdev, linux-s390

[-- Attachment #1: 605-qeth-mtu-checking.diff --]
[-- Type: text/plain, Size: 2285 bytes --]

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

HiperSockets and OSA hardware report a maximum MTU size. Add checking
to reject larger MTUs than allowed by hardware.

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


 drivers/s390/net/qeth_core_main.c |   35 ++++-------------------------------
 1 file changed, 4 insertions(+), 31 deletions(-)
--- a/drivers/s390/net/qeth_core_main.c
+++ b/drivers/s390/net/qeth_core_main.c
@@ -1832,33 +1832,6 @@ static inline int qeth_get_initial_mtu_f
 	}
 }
 
-static inline int qeth_get_max_mtu_for_card(int cardtype)
-{
-	switch (cardtype) {
-
-	case QETH_CARD_TYPE_UNKNOWN:
-	case QETH_CARD_TYPE_OSD:
-	case QETH_CARD_TYPE_OSN:
-	case QETH_CARD_TYPE_OSM:
-	case QETH_CARD_TYPE_OSX:
-		return 61440;
-	case QETH_CARD_TYPE_IQD:
-		return 57344;
-	default:
-		return 1500;
-	}
-}
-
-static inline int qeth_get_mtu_out_of_mpc(int cardtype)
-{
-	switch (cardtype) {
-	case QETH_CARD_TYPE_IQD:
-		return 1;
-	default:
-		return 0;
-	}
-}
-
 static inline int qeth_get_mtu_outof_framesize(int framesize)
 {
 	switch (framesize) {
@@ -1881,10 +1854,9 @@ static inline int qeth_mtu_is_valid(stru
 	case QETH_CARD_TYPE_OSD:
 	case QETH_CARD_TYPE_OSM:
 	case QETH_CARD_TYPE_OSX:
-		return ((mtu >= 576) && (mtu <= 61440));
 	case QETH_CARD_TYPE_IQD:
 		return ((mtu >= 576) &&
-			(mtu <= card->info.max_mtu + 4096 - 32));
+			(mtu <= card->info.max_mtu));
 	case QETH_CARD_TYPE_OSN:
 	case QETH_CARD_TYPE_UNKNOWN:
 	default:
@@ -1907,7 +1879,7 @@ static int qeth_ulp_enable_cb(struct qet
 	memcpy(&card->token.ulp_filter_r,
 	       QETH_ULP_ENABLE_RESP_FILTER_TOKEN(iob->data),
 	       QETH_MPC_TOKEN_LENGTH);
-	if (qeth_get_mtu_out_of_mpc(card->info.type)) {
+	if (card->info.type == QETH_CARD_TYPE_IQD) {
 		memcpy(&framesize, QETH_ULP_ENABLE_RESP_MAX_MTU(iob->data), 2);
 		mtu = qeth_get_mtu_outof_framesize(framesize);
 		if (!mtu) {
@@ -1920,7 +1892,8 @@ static int qeth_ulp_enable_cb(struct qet
 		card->qdio.in_buf_size = mtu + 2 * PAGE_SIZE;
 	} else {
 		card->info.initial_mtu = qeth_get_initial_mtu_for_card(card);
-		card->info.max_mtu = qeth_get_max_mtu_for_card(card->info.type);
+		card->info.max_mtu = *(__u16 *)QETH_ULP_ENABLE_RESP_MAX_MTU(
+			iob->data);
 		card->qdio.in_buf_size = QETH_IN_BUF_SIZE_DEFAULT;
 	}
 


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

* [patch 3/6] [PATCH] qeth: allow HiperSockets framesize change in suspend
  2011-02-02 16:04 [patch 0/6] [resend] s390: network patches for net-next frank.blaschka
  2011-02-02 16:04 ` [patch 1/6] [PATCH] qeth: show new mac-address if its setting fails frank.blaschka
  2011-02-02 16:04 ` [patch 2/6] [PATCH] qeth: add more strict MTU checking frank.blaschka
@ 2011-02-02 16:04 ` frank.blaschka
  2011-02-02 16:04 ` [patch 4/6] [PATCH] qeth: allow OSA CHPARM change in suspend state frank.blaschka
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: frank.blaschka @ 2011-02-02 16:04 UTC (permalink / raw)
  To: davem; +Cc: netdev, linux-s390, Ursula Braun

[-- Attachment #1: 607-qeth-chparm-change.diff --]
[-- Type: text/plain, Size: 1268 bytes --]

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

For HiperSockets the framesize-definition determines the selected
mtu-size and the size of the allocated qdio buffers.
A framesize-change may occur while a Linux system with probed
HiperSockets device is in suspend state. This patch enables proper
resuming of a HiperSockets device in this case.

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


 drivers/s390/net/qeth_core_main.c |   10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)
--- a/drivers/s390/net/qeth_core_main.c
+++ b/drivers/s390/net/qeth_core_main.c
@@ -1887,8 +1887,16 @@ static int qeth_ulp_enable_cb(struct qet
 			QETH_DBF_TEXT_(SETUP, 2, "  rc%d", iob->rc);
 			return 0;
 		}
-		card->info.max_mtu = mtu;
+		if (card->info.initial_mtu && (card->info.initial_mtu != mtu)) {
+			/* frame size has changed */
+			if (card->dev &&
+			    ((card->dev->mtu == card->info.initial_mtu) ||
+			     (card->dev->mtu > mtu)))
+				card->dev->mtu = mtu;
+			qeth_free_qdio_buffers(card);
+		}
 		card->info.initial_mtu = mtu;
+		card->info.max_mtu = mtu;
 		card->qdio.in_buf_size = mtu + 2 * PAGE_SIZE;
 	} else {
 		card->info.initial_mtu = qeth_get_initial_mtu_for_card(card);


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

* [patch 4/6] [PATCH] qeth: allow OSA CHPARM change in suspend state
  2011-02-02 16:04 [patch 0/6] [resend] s390: network patches for net-next frank.blaschka
                   ` (2 preceding siblings ...)
  2011-02-02 16:04 ` [patch 3/6] [PATCH] qeth: allow HiperSockets framesize change in suspend frank.blaschka
@ 2011-02-02 16:04 ` frank.blaschka
  2011-02-02 16:04 ` [patch 5/6] [PATCH] s390: Fix wrong size in memcmp (netiucv) frank.blaschka
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: frank.blaschka @ 2011-02-02 16:04 UTC (permalink / raw)
  To: davem; +Cc: netdev, linux-s390, Ursula braun

[-- Attachment #1: 608-qeth-osa-chparm-change.diff --]
[-- Type: text/plain, Size: 4525 bytes --]

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

For OSA the CHPARM-definition determines the number of available
outbound queues.
A CHPARM-change may occur while a Linux system with probed
OSA device is in suspend state. This patch enables proper
resuming of an OSA device in this case.

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


 drivers/s390/net/qeth_core_main.c |  104 +++++++++++++++++++++++---------------
 1 file changed, 63 insertions(+), 41 deletions(-)
--- a/drivers/s390/net/qeth_core_main.c
+++ b/drivers/s390/net/qeth_core_main.c
@@ -988,16 +988,30 @@ static void qeth_get_channel_path_desc(s
 	chp_dsc = (struct channelPath_dsc *)ccw_device_get_chp_desc(ccwdev, 0);
 	if (chp_dsc != NULL) {
 		/* CHPP field bit 6 == 1 -> single queue */
-		if ((chp_dsc->chpp & 0x02) == 0x02)
+		if ((chp_dsc->chpp & 0x02) == 0x02) {
+			if ((atomic_read(&card->qdio.state) !=
+				QETH_QDIO_UNINITIALIZED) &&
+			    (card->qdio.no_out_queues == 4))
+				/* change from 4 to 1 outbound queues */
+				qeth_free_qdio_buffers(card);
 			card->qdio.no_out_queues = 1;
+			if (card->qdio.default_out_queue != 0)
+				dev_info(&card->gdev->dev,
+					"Priority Queueing not supported\n");
+			card->qdio.default_out_queue = 0;
+		} else {
+			if ((atomic_read(&card->qdio.state) !=
+				QETH_QDIO_UNINITIALIZED) &&
+			    (card->qdio.no_out_queues == 1)) {
+				/* change from 1 to 4 outbound queues */
+				qeth_free_qdio_buffers(card);
+				card->qdio.default_out_queue = 2;
+			}
+			card->qdio.no_out_queues = 4;
+		}
 		card->info.func_level = 0x4100 + chp_dsc->desc;
 		kfree(chp_dsc);
 	}
-	if (card->qdio.no_out_queues == 1) {
-		card->qdio.default_out_queue = 0;
-		dev_info(&card->gdev->dev,
-			"Priority Queueing not supported\n");
-	}
 	QETH_DBF_TEXT_(SETUP, 2, "nr:%x", card->qdio.no_out_queues);
 	QETH_DBF_TEXT_(SETUP, 2, "lvl:%02x", card->info.func_level);
 	return;
@@ -3756,6 +3770,47 @@ static inline int qeth_get_qdio_q_format
 	}
 }
 
+static void qeth_determine_capabilities(struct qeth_card *card)
+{
+	int rc;
+	int length;
+	char *prcd;
+	struct ccw_device *ddev;
+	int ddev_offline = 0;
+
+	QETH_DBF_TEXT(SETUP, 2, "detcapab");
+	ddev = CARD_DDEV(card);
+	if (!ddev->online) {
+		ddev_offline = 1;
+		rc = ccw_device_set_online(ddev);
+		if (rc) {
+			QETH_DBF_TEXT_(SETUP, 2, "3err%d", rc);
+			goto out;
+		}
+	}
+
+	rc = qeth_read_conf_data(card, (void **) &prcd, &length);
+	if (rc) {
+		QETH_DBF_MESSAGE(2, "%s qeth_read_conf_data returned %i\n",
+			dev_name(&card->gdev->dev), rc);
+		QETH_DBF_TEXT_(SETUP, 2, "5err%d", rc);
+		goto out_offline;
+	}
+	qeth_configure_unitaddr(card, prcd);
+	qeth_configure_blkt_default(card, prcd);
+	kfree(prcd);
+
+	rc = qdio_get_ssqd_desc(ddev, &card->ssqd);
+	if (rc)
+		QETH_DBF_TEXT_(SETUP, 2, "6err%d", rc);
+
+out_offline:
+	if (ddev_offline == 1)
+		ccw_device_set_offline(ddev);
+out:
+	return;
+}
+
 static int qeth_qdio_establish(struct qeth_card *card)
 {
 	struct qdio_initialize init_data;
@@ -3886,6 +3941,7 @@ int qeth_core_hardsetup_card(struct qeth
 
 	QETH_DBF_TEXT(SETUP, 2, "hrdsetup");
 	atomic_set(&card->force_alloc_skb, 0);
+	qeth_get_channel_path_desc(card);
 retry:
 	if (retries)
 		QETH_DBF_MESSAGE(2, "%s Retrying to do IDX activates.\n",
@@ -3914,6 +3970,7 @@ retriable:
 		else
 			goto retry;
 	}
+	qeth_determine_capabilities(card);
 	qeth_init_tokens(card);
 	qeth_init_func_level(card);
 	rc = qeth_idx_activate_channel(&card->read, qeth_idx_read_cb);
@@ -4183,41 +4240,6 @@ void qeth_core_free_discipline(struct qe
 	card->discipline.ccwgdriver = NULL;
 }
 
-static void qeth_determine_capabilities(struct qeth_card *card)
-{
-	int rc;
-	int length;
-	char *prcd;
-
-	QETH_DBF_TEXT(SETUP, 2, "detcapab");
-	rc = ccw_device_set_online(CARD_DDEV(card));
-	if (rc) {
-		QETH_DBF_TEXT_(SETUP, 2, "3err%d", rc);
-		goto out;
-	}
-
-
-	rc = qeth_read_conf_data(card, (void **) &prcd, &length);
-	if (rc) {
-		QETH_DBF_MESSAGE(2, "%s qeth_read_conf_data returned %i\n",
-			dev_name(&card->gdev->dev), rc);
-		QETH_DBF_TEXT_(SETUP, 2, "5err%d", rc);
-		goto out_offline;
-	}
-	qeth_configure_unitaddr(card, prcd);
-	qeth_configure_blkt_default(card, prcd);
-	kfree(prcd);
-
-	rc = qdio_get_ssqd_desc(CARD_DDEV(card), &card->ssqd);
-	if (rc)
-		QETH_DBF_TEXT_(SETUP, 2, "6err%d", rc);
-
-out_offline:
-	ccw_device_set_offline(CARD_DDEV(card));
-out:
-	return;
-}
-
 static int qeth_core_probe_device(struct ccwgroup_device *gdev)
 {
 	struct qeth_card *card;


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

* [patch 5/6] [PATCH] s390: Fix wrong size in memcmp (netiucv)
  2011-02-02 16:04 [patch 0/6] [resend] s390: network patches for net-next frank.blaschka
                   ` (3 preceding siblings ...)
  2011-02-02 16:04 ` [patch 4/6] [PATCH] qeth: allow OSA CHPARM change in suspend state frank.blaschka
@ 2011-02-02 16:04 ` frank.blaschka
  2011-02-02 16:04 ` [patch 6/6] [PATCH] s390: Fix possibly wrong size in strncmp (smsgiucv) frank.blaschka
  2011-02-02 23:01 ` [patch 0/6] [resend] s390: network patches for net-next David Miller
  6 siblings, 0 replies; 8+ messages in thread
From: frank.blaschka @ 2011-02-02 16:04 UTC (permalink / raw)
  To: davem; +Cc: netdev, linux-s390, Stefan Weil

[-- Attachment #1: 609-netiucv-memcmp-size.diff --]
[-- Type: text/plain, Size: 850 bytes --]

From: Stefan Weil <weil@mail.berlios.de>

This error was reported by cppcheck:
drivers/s390/net/netiucv.c:568: error: Using sizeof for array given
as function argument returns the size of pointer.

sizeof(ipuser) did not result in 16 (as many programmers would have
expected) but sizeof(u8 *), so it is 4 or 8, too small here.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>
---


 drivers/s390/net/netiucv.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/s390/net/netiucv.c
+++ b/drivers/s390/net/netiucv.c
@@ -565,7 +565,7 @@ static int netiucv_callback_connreq(stru
 	struct iucv_event ev;
 	int rc;
 
-	if (memcmp(iucvMagic, ipuser, sizeof(ipuser)))
+	if (memcmp(iucvMagic, ipuser, 16))
 		/* ipuser must match iucvMagic. */
 		return -EINVAL;
 	rc = -EINVAL;


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

* [patch 6/6] [PATCH] s390: Fix possibly wrong size in strncmp (smsgiucv)
  2011-02-02 16:04 [patch 0/6] [resend] s390: network patches for net-next frank.blaschka
                   ` (4 preceding siblings ...)
  2011-02-02 16:04 ` [patch 5/6] [PATCH] s390: Fix wrong size in memcmp (netiucv) frank.blaschka
@ 2011-02-02 16:04 ` frank.blaschka
  2011-02-02 23:01 ` [patch 0/6] [resend] s390: network patches for net-next David Miller
  6 siblings, 0 replies; 8+ messages in thread
From: frank.blaschka @ 2011-02-02 16:04 UTC (permalink / raw)
  To: davem; +Cc: netdev, linux-s390, Stefan Weil

[-- Attachment #1: 610-smsgiucv-strncmp-size.diff --]
[-- Type: text/plain, Size: 951 bytes --]

From: Stefan Weil <weil@mail.berlios.de>

This error was reported by cppcheck:
drivers/s390/net/smsgiucv.c:63: error: Using sizeof for array given as
function argument returns the size of pointer.

Although there is no runtime problem as long as sizeof(u8 *) == 8,
this misleading code should get fixed.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>
---


 drivers/s390/net/smsgiucv.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/s390/net/smsgiucv.c
+++ b/drivers/s390/net/smsgiucv.c
@@ -60,7 +60,7 @@ static struct iucv_handler smsg_handler
 static int smsg_path_pending(struct iucv_path *path, u8 ipvmid[8],
 			     u8 ipuser[16])
 {
-	if (strncmp(ipvmid, "*MSG    ", sizeof(ipvmid)) != 0)
+	if (strncmp(ipvmid, "*MSG    ", 8) != 0)
 		return -EINVAL;
 	/* Path pending from *MSG. */
 	return iucv_path_accept(path, &smsg_handler, "SMSGIUCV        ", NULL);


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

* Re: [patch 0/6] [resend] s390: network patches for net-next
  2011-02-02 16:04 [patch 0/6] [resend] s390: network patches for net-next frank.blaschka
                   ` (5 preceding siblings ...)
  2011-02-02 16:04 ` [patch 6/6] [PATCH] s390: Fix possibly wrong size in strncmp (smsgiucv) frank.blaschka
@ 2011-02-02 23:01 ` David Miller
  6 siblings, 0 replies; 8+ messages in thread
From: David Miller @ 2011-02-02 23:01 UTC (permalink / raw)
  To: frank.blaschka; +Cc: netdev, linux-s390

From: frank.blaschka@de.ibm.com
Date: Wed, 02 Feb 2011 17:04:30 +0100

> Hi Dave,
> 
> I have removed the NET_SKB_PAD patch from the patch set.
> We will define it in an arch specific header. The new
> version of the patch will come via the s390 tree. Thx!

All applied, thanks Frank.

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

end of thread, other threads:[~2011-02-02 23:00 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-02-02 16:04 [patch 0/6] [resend] s390: network patches for net-next frank.blaschka
2011-02-02 16:04 ` [patch 1/6] [PATCH] qeth: show new mac-address if its setting fails frank.blaschka
2011-02-02 16:04 ` [patch 2/6] [PATCH] qeth: add more strict MTU checking frank.blaschka
2011-02-02 16:04 ` [patch 3/6] [PATCH] qeth: allow HiperSockets framesize change in suspend frank.blaschka
2011-02-02 16:04 ` [patch 4/6] [PATCH] qeth: allow OSA CHPARM change in suspend state frank.blaschka
2011-02-02 16:04 ` [patch 5/6] [PATCH] s390: Fix wrong size in memcmp (netiucv) frank.blaschka
2011-02-02 16:04 ` [patch 6/6] [PATCH] s390: Fix possibly wrong size in strncmp (smsgiucv) frank.blaschka
2011-02-02 23:01 ` [patch 0/6] [resend] s390: network patches for net-next David Miller

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).