All of lore.kernel.org
 help / color / mirror / Atom feed
* [net-next PATCH 0/3] qlge: minor fixes.
@ 2010-02-17 16:41 Ron Mercer
  2010-02-17 16:41 ` [net-next PATCH 1/3] qlge: Fix dropping of large non-TCP/UDP frames Ron Mercer
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Ron Mercer @ 2010-02-17 16:41 UTC (permalink / raw)
  To: davem; +Cc: netdev, ron.mercer


 Miscellaneous fixes for qlge:

1) Fix large ping (non-TCP/UDP) frame dropping when data spans
multiple  rx  buffers.
2) Fix mac address filter issue for bonding.
3) Fix ethtool loopback test.



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

* [net-next PATCH 1/3] qlge: Fix dropping of large non-TCP/UDP frames.
  2010-02-17 16:41 [net-next PATCH 0/3] qlge: minor fixes Ron Mercer
@ 2010-02-17 16:41 ` Ron Mercer
  2010-02-17 16:41 ` [net-next PATCH 2/3] qlge: Fix bonding mac address bug Ron Mercer
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Ron Mercer @ 2010-02-17 16:41 UTC (permalink / raw)
  To: davem; +Cc: netdev, ron.mercer

This was found with pings that were large enough to span multiple rx
buffers.  The split frame logic handles this case nicely.

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

diff --git a/drivers/net/qlge/qlge_main.c b/drivers/net/qlge/qlge_main.c
index 2c052ca..0541e77 100644
--- a/drivers/net/qlge/qlge_main.c
+++ b/drivers/net/qlge/qlge_main.c
@@ -2066,21 +2066,11 @@ static unsigned long ql_process_mac_rx_intr(struct ql_adapter *qdev,
 		ql_process_mac_rx_page(qdev, rx_ring, ib_mac_rsp,
 						length, vlan_id);
 	} else {
-		struct bq_desc *lbq_desc;
-
-		/* Free small buffer that holds the IAL */
-		lbq_desc = ql_get_curr_sbuf(rx_ring);
-		netif_err(qdev, rx_err, qdev->ndev,
-			  "Dropping frame, len %d > mtu %d\n",
-			  length, qdev->ndev->mtu);
-
-		/* Unwind the large buffers for this frame. */
-		while (length > 0) {
-			lbq_desc = ql_get_curr_lchunk(qdev, rx_ring);
-			length -= (length < rx_ring->lbq_buf_size) ?
-				length : rx_ring->lbq_buf_size;
-			put_page(lbq_desc->p.pg_chunk.page);
-		}
+		/* Non-TCP/UDP large frames that span multiple buffers
+		 * can be processed corrrectly by the split frame logic.
+		 */
+		ql_process_mac_split_rx_intr(qdev, rx_ring, ib_mac_rsp,
+						vlan_id);
 	}
 
 	return (unsigned long)length;
-- 
1.6.0.2


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

* [net-next PATCH 2/3] qlge: Fix bonding mac address bug.
  2010-02-17 16:41 [net-next PATCH 0/3] qlge: minor fixes Ron Mercer
  2010-02-17 16:41 ` [net-next PATCH 1/3] qlge: Fix dropping of large non-TCP/UDP frames Ron Mercer
@ 2010-02-17 16:41 ` Ron Mercer
  2010-02-17 16:41 ` [net-next PATCH 3/3] qlge: Fix occasional loopback test failure Ron Mercer
  2010-02-17 21:42 ` [net-next PATCH 0/3] qlge: minor fixes David Miller
  3 siblings, 0 replies; 5+ messages in thread
From: Ron Mercer @ 2010-02-17 16:41 UTC (permalink / raw)
  To: davem; +Cc: netdev, ron.mercer

Use local copy of current mac address when initializing.  In bonding
testing we saw cases where dev_addr was out of data causing failover
errors.

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

diff --git a/drivers/net/qlge/qlge.h b/drivers/net/qlge/qlge.h
index 57d135e..8b742b6 100644
--- a/drivers/net/qlge/qlge.h
+++ b/drivers/net/qlge/qlge.h
@@ -2139,6 +2139,8 @@ struct ql_adapter {
 	u16 device_id;
 	struct timer_list timer;
 	atomic_t lb_count;
+	/* Keep local copy of current mac address. */
+	char current_mac_addr[6];
 };
 
 /*
diff --git a/drivers/net/qlge/qlge_main.c b/drivers/net/qlge/qlge_main.c
index 0541e77..c170349 100644
--- a/drivers/net/qlge/qlge_main.c
+++ b/drivers/net/qlge/qlge_main.c
@@ -463,7 +463,7 @@ static int ql_set_mac_addr(struct ql_adapter *qdev, int set)
 	char *addr;
 
 	if (set) {
-		addr = &qdev->ndev->dev_addr[0];
+		addr = &qdev->current_mac_addr[0];
 		netif_printk(qdev, ifup, KERN_DEBUG, qdev->ndev,
 			     "Set Mac addr %pM\n", addr);
 	} else {
@@ -4301,6 +4301,8 @@ static int qlge_set_mac_address(struct net_device *ndev, void *p)
 	if (!is_valid_ether_addr(addr->sa_data))
 		return -EADDRNOTAVAIL;
 	memcpy(ndev->dev_addr, addr->sa_data, ndev->addr_len);
+	/* Update local copy of current mac address. */
+	memcpy(qdev->current_mac_addr, ndev->dev_addr, ndev->addr_len);
 
 	status = ql_sem_spinlock(qdev, SEM_MAC_ADDR_MASK);
 	if (status)
@@ -4542,6 +4544,8 @@ static int __devinit ql_init_device(struct pci_dev *pdev,
 	}
 
 	memcpy(ndev->perm_addr, ndev->dev_addr, ndev->addr_len);
+	/* Keep local copy of current mac address. */
+	memcpy(qdev->current_mac_addr, ndev->dev_addr, ndev->addr_len);
 
 	/* Set up the default ring sizes. */
 	qdev->tx_ring_size = NUM_TX_RING_ENTRIES;
-- 
1.6.0.2


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

* [net-next PATCH 3/3] qlge: Fix occasional loopback test failure.
  2010-02-17 16:41 [net-next PATCH 0/3] qlge: minor fixes Ron Mercer
  2010-02-17 16:41 ` [net-next PATCH 1/3] qlge: Fix dropping of large non-TCP/UDP frames Ron Mercer
  2010-02-17 16:41 ` [net-next PATCH 2/3] qlge: Fix bonding mac address bug Ron Mercer
@ 2010-02-17 16:41 ` Ron Mercer
  2010-02-17 21:42 ` [net-next PATCH 0/3] qlge: minor fixes David Miller
  3 siblings, 0 replies; 5+ messages in thread
From: Ron Mercer @ 2010-02-17 16:41 UTC (permalink / raw)
  To: davem; +Cc: netdev, ron.mercer

On some servers we see the cleaning of the RX queue finish before all
the loopback packets are sent out.  This delay allows the queues to
settle before checking for successful completion.
Also, delay completion so link has time to come back up.

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

diff --git a/drivers/net/qlge/qlge_ethtool.c b/drivers/net/qlge/qlge_ethtool.c
index 4f26afe..05b8bde 100644
--- a/drivers/net/qlge/qlge_ethtool.c
+++ b/drivers/net/qlge/qlge_ethtool.c
@@ -503,7 +503,8 @@ static int ql_run_loopback_test(struct ql_adapter *qdev)
 			return -EPIPE;
 		atomic_inc(&qdev->lb_count);
 	}
-
+	/* Give queue time to settle before testing results. */
+	msleep(2);
 	ql_clean_lb_rx_ring(&qdev->rx_ring[0], 128);
 	return atomic_read(&qdev->lb_count) ? -EIO : 0;
 }
@@ -536,6 +537,10 @@ static void ql_self_test(struct net_device *ndev,
 			data[0] = 0;
 		}
 		clear_bit(QL_SELFTEST, &qdev->flags);
+		/* Give link time to come up after
+		 * port configuration changes.
+		 */
+		msleep_interruptible(4 * 1000);
 	} else {
 		netif_err(qdev, drv, qdev->ndev,
 			  "is down, Loopback test will fail.\n");
-- 
1.6.0.2


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

* Re: [net-next PATCH 0/3] qlge: minor fixes.
  2010-02-17 16:41 [net-next PATCH 0/3] qlge: minor fixes Ron Mercer
                   ` (2 preceding siblings ...)
  2010-02-17 16:41 ` [net-next PATCH 3/3] qlge: Fix occasional loopback test failure Ron Mercer
@ 2010-02-17 21:42 ` David Miller
  3 siblings, 0 replies; 5+ messages in thread
From: David Miller @ 2010-02-17 21:42 UTC (permalink / raw)
  To: ron.mercer; +Cc: netdev

From: Ron Mercer <ron.mercer@qlogic.com>
Date: Wed, 17 Feb 2010 08:41:20 -0800

> 
>  Miscellaneous fixes for qlge:
> 
> 1) Fix large ping (non-TCP/UDP) frame dropping when data spans
> multiple  rx  buffers.
> 2) Fix mac address filter issue for bonding.
> 3) Fix ethtool loopback test.

All applied, thanks.

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

end of thread, other threads:[~2010-02-17 21:42 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-02-17 16:41 [net-next PATCH 0/3] qlge: minor fixes Ron Mercer
2010-02-17 16:41 ` [net-next PATCH 1/3] qlge: Fix dropping of large non-TCP/UDP frames Ron Mercer
2010-02-17 16:41 ` [net-next PATCH 2/3] qlge: Fix bonding mac address bug Ron Mercer
2010-02-17 16:41 ` [net-next PATCH 3/3] qlge: Fix occasional loopback test failure Ron Mercer
2010-02-17 21:42 ` [net-next PATCH 0/3] qlge: minor fixes David Miller

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.