From c01dc450dca6f69e5fbb7574798d629b950eb99d Mon Sep 17 00:00:00 2001 From: tzachid Date: Sun, 29 Jun 2008 11:38:09 +0000 Subject: [PATCH] [mlx4] Stop DPC from running for ever (mlnx: 2642) git-svn-id: svn://openib.tc.cornell.edu/gen1@1303 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86 --- trunk/hw/mlx4/kernel/bus/net/eq.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/trunk/hw/mlx4/kernel/bus/net/eq.c b/trunk/hw/mlx4/kernel/bus/net/eq.c index 08240ceb..d20d3a8f 100644 --- a/trunk/hw/mlx4/kernel/bus/net/eq.c +++ b/trunk/hw/mlx4/kernel/bus/net/eq.c @@ -160,6 +160,9 @@ static int mlx4_eq_int(struct mlx4_dev *dev, struct mlx4_eq *eq) int cqn; int eqes_found = 0; int set_ci = 0; + static const uint32_t cDpcMaxTime = 10000; //max time to spend in a while loop + + uint64_t start = cl_get_time_stamp(); while ((eqe = next_eqe_sw(eq))) { /* @@ -222,6 +225,7 @@ static int mlx4_eq_int(struct mlx4_dev *dev, struct mlx4_eq *eq) default: mlx4_warn(dev, "Unhandled event %02x(%02x) on EQ %d at index %u\n", eqe->type, eqe->subtype, eq->eqn, eq->cons_index); + break; }; @@ -244,6 +248,10 @@ static int mlx4_eq_int(struct mlx4_dev *dev, struct mlx4_eq *eq) eq_set_ci(eq, 0); set_ci = 0; } + + if (cl_get_time_stamp() - start > cDpcMaxTime ) { + break; //allow other DPCs as well + } } eq_set_ci(eq, 1); -- 2.41.0