rsi_init_event(&common->tx_thread.event);
        mutex_init(&common->mutex);
        mutex_init(&common->tx_rxlock);
+       mutex_init(&common->rx_lock);
 
        if (rsi_create_kthread(common,
                               &common->tx_thread,
 
        dev->rx_info.sdio_int_counter++;
 
        do {
-               mutex_lock(&common->tx_rxlock);
+               mutex_lock(&common->rx_lock);
                status = rsi_sdio_read_register(common->priv,
                                                RSI_FN1_INT_REGISTER,
                                                &isr_status);
                        rsi_dbg(ERR_ZONE,
                                "%s: Failed to Read Intr Status Register\n",
                                __func__);
-                       mutex_unlock(&common->tx_rxlock);
+                       mutex_unlock(&common->rx_lock);
                        return;
                }
                adapter->interrupt_status = isr_status;
                if (isr_status == 0) {
                        rsi_set_event(&common->tx_thread.event);
                        dev->rx_info.sdio_intr_status_zero++;
-                       mutex_unlock(&common->tx_rxlock);
+                       mutex_unlock(&common->rx_lock);
                        return;
                }
 
                                        rsi_dbg(ERR_ZONE,
                                                "%s: Failed to read pkt\n",
                                                __func__);
-                                       mutex_unlock(&common->tx_rxlock);
+                                       mutex_unlock(&common->rx_lock);
                                        return;
                                }
                                break;
                        }
                        isr_status ^= BIT(isr_type - 1);
                } while (isr_status);
-               mutex_unlock(&common->tx_rxlock);
+               mutex_unlock(&common->rx_lock);
        } while (1);
 }
 
 
                if (atomic_read(&dev->rx_thread.thread_done))
                        goto out;
 
-               mutex_lock(&common->tx_rxlock);
+               mutex_lock(&common->rx_lock);
                status = rsi_read_pkt(common, 0);
                if (status) {
                        rsi_dbg(ERR_ZONE, "%s: Failed To read data", __func__);
-                       mutex_unlock(&common->tx_rxlock);
+                       mutex_unlock(&common->rx_lock);
                        return;
                }
-               mutex_unlock(&common->tx_rxlock);
+               mutex_unlock(&common->rx_lock);
                rsi_reset_event(&dev->rx_thread.event);
                if (adapter->rx_urb_submit(adapter)) {
                        rsi_dbg(ERR_ZONE,