diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/qlge/qlge_mpi.c | 8 |
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); |