From: Dan Carpenter <dan.carpenter@oracle.com>
To: Dept-GELinuxNICDev@qlogic.com,
Rajesh Borundia <rajesh.borundia@qlogic.com>
Cc: netdev@vger.kernel.org, kernel-janitors@vger.kernel.org
Subject: [patch] qlcnic: fix a timeout loop
Date: Tue, 15 Dec 2015 10:16:18 +0000 [thread overview]
Message-ID: <20151215101618.GG20848@mwanda> (raw)
The problem here is that at the end of the loop we test for if
idc->vnic_wait_limit is zero, but since idc->vnic_wait_limit-- is a
post-op, it actually ends up set to (u8)-1. I have fixed this by
changing it to a pre-op. I had to change the starting value from
"QLCNIC_DEV_NPAR_OPER_TIMEO" (30) to "QLCNIC_DEV_NPAR_OPER_TIMEO + 1" so
that we still loop the same number of times as before.
Fixes: 486a5bc77a4a ('qlcnic: Add support for 83xx suspend and resume.')
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_vnic.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_vnic.c
index be7d7a6..9919245 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_vnic.c
+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_vnic.c
@@ -234,7 +234,7 @@ int qlcnic_83xx_config_vnic_opmode(struct qlcnic_adapter *adapter)
}
ahw->idc.vnic_state = QLCNIC_DEV_NPAR_NON_OPER;
- ahw->idc.vnic_wait_limit = QLCNIC_DEV_NPAR_OPER_TIMEO;
+ ahw->idc.vnic_wait_limit = QLCNIC_DEV_NPAR_OPER_TIMEO + 1;
return 0;
}
@@ -246,7 +246,7 @@ int qlcnic_83xx_check_vnic_state(struct qlcnic_adapter *adapter)
u32 state;
state = QLCRDX(ahw, QLC_83XX_VNIC_STATE);
- while (state != QLCNIC_DEV_NPAR_OPER && idc->vnic_wait_limit--) {
+ while (state != QLCNIC_DEV_NPAR_OPER && --idc->vnic_wait_limit) {
msleep(1000);
state = QLCRDX(ahw, QLC_83XX_VNIC_STATE);
}
WARNING: multiple messages have this Message-ID (diff)
From: Dan Carpenter <dan.carpenter@oracle.com>
To: Dept-GELinuxNICDev@qlogic.com,
Rajesh Borundia <rajesh.borundia@qlogic.com>
Cc: netdev@vger.kernel.org, kernel-janitors@vger.kernel.org
Subject: [patch] qlcnic: fix a timeout loop
Date: Tue, 15 Dec 2015 13:16:18 +0300 [thread overview]
Message-ID: <20151215101618.GG20848@mwanda> (raw)
The problem here is that at the end of the loop we test for if
idc->vnic_wait_limit is zero, but since idc->vnic_wait_limit-- is a
post-op, it actually ends up set to (u8)-1. I have fixed this by
changing it to a pre-op. I had to change the starting value from
"QLCNIC_DEV_NPAR_OPER_TIMEO" (30) to "QLCNIC_DEV_NPAR_OPER_TIMEO + 1" so
that we still loop the same number of times as before.
Fixes: 486a5bc77a4a ('qlcnic: Add support for 83xx suspend and resume.')
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_vnic.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_vnic.c
index be7d7a6..9919245 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_vnic.c
+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_vnic.c
@@ -234,7 +234,7 @@ int qlcnic_83xx_config_vnic_opmode(struct qlcnic_adapter *adapter)
}
ahw->idc.vnic_state = QLCNIC_DEV_NPAR_NON_OPER;
- ahw->idc.vnic_wait_limit = QLCNIC_DEV_NPAR_OPER_TIMEO;
+ ahw->idc.vnic_wait_limit = QLCNIC_DEV_NPAR_OPER_TIMEO + 1;
return 0;
}
@@ -246,7 +246,7 @@ int qlcnic_83xx_check_vnic_state(struct qlcnic_adapter *adapter)
u32 state;
state = QLCRDX(ahw, QLC_83XX_VNIC_STATE);
- while (state != QLCNIC_DEV_NPAR_OPER && idc->vnic_wait_limit--) {
+ while (state != QLCNIC_DEV_NPAR_OPER && --idc->vnic_wait_limit) {
msleep(1000);
state = QLCRDX(ahw, QLC_83XX_VNIC_STATE);
}
next reply other threads:[~2015-12-15 10:16 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-15 10:16 Dan Carpenter [this message]
2015-12-15 10:16 ` [patch] qlcnic: fix a timeout loop Dan Carpenter
2015-12-15 13:46 ` Manish Chopra
2015-12-15 13:56 ` [patch v2] " Dan Carpenter
2015-12-15 13:56 ` Dan Carpenter
2015-12-15 18:13 ` David Miller
2015-12-15 18:13 ` David Miller
2015-12-15 20:13 ` Dan Carpenter
2015-12-15 20:13 ` Dan Carpenter
2015-12-15 20:17 ` Dan Carpenter
2015-12-15 20:17 ` Dan Carpenter
2015-12-24 9:21 ` [patch] qlcnic: fix a loop exit condition better Dan Carpenter
2015-12-24 9:21 ` Dan Carpenter
2015-12-24 16:02 ` David Miller
2015-12-24 16:02 ` David Miller
2016-01-04 13:19 ` [patch v2] qlcnic: fix a timeout loop Yann Dupont - Veille Techno
2016-01-05 19:30 ` Dan Carpenter
2015-12-15 16:35 ` [patch] " walter harms
2015-12-15 16:35 ` walter harms
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20151215101618.GG20848@mwanda \
--to=dan.carpenter@oracle.com \
--cc=Dept-GELinuxNICDev@qlogic.com \
--cc=kernel-janitors@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=rajesh.borundia@qlogic.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.