netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [net-next PATCH 0/6] qlge: fixes for qlge.
@ 2010-07-05 22:19 Ron Mercer
  2010-07-05 22:19 ` [net-next PATCH 1/6] qlge: Restore promiscuous setting after reset Ron Mercer
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: Ron Mercer @ 2010-07-05 22:19 UTC (permalink / raw)
  To: davem; +Cc: netdev, ron.mercer


1) Restore promiscuous setting after reset.
2) Don't use firmware when forcing firmware dump.
3) Reduce print level in data path statements.
4) Fix possible endian issue for rx UDP csum.
5) Make adapter drop frame errors and pass up csum errors.
6) Change version to v1.00.00.25.00.00-01.


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

* [net-next PATCH 1/6] qlge: Restore promiscuous setting after reset.
  2010-07-05 22:19 [net-next PATCH 0/6] qlge: fixes for qlge Ron Mercer
@ 2010-07-05 22:19 ` Ron Mercer
  2010-07-05 22:19 ` [net-next PATCH 2/6] qlge: Don't use firmware when forcing firmware dump Ron Mercer
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Ron Mercer @ 2010-07-05 22:19 UTC (permalink / raw)
  To: davem; +Cc: netdev, ron.mercer

Signed-off-by: Ron Mercer <ron.mercer@qlogic.com>
---
 drivers/net/qlge/qlge.h      |    1 +
 drivers/net/qlge/qlge_main.c |    7 ++++++-
 2 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/drivers/net/qlge/qlge.h b/drivers/net/qlge/qlge.h
index bfb8b32..01b0634 100644
--- a/drivers/net/qlge/qlge.h
+++ b/drivers/net/qlge/qlge.h
@@ -2246,6 +2246,7 @@ netdev_tx_t ql_lb_send(struct sk_buff *skb, struct net_device *ndev);
 void ql_check_lb_frame(struct ql_adapter *, struct sk_buff *);
 int ql_own_firmware(struct ql_adapter *qdev);
 int ql_clean_lb_rx_ring(struct rx_ring *rx_ring, int budget);
+void qlge_set_multicast_list(struct net_device *ndev);
 
 #if 1
 #define QL_ALL_DUMP
diff --git a/drivers/net/qlge/qlge_main.c b/drivers/net/qlge/qlge_main.c
index fa4b24c..e99c2c6 100644
--- a/drivers/net/qlge/qlge_main.c
+++ b/drivers/net/qlge/qlge_main.c
@@ -3919,6 +3919,11 @@ static int ql_adapter_up(struct ql_adapter *qdev)
 	if ((ql_read32(qdev, STS) & qdev->port_init) &&
 			(ql_read32(qdev, STS) & qdev->port_link_up))
 		ql_link_on(qdev);
+	/* Restore rx mode. */
+	clear_bit(QL_ALLMULTI, &qdev->flags);
+	clear_bit(QL_PROMISCUOUS, &qdev->flags);
+	qlge_set_multicast_list(qdev->ndev);
+
 	ql_enable_interrupts(qdev);
 	ql_enable_all_completion_interrupts(qdev);
 	netif_tx_start_all_queues(qdev->ndev);
@@ -4204,7 +4209,7 @@ static struct net_device_stats *qlge_get_stats(struct net_device
 	return &ndev->stats;
 }
 
-static void qlge_set_multicast_list(struct net_device *ndev)
+void qlge_set_multicast_list(struct net_device *ndev)
 {
 	struct ql_adapter *qdev = (struct ql_adapter *)netdev_priv(ndev);
 	struct netdev_hw_addr *ha;
-- 
1.6.0.2


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

* [net-next PATCH 2/6] qlge: Don't use firmware when forcing firmware dump.
  2010-07-05 22:19 [net-next PATCH 0/6] qlge: fixes for qlge Ron Mercer
  2010-07-05 22:19 ` [net-next PATCH 1/6] qlge: Restore promiscuous setting after reset Ron Mercer
@ 2010-07-05 22:19 ` Ron Mercer
  2010-07-05 22:19 ` [net-next PATCH 3/6] qlge: Reduce print level in data path statements Ron Mercer
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Ron Mercer @ 2010-07-05 22:19 UTC (permalink / raw)
  To: davem; +Cc: netdev, ron.mercer

In some cases the firmware may be dead.  Instead we dump the firmware
parameters and then restart it.

Signed-off-by: Ron Mercer <ron.mercer@qlogic.com>
---
 drivers/net/qlge/qlge.h     |    1 -
 drivers/net/qlge/qlge_dbg.c |    7 +------
 drivers/net/qlge/qlge_mpi.c |   17 -----------------
 3 files changed, 1 insertions(+), 24 deletions(-)

diff --git a/drivers/net/qlge/qlge.h b/drivers/net/qlge/qlge.h
index 01b0634..27f83d6 100644
--- a/drivers/net/qlge/qlge.h
+++ b/drivers/net/qlge/qlge.h
@@ -2227,7 +2227,6 @@ int ql_dump_risc_ram_area(struct ql_adapter *qdev, void *buf,
 		u32 ram_addr, int word_count);
 int ql_core_dump(struct ql_adapter *qdev,
 		struct ql_mpi_coredump *mpi_coredump);
-int ql_mb_sys_err(struct ql_adapter *qdev);
 int ql_mb_about_fw(struct ql_adapter *qdev);
 int ql_wol(struct ql_adapter *qdev);
 int ql_mb_wol_set_magic(struct ql_adapter *qdev, u32 enable_wol);
diff --git a/drivers/net/qlge/qlge_dbg.c b/drivers/net/qlge/qlge_dbg.c
index 68a1c9b..548e901 100644
--- a/drivers/net/qlge/qlge_dbg.c
+++ b/drivers/net/qlge/qlge_dbg.c
@@ -1237,12 +1237,7 @@ static void ql_get_core_dump(struct ql_adapter *qdev)
 			  "Force Coredump can only be done from interface that is up.\n");
 		return;
 	}
-
-	if (ql_mb_sys_err(qdev)) {
-		netif_err(qdev, ifup, qdev->ndev,
-			  "Fail force coredump with ql_mb_sys_err().\n");
-		return;
-	}
+	ql_queue_fw_error(qdev);
 }
 
 void ql_gen_reg_dump(struct ql_adapter *qdev,
diff --git a/drivers/net/qlge/qlge_mpi.c b/drivers/net/qlge/qlge_mpi.c
index 3c00462..f84e857 100644
--- a/drivers/net/qlge/qlge_mpi.c
+++ b/drivers/net/qlge/qlge_mpi.c
@@ -606,23 +606,6 @@ end:
 	return status;
 }
 
-int ql_mb_sys_err(struct ql_adapter *qdev)
-{
-	struct mbox_params mbc;
-	struct mbox_params *mbcp = &mbc;
-	int status;
-
-	memset(mbcp, 0, sizeof(struct mbox_params));
-
-	mbcp->in_count = 1;
-	mbcp->out_count = 0;
-
-	mbcp->mbox_in[0] = MB_CMD_MAKE_SYS_ERR;
-
-	status = ql_mailbox_command(qdev, mbcp);
-	return status;
-}
-
 /* Get MPI firmware version. This will be used for
  * driver banner and for ethtool info.
  * Returns zero on success.
-- 
1.6.0.2


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

* [net-next PATCH 3/6] qlge: Reduce print level in data path statements.
  2010-07-05 22:19 [net-next PATCH 0/6] qlge: fixes for qlge Ron Mercer
  2010-07-05 22:19 ` [net-next PATCH 1/6] qlge: Restore promiscuous setting after reset Ron Mercer
  2010-07-05 22:19 ` [net-next PATCH 2/6] qlge: Don't use firmware when forcing firmware dump Ron Mercer
@ 2010-07-05 22:19 ` Ron Mercer
  2010-07-05 22:19 ` [net-next PATCH 4/6] qlge: Fix possible endian issue for rx UDP csum Ron Mercer
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Ron Mercer @ 2010-07-05 22:19 UTC (permalink / raw)
  To: davem; +Cc: netdev, ron.mercer

Signed-off-by: Ron Mercer <ron.mercer@qlogic.com>
---
 drivers/net/qlge/qlge_main.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/qlge/qlge_main.c b/drivers/net/qlge/qlge_main.c
index e99c2c6..e39451b 100644
--- a/drivers/net/qlge/qlge_main.c
+++ b/drivers/net/qlge/qlge_main.c
@@ -1521,7 +1521,7 @@ static void ql_process_mac_rx_page(struct ql_adapter *qdev,
 
 	/* Frame error, so drop the packet. */
 	if (ib_mac_rsp->flags2 & IB_MAC_IOCB_RSP_ERR_MASK) {
-		netif_err(qdev, drv, qdev->ndev,
+		netif_info(qdev, drv, qdev->ndev,
 			  "Receive error, flags2 = 0x%x\n", ib_mac_rsp->flags2);
 		rx_ring->rx_errors++;
 		goto err_out;
@@ -1618,7 +1618,7 @@ static void ql_process_mac_rx_skb(struct ql_adapter *qdev,
 
 	/* Frame error, so drop the packet. */
 	if (ib_mac_rsp->flags2 & IB_MAC_IOCB_RSP_ERR_MASK) {
-		netif_err(qdev, drv, qdev->ndev,
+		netif_info(qdev, drv, qdev->ndev,
 			  "Receive error, flags2 = 0x%x\n", ib_mac_rsp->flags2);
 		dev_kfree_skb_any(skb);
 		rx_ring->rx_errors++;
@@ -1939,7 +1939,7 @@ static void ql_process_mac_split_rx_intr(struct ql_adapter *qdev,
 
 	/* Frame error, so drop the packet. */
 	if (ib_mac_rsp->flags2 & IB_MAC_IOCB_RSP_ERR_MASK) {
-		netif_err(qdev, drv, qdev->ndev,
+		netif_info(qdev, drv, qdev->ndev,
 			  "Receive error, flags2 = 0x%x\n", ib_mac_rsp->flags2);
 		dev_kfree_skb_any(skb);
 		rx_ring->rx_errors++;
-- 
1.6.0.2


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

* [net-next PATCH 4/6] qlge: Fix possible endian issue for rx UDP csum.
  2010-07-05 22:19 [net-next PATCH 0/6] qlge: fixes for qlge Ron Mercer
                   ` (2 preceding siblings ...)
  2010-07-05 22:19 ` [net-next PATCH 3/6] qlge: Reduce print level in data path statements Ron Mercer
@ 2010-07-05 22:19 ` Ron Mercer
  2010-07-05 22:19 ` [net-next PATCH 5/6] qlge: Make adapter drop frame errors and pass up csum errors Ron Mercer
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Ron Mercer @ 2010-07-05 22:19 UTC (permalink / raw)
  To: davem; +Cc: netdev, ron.mercer

Signed-off-by: Ron Mercer <ron.mercer@qlogic.com>
---
 drivers/net/qlge/qlge_main.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/qlge/qlge_main.c b/drivers/net/qlge/qlge_main.c
index e39451b..a41b6b5 100644
--- a/drivers/net/qlge/qlge_main.c
+++ b/drivers/net/qlge/qlge_main.c
@@ -1677,7 +1677,7 @@ static void ql_process_mac_rx_skb(struct ql_adapter *qdev,
 			/* Unfragmented ipv4 UDP frame. */
 			struct iphdr *iph = (struct iphdr *) skb->data;
 			if (!(iph->frag_off &
-				cpu_to_be16(IP_MF|IP_OFFSET))) {
+				ntohs(IP_MF|IP_OFFSET))) {
 				skb->ip_summed = CHECKSUM_UNNECESSARY;
 				netif_printk(qdev, rx_status, KERN_DEBUG,
 					     qdev->ndev,
@@ -1997,7 +1997,7 @@ static void ql_process_mac_split_rx_intr(struct ql_adapter *qdev,
 		/* Unfragmented ipv4 UDP frame. */
 			struct iphdr *iph = (struct iphdr *) skb->data;
 			if (!(iph->frag_off &
-				cpu_to_be16(IP_MF|IP_OFFSET))) {
+				ntohs(IP_MF|IP_OFFSET))) {
 				skb->ip_summed = CHECKSUM_UNNECESSARY;
 				netif_printk(qdev, rx_status, KERN_DEBUG, qdev->ndev,
 					     "TCP checksum done!\n");
-- 
1.6.0.2


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

* [net-next PATCH 5/6] qlge: Make adapter drop frame errors and pass up csum errors.
  2010-07-05 22:19 [net-next PATCH 0/6] qlge: fixes for qlge Ron Mercer
                   ` (3 preceding siblings ...)
  2010-07-05 22:19 ` [net-next PATCH 4/6] qlge: Fix possible endian issue for rx UDP csum Ron Mercer
@ 2010-07-05 22:19 ` Ron Mercer
  2010-07-05 22:19 ` [net-next PATCH 6/6] qlge: Change version to v1.00.00.25.00.00-01 Ron Mercer
  2010-07-06  1:51 ` [net-next PATCH 0/6] qlge: fixes for qlge David Miller
  6 siblings, 0 replies; 8+ messages in thread
From: Ron Mercer @ 2010-07-05 22:19 UTC (permalink / raw)
  To: davem; +Cc: netdev, ron.mercer

Statistics are available and the driver doesn't need the actual frame.
This TCP/UDP and IP headers checksum errors will still be passed to the
driver.

Signed-off-by: Ron Mercer <ron.mercer@qlogic.com>
---
 drivers/net/qlge/qlge_main.c |   30 ++++++++++++++++++++++++++++--
 1 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/drivers/net/qlge/qlge_main.c b/drivers/net/qlge/qlge_main.c
index a41b6b5..dd9e86c 100644
--- a/drivers/net/qlge/qlge_main.c
+++ b/drivers/net/qlge/qlge_main.c
@@ -574,6 +574,22 @@ static int ql_set_routing_reg(struct ql_adapter *qdev, u32 index, u32 mask,
 			    (RT_IDX_ALL_ERR_SLOT << RT_IDX_IDX_SHIFT);/* index */
 			break;
 		}
+	case RT_IDX_IP_CSUM_ERR: /* Pass up IP CSUM error frames. */
+		{
+			value = RT_IDX_DST_DFLT_Q | /* dest */
+				RT_IDX_TYPE_NICQ | /* type */
+				(RT_IDX_IP_CSUM_ERR_SLOT <<
+				RT_IDX_IDX_SHIFT); /* index */
+			break;
+		}
+	case RT_IDX_TU_CSUM_ERR: /* Pass up TCP/UDP CSUM error frames. */
+		{
+			value = RT_IDX_DST_DFLT_Q | /* dest */
+				RT_IDX_TYPE_NICQ | /* type */
+				(RT_IDX_TCP_UDP_CSUM_ERR_SLOT <<
+				RT_IDX_IDX_SHIFT); /* index */
+			break;
+		}
 	case RT_IDX_BCAST:	/* Pass up Broadcast frames to default Q. */
 		{
 			value = RT_IDX_DST_DFLT_Q |	/* dest */
@@ -3587,10 +3603,20 @@ static int ql_route_initialize(struct ql_adapter *qdev)
 	if (status)
 		return status;
 
-	status = ql_set_routing_reg(qdev, RT_IDX_ALL_ERR_SLOT, RT_IDX_ERR, 1);
+	status = ql_set_routing_reg(qdev, RT_IDX_IP_CSUM_ERR_SLOT,
+						RT_IDX_IP_CSUM_ERR, 1);
+	if (status) {
+		netif_err(qdev, ifup, qdev->ndev,
+			"Failed to init routing register "
+			"for IP CSUM error packets.\n");
+		goto exit;
+	}
+	status = ql_set_routing_reg(qdev, RT_IDX_TCP_UDP_CSUM_ERR_SLOT,
+						RT_IDX_TU_CSUM_ERR, 1);
 	if (status) {
 		netif_err(qdev, ifup, qdev->ndev,
-			  "Failed to init routing register for error packets.\n");
+			"Failed to init routing register "
+			"for TCP/UDP CSUM error packets.\n");
 		goto exit;
 	}
 	status = ql_set_routing_reg(qdev, RT_IDX_BCAST_SLOT, RT_IDX_BCAST, 1);
-- 
1.6.0.2


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

* [net-next PATCH 6/6] qlge: Change version to v1.00.00.25.00.00-01.
  2010-07-05 22:19 [net-next PATCH 0/6] qlge: fixes for qlge Ron Mercer
                   ` (4 preceding siblings ...)
  2010-07-05 22:19 ` [net-next PATCH 5/6] qlge: Make adapter drop frame errors and pass up csum errors Ron Mercer
@ 2010-07-05 22:19 ` Ron Mercer
  2010-07-06  1:51 ` [net-next PATCH 0/6] qlge: fixes for qlge David Miller
  6 siblings, 0 replies; 8+ messages in thread
From: Ron Mercer @ 2010-07-05 22:19 UTC (permalink / raw)
  To: davem; +Cc: netdev, ron.mercer


Signed-off-by: Ron Mercer <ron.mercer@qlogic.com>
---
 drivers/net/qlge/qlge.h |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/qlge/qlge.h b/drivers/net/qlge/qlge.h
index 27f83d6..06b2188 100644
--- a/drivers/net/qlge/qlge.h
+++ b/drivers/net/qlge/qlge.h
@@ -16,7 +16,7 @@
  */
 #define DRV_NAME  	"qlge"
 #define DRV_STRING 	"QLogic 10 Gigabit PCI-E Ethernet Driver "
-#define DRV_VERSION	"v1.00.00.23.00.00-01"
+#define DRV_VERSION	"v1.00.00.25.00.00-01"
 
 #define PFX "qlge: "
 
-- 
1.6.0.2


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

* Re: [net-next PATCH 0/6] qlge: fixes for qlge.
  2010-07-05 22:19 [net-next PATCH 0/6] qlge: fixes for qlge Ron Mercer
                   ` (5 preceding siblings ...)
  2010-07-05 22:19 ` [net-next PATCH 6/6] qlge: Change version to v1.00.00.25.00.00-01 Ron Mercer
@ 2010-07-06  1:51 ` David Miller
  6 siblings, 0 replies; 8+ messages in thread
From: David Miller @ 2010-07-06  1:51 UTC (permalink / raw)
  To: ron.mercer; +Cc: netdev

From: Ron Mercer <ron.mercer@qlogic.com>
Date: Mon,  5 Jul 2010 15:19:36 -0700

> 
> 1) Restore promiscuous setting after reset.
> 2) Don't use firmware when forcing firmware dump.
> 3) Reduce print level in data path statements.
> 4) Fix possible endian issue for rx UDP csum.
> 5) Make adapter drop frame errors and pass up csum errors.
> 6) Change version to v1.00.00.25.00.00-01.

All applied, thank you.

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

end of thread, other threads:[~2010-07-06  1:51 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-07-05 22:19 [net-next PATCH 0/6] qlge: fixes for qlge Ron Mercer
2010-07-05 22:19 ` [net-next PATCH 1/6] qlge: Restore promiscuous setting after reset Ron Mercer
2010-07-05 22:19 ` [net-next PATCH 2/6] qlge: Don't use firmware when forcing firmware dump Ron Mercer
2010-07-05 22:19 ` [net-next PATCH 3/6] qlge: Reduce print level in data path statements Ron Mercer
2010-07-05 22:19 ` [net-next PATCH 4/6] qlge: Fix possible endian issue for rx UDP csum Ron Mercer
2010-07-05 22:19 ` [net-next PATCH 5/6] qlge: Make adapter drop frame errors and pass up csum errors Ron Mercer
2010-07-05 22:19 ` [net-next PATCH 6/6] qlge: Change version to v1.00.00.25.00.00-01 Ron Mercer
2010-07-06  1:51 ` [net-next PATCH 0/6] qlge: fixes for qlge 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).