diff options
Diffstat (limited to 'drivers/net/qlge/qlge_mpi.c')
| -rw-r--r-- | drivers/net/qlge/qlge_mpi.c | 12 | 
1 files changed, 4 insertions, 8 deletions
diff --git a/drivers/net/qlge/qlge_mpi.c b/drivers/net/qlge/qlge_mpi.c index 0e7c7c7ee16..a2e919bcb3c 100644 --- a/drivers/net/qlge/qlge_mpi.c +++ b/drivers/net/qlge/qlge_mpi.c @@ -534,6 +534,7 @@ static int ql_mailbox_command(struct ql_adapter *qdev, struct mbox_params *mbcp)  	int status;  	unsigned long count; +	mutex_lock(&qdev->mpi_mutex);  	/* Begin polled mode for MPI */  	ql_write32(qdev, INTR_MASK, (INTR_MASK_PI << 16)); @@ -603,6 +604,7 @@ done:  end:  	/* End polled mode for MPI */  	ql_write32(qdev, INTR_MASK, (INTR_MASK_PI << 16) | INTR_MASK_PI); +	mutex_unlock(&qdev->mpi_mutex);  	return status;  } @@ -1099,9 +1101,7 @@ int ql_wait_fifo_empty(struct ql_adapter *qdev)  static int ql_set_port_cfg(struct ql_adapter *qdev)  {  	int status; -	rtnl_lock();  	status = ql_mb_set_port_cfg(qdev); -	rtnl_unlock();  	if (status)  		return status;  	status = ql_idc_wait(qdev); @@ -1122,9 +1122,7 @@ void ql_mpi_port_cfg_work(struct work_struct *work)  	    container_of(work, struct ql_adapter, mpi_port_cfg_work.work);  	int status; -	rtnl_lock();  	status = ql_mb_get_port_cfg(qdev); -	rtnl_unlock();  	if (status) {  		netif_err(qdev, drv, qdev->ndev,  			  "Bug: Failed to get port config data.\n"); @@ -1167,7 +1165,6 @@ void ql_mpi_idc_work(struct work_struct *work)  	u32 aen;  	int timeout; -	rtnl_lock();  	aen = mbcp->mbox_out[1] >> 16;  	timeout = (mbcp->mbox_out[1] >> 8) & 0xf; @@ -1231,7 +1228,6 @@ void ql_mpi_idc_work(struct work_struct *work)  		}  		break;  	} -	rtnl_unlock();  }  void ql_mpi_work(struct work_struct *work) @@ -1242,7 +1238,7 @@ void ql_mpi_work(struct work_struct *work)  	struct mbox_params *mbcp = &mbc;  	int err = 0; -	rtnl_lock(); +	mutex_lock(&qdev->mpi_mutex);  	/* Begin polled mode for MPI */  	ql_write32(qdev, INTR_MASK, (INTR_MASK_PI << 16)); @@ -1259,7 +1255,7 @@ void ql_mpi_work(struct work_struct *work)  	/* End polled mode for MPI */  	ql_write32(qdev, INTR_MASK, (INTR_MASK_PI << 16) | INTR_MASK_PI); -	rtnl_unlock(); +	mutex_unlock(&qdev->mpi_mutex);  	ql_enable_completion_interrupt(qdev, 0);  }  |