* [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