All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/5 net-next] cnic: Fix interrupt logic
@ 2011-06-09  5:29 Michael Chan
  2011-06-09  5:29 ` [PATCH 2/5 net-next] cnic: Fix race conditions with firmware Michael Chan
  2011-06-09  6:52 ` [PATCH 1/5 net-next] cnic: Fix interrupt logic David Miller
  0 siblings, 2 replies; 17+ messages in thread
From: Michael Chan @ 2011-06-09  5:29 UTC (permalink / raw)
  To: davem; +Cc: netdev

We need to keep looping until cnic_get_kcqes() returns 0.  cnic_get_kcqes()
returns a maximum of 64 entries.  If there are more entries in the queue
and we don't loop back, the remaining entries may not be serviced for a
long time.

Signed-off-by: Michael Chan <mchan@broadcom.com>
---
 drivers/net/cnic.c |   13 ++++---------
 1 files changed, 4 insertions(+), 9 deletions(-)

diff --git a/drivers/net/cnic.c b/drivers/net/cnic.c
index 11a92af..5c0a669 100644
--- a/drivers/net/cnic.c
+++ b/drivers/net/cnic.c
@@ -2778,13 +2778,10 @@ static u32 cnic_service_bnx2_queues(struct cnic_dev *dev)
 
 		/* Tell compiler that status_blk fields can change. */
 		barrier();
-		if (status_idx != *cp->kcq1.status_idx_ptr) {
-			status_idx = (u16) *cp->kcq1.status_idx_ptr;
-			/* status block index must be read first */
-			rmb();
-			cp->kwq_con_idx = *cp->kwq_con_idx_ptr;
-		} else
-			break;
+		status_idx = (u16) *cp->kcq1.status_idx_ptr;
+		/* status block index must be read first */
+		rmb();
+		cp->kwq_con_idx = *cp->kwq_con_idx_ptr;
 	}
 
 	CNIC_WR16(dev, cp->kcq1.io_addr, cp->kcq1.sw_prod_idx);
@@ -2908,8 +2905,6 @@ static u32 cnic_service_bnx2x_kcq(struct cnic_dev *dev, struct kcq_info *info)
 
 		/* Tell compiler that sblk fields can change. */
 		barrier();
-		if (last_status == *info->status_idx_ptr)
-			break;
 
 		last_status = *info->status_idx_ptr;
 		/* status block index must be read before reading the KCQ */
-- 
1.6.4.GIT



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

end of thread, other threads:[~2011-06-10  6:25 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-06-09  5:29 [PATCH 1/5 net-next] cnic: Fix interrupt logic Michael Chan
2011-06-09  5:29 ` [PATCH 2/5 net-next] cnic: Fix race conditions with firmware Michael Chan
2011-06-09  5:29   ` [PATCH 3/5 net-next] cnic: Randomize initial TCP port for iSCSI connections Michael Chan
2011-06-09  5:29     ` [PATCH 4/5 net-next] cnic: Improve NETDEV_UP event handling Michael Chan
2011-06-09  5:29       ` [PATCH 5/5 net-next] cnic, bnx2: Check iSCSI support early in bnx2_init_one() Michael Chan
2011-06-09  6:53         ` David Miller
2011-06-09 10:42         ` Neil Horman
2011-06-10  0:37           ` Michael Chan
2011-06-09  6:53       ` [PATCH 4/5 net-next] cnic: Improve NETDEV_UP event handling David Miller
2011-06-09  6:53     ` [PATCH 3/5 net-next] cnic: Randomize initial TCP port for iSCSI connections David Miller
2011-06-09 15:27     ` Stephen Hemminger
2011-06-10  1:08       ` Michael Chan
2011-06-10  4:01         ` Stephen Hemminger
2011-06-10  4:39           ` Eric Dumazet
2011-06-10  6:25           ` Michael Chan
2011-06-09  6:53   ` [PATCH 2/5 net-next] cnic: Fix race conditions with firmware David Miller
2011-06-09  6:52 ` [PATCH 1/5 net-next] cnic: Fix interrupt logic 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.