|
@@ -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);
|
|
|
}
|
|
|
|