Merge "msm: qcn: Change spin_lock api to synchronize clients"

This commit is contained in:
Linux Build Service Account 2019-09-13 07:57:20 -07:00 committed by Gerrit - the friendly Code Review server
commit 6e94fb15c8

View file

@ -188,10 +188,10 @@ static struct qcn_sdio_rw_info *qcn_sdio_alloc_rw_req(void)
static void qcn_sdio_add_rw_req(struct qcn_sdio_rw_info *rw_req) static void qcn_sdio_add_rw_req(struct qcn_sdio_rw_info *rw_req)
{ {
spin_lock(&sdio_ctxt->lock_wait_q); spin_lock_bh(&sdio_ctxt->lock_wait_q);
list_add_tail(&rw_req->list, &sdio_ctxt->rw_wait_q); list_add_tail(&rw_req->list, &sdio_ctxt->rw_wait_q);
atomic_inc(&sdio_ctxt->wait_list_count); atomic_inc(&sdio_ctxt->wait_list_count);
spin_unlock(&sdio_ctxt->lock_wait_q); spin_unlock_bh(&sdio_ctxt->lock_wait_q);
} }
static int qcn_enable_async_irq(bool enable) static int qcn_enable_async_irq(bool enable)
@ -650,15 +650,15 @@ static void qcn_sdio_rw_work(struct work_struct *work)
struct sdio_al_channel_handle *ch_handle = NULL; struct sdio_al_channel_handle *ch_handle = NULL;
while (1) { while (1) {
spin_lock(&sdio_ctxt->lock_wait_q); spin_lock_bh(&sdio_ctxt->lock_wait_q);
if (list_empty(&sdio_ctxt->rw_wait_q)) { if (list_empty(&sdio_ctxt->rw_wait_q)) {
spin_unlock(&sdio_ctxt->lock_wait_q); spin_unlock_bh(&sdio_ctxt->lock_wait_q);
break; break;
} }
rw_req = list_first_entry(&sdio_ctxt->rw_wait_q, rw_req = list_first_entry(&sdio_ctxt->rw_wait_q,
struct qcn_sdio_rw_info, list); struct qcn_sdio_rw_info, list);
list_del(&rw_req->list); list_del(&rw_req->list);
spin_unlock(&sdio_ctxt->lock_wait_q); spin_unlock_bh(&sdio_ctxt->lock_wait_q);
if (rw_req->dir) { if (rw_req->dir) {
ret = qcn_sdio_recv_buff(rw_req->cid, rw_req->buf, ret = qcn_sdio_recv_buff(rw_req->cid, rw_req->buf,