aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/qlge/qlge_mpi.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/net/qlge/qlge_mpi.c b/drivers/net/qlge/qlge_mpi.c
index 9f81b797f10b..7cb30fdc9bac 100644
--- a/drivers/net/qlge/qlge_mpi.c
+++ b/drivers/net/qlge/qlge_mpi.c
@@ -831,13 +831,19 @@ void ql_mpi_work(struct work_struct *work)
831 container_of(work, struct ql_adapter, mpi_work.work); 831 container_of(work, struct ql_adapter, mpi_work.work);
832 struct mbox_params mbc; 832 struct mbox_params mbc;
833 struct mbox_params *mbcp = &mbc; 833 struct mbox_params *mbcp = &mbc;
834 int err = 0;
834 835
835 mutex_lock(&qdev->mpi_mutex); 836 mutex_lock(&qdev->mpi_mutex);
836 837
837 while (ql_read32(qdev, STS) & STS_PI) { 838 while (ql_read32(qdev, STS) & STS_PI) {
838 memset(mbcp, 0, sizeof(struct mbox_params)); 839 memset(mbcp, 0, sizeof(struct mbox_params));
839 mbcp->out_count = 1; 840 mbcp->out_count = 1;
840 ql_mpi_handler(qdev, mbcp); 841 /* Don't continue if an async event
842 * did not complete properly.
843 */
844 err = ql_mpi_handler(qdev, mbcp);
845 if (err)
846 break;
841 } 847 }
842 848
843 mutex_unlock(&qdev->mpi_mutex); 849 mutex_unlock(&qdev->mpi_mutex);