netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [patch 0/1] s390: one more qeth patch for net-next
@ 2011-05-18 13:28 frank.blaschka
  2011-05-18 13:28 ` [patch 1/1] qeth: use ndo_set_features callback for initial setup and recovery frank.blaschka
  0 siblings, 1 reply; 4+ messages in thread
From: frank.blaschka @ 2011-05-18 13:28 UTC (permalink / raw)
  To: davem; +Cc: netdev, linux-s390


Hi Dave,

thanks to the help and patience of Michal Miroslaw here is a
patch to finalize the qeth hw_features rework.

shortlog:
Frank Blaschka (1)
qeth: use ndo_set_features callback for initial setup and recovery

Thanks,
        Frank


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

* [patch 1/1] qeth: use ndo_set_features callback for initial setup and recovery
  2011-05-18 13:28 [patch 0/1] s390: one more qeth patch for net-next frank.blaschka
@ 2011-05-18 13:28 ` frank.blaschka
  2011-05-18 13:43   ` Michał Mirosław
  0 siblings, 1 reply; 4+ messages in thread
From: frank.blaschka @ 2011-05-18 13:28 UTC (permalink / raw)
  To: davem; +Cc: netdev, linux-s390

[-- Attachment #1: qeth_fix_hw_feature.patch --]
[-- Type: text/plain, Size: 3128 bytes --]

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

This patch uses the ndo_set_features callback during normal device
startup or recovery to turn on hardware RX checksum. Patch was done
with much help from Michal Miroslaw, thx!!!

Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>
---
 drivers/s390/net/qeth_l3_main.c |   77 ++++++++++++----------------------------
 1 file changed, 25 insertions(+), 52 deletions(-)

--- a/drivers/s390/net/qeth_l3_main.c
+++ b/drivers/s390/net/qeth_l3_main.c
@@ -1417,63 +1417,33 @@ int qeth_l3_set_rx_csum(struct qeth_card
 	int rc = 0;
 
 	if (on) {
-		if (card->state != CARD_STATE_DOWN) {
-			if (!qeth_is_supported(card,
-				    IPA_INBOUND_CHECKSUM))
-					return -EPERM;
-			rc = qeth_l3_send_checksum_command(card);
-			if (rc)
-				return -EIO;
-		}
-		card->dev->features |= NETIF_F_RXCSUM;
+		rc = qeth_l3_send_checksum_command(card);
+		if (rc)
+			return -EIO;
+		dev_info(&card->gdev->dev,
+			"HW Checksumming (inbound) enabled\n");
 	} else {
-		if (card->state != CARD_STATE_DOWN) {
-			rc = qeth_l3_send_simple_setassparms(card,
-				IPA_INBOUND_CHECKSUM, IPA_CMD_ASS_STOP, 0);
-			if (rc)
-				return -EIO;
-		}
-		card->dev->features &= ~NETIF_F_RXCSUM;
+		rc = qeth_l3_send_simple_setassparms(card,
+			IPA_INBOUND_CHECKSUM, IPA_CMD_ASS_STOP, 0);
+		if (rc)
+			return -EIO;
 	}
 
-	return rc;
+	return 0;
 }
 
 static int qeth_l3_start_ipa_checksum(struct qeth_card *card)
 {
-	int rc = 0;
-
 	QETH_CARD_TEXT(card, 3, "strtcsum");
 
 	if (card->dev->features & NETIF_F_RXCSUM) {
-		/* hw may have changed during offline or recovery */
-		if (!qeth_is_supported(card, IPA_INBOUND_CHECKSUM)) {
-			dev_info(&card->gdev->dev,
-			"Inbound HW Checksumming not "
-			"supported on %s,\ncontinuing "
-			"using Inbound SW Checksumming\n",
-			QETH_CARD_IFNAME(card));
-			goto update_feature;
-		}
-
-		rc = qeth_l3_send_checksum_command(card);
-		if (!rc)
-			dev_info(&card->gdev->dev,
-			"HW Checksumming (inbound) enabled\n");
-		else
-			goto update_feature;
-	} else
-		dev_info(&card->gdev->dev,
-			"Using SW checksumming on %s.\n",
-			QETH_CARD_IFNAME(card));
+		rtnl_lock();
+		/* force set_features call */
+		card->dev->features &= ~NETIF_F_RXCSUM;
+		netdev_update_features(card->dev);
+		rtnl_unlock();
+	}
 	return 0;
-
-update_feature:
-	rtnl_lock();
-	card->dev->features &= ~NETIF_F_RXCSUM;
-	netdev_update_features(card->dev);
-	rtnl_unlock();
-	return rc;
 }
 
 static int qeth_l3_start_ipa_tx_checksum(struct qeth_card *card)
@@ -3196,17 +3166,20 @@ static int qeth_l3_set_features(struct n
 {
 	struct qeth_card *card = dev->ml_priv;
 	u32 changed = dev->features ^ features;
-	int on;
+	int err;
 
 	if (!(changed & NETIF_F_RXCSUM))
 		return 0;
 
-	if (features & NETIF_F_RXCSUM)
-		on = 1;
-	else
-		on = 0;
+	if (card->state == CARD_STATE_DOWN ||
+	    card->state == CARD_STATE_RECOVER)
+		return 0;
+
+	err = qeth_l3_set_rx_csum(card, features & NETIF_F_RXCSUM);
+	if (err)
+		dev->features = features ^ NETIF_F_RXCSUM;
 
-	return qeth_l3_set_rx_csum(card, on);
+	return err;
 }
 
 static const struct ethtool_ops qeth_l3_ethtool_ops = {


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

* Re: [patch 1/1] qeth: use ndo_set_features callback for initial setup and recovery
  2011-05-18 13:28 ` [patch 1/1] qeth: use ndo_set_features callback for initial setup and recovery frank.blaschka
@ 2011-05-18 13:43   ` Michał Mirosław
  2011-05-18 21:27     ` David Miller
  0 siblings, 1 reply; 4+ messages in thread
From: Michał Mirosław @ 2011-05-18 13:43 UTC (permalink / raw)
  To: frank.blaschka; +Cc: davem, netdev, linux-s390

2011/5/18  <frank.blaschka@de.ibm.com>:
> From: Frank Blaschka <frank.blaschka@de.ibm.com>
>
> This patch uses the ndo_set_features callback during normal device
> startup or recovery to turn on hardware RX checksum. Patch was done
> with much help from Michal Miroslaw, thx!!!
>
> Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>

[regarding usage of ndo_set_features and friends]
Reviewed-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>

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

* Re: [patch 1/1] qeth: use ndo_set_features callback for initial setup and recovery
  2011-05-18 13:43   ` Michał Mirosław
@ 2011-05-18 21:27     ` David Miller
  0 siblings, 0 replies; 4+ messages in thread
From: David Miller @ 2011-05-18 21:27 UTC (permalink / raw)
  To: mirqus; +Cc: frank.blaschka, netdev, linux-s390

From: Michał Mirosław <mirqus@gmail.com>
Date: Wed, 18 May 2011 15:43:11 +0200

> 2011/5/18  <frank.blaschka@de.ibm.com>:
>> From: Frank Blaschka <frank.blaschka@de.ibm.com>
>>
>> This patch uses the ndo_set_features callback during normal device
>> startup or recovery to turn on hardware RX checksum. Patch was done
>> with much help from Michal Miroslaw, thx!!!
>>
>> Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>
> 
> [regarding usage of ndo_set_features and friends]
> Reviewed-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>

Applied, thanks.

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

end of thread, other threads:[~2011-05-18 21:28 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-05-18 13:28 [patch 0/1] s390: one more qeth patch for net-next frank.blaschka
2011-05-18 13:28 ` [patch 1/1] qeth: use ndo_set_features callback for initial setup and recovery frank.blaschka
2011-05-18 13:43   ` Michał Mirosław
2011-05-18 21:27     ` 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).