struct wilc_vif *vif;
        u32 channelnum;
        int result;
-       int srcu_idx;
 
-       srcu_idx = srcu_read_lock(&wl->srcu);
+       rcu_read_lock();
        vif = wilc_get_wl_to_vif(wl);
        if (IS_ERR(vif)) {
-               srcu_read_unlock(&wl->srcu, srcu_idx);
+               rcu_read_unlock();
                return PTR_ERR(vif);
        }
 
        if (result)
                netdev_err(vif->ndev, "Error in setting channel\n");
 
-       srcu_read_unlock(&wl->srcu, srcu_idx);
+       rcu_read_unlock();
        return result;
 }
 
        struct wilc *wl = wiphy_priv(wiphy);
        struct wilc_vif *vif;
        struct wilc_priv *priv;
-       int srcu_idx;
 
-       srcu_idx = srcu_read_lock(&wl->srcu);
+       rcu_read_lock();
        vif = wilc_get_wl_to_vif(wl);
        if (IS_ERR(vif))
                goto out;
                netdev_err(priv->dev, "Error in setting WIPHY PARAMS\n");
 
 out:
-       srcu_read_unlock(&wl->srcu, srcu_idx);
+       rcu_read_unlock();
        return ret;
 }
 
 
        if (type == NL80211_IFTYPE_MONITOR) {
                struct net_device *ndev;
-               int srcu_idx;
 
-               srcu_idx = srcu_read_lock(&wl->srcu);
+               rcu_read_lock();
                vif = wilc_get_vif_from_type(wl, WILC_AP_MODE);
                if (!vif) {
                        vif = wilc_get_vif_from_type(wl, WILC_GO_MODE);
                        if (!vif) {
-                               srcu_read_unlock(&wl->srcu, srcu_idx);
+                               rcu_read_unlock();
                                goto validate_interface;
                        }
                }
 
                if (vif->monitor_flag) {
-                       srcu_read_unlock(&wl->srcu, srcu_idx);
+                       rcu_read_unlock();
                        goto validate_interface;
                }
 
                if (ndev) {
                        vif->monitor_flag = 1;
                } else {
-                       srcu_read_unlock(&wl->srcu, srcu_idx);
+                       rcu_read_unlock();
                        return ERR_PTR(-EINVAL);
                }
 
                wdev = &vif->priv.wdev;
-               srcu_read_unlock(&wl->srcu, srcu_idx);
+               rcu_read_unlock();
                return wdev;
        }
 
        list_del_rcu(&vif->list);
        wl->vif_num--;
        mutex_unlock(&wl->vif_mutex);
-       synchronize_srcu(&wl->srcu);
+       synchronize_rcu();
        return 0;
 }
 
 {
        struct wilc *wl = wiphy_priv(wiphy);
        struct wilc_vif *vif;
-       int srcu_idx;
 
-       srcu_idx = srcu_read_lock(&wl->srcu);
+       rcu_read_lock();
        vif = wilc_get_wl_to_vif(wl);
        if (IS_ERR(vif)) {
-               srcu_read_unlock(&wl->srcu, srcu_idx);
+               rcu_read_unlock();
                return;
        }
 
        netdev_info(vif->ndev, "cfg set wake up = %d\n", enabled);
        wilc_set_wowlan_trigger(vif, enabled);
-       srcu_read_unlock(&wl->srcu, srcu_idx);
+       rcu_read_unlock();
 }
 
 static int set_tx_power(struct wiphy *wiphy, struct wireless_dev *wdev,
                        enum nl80211_tx_power_setting type, int mbm)
 {
        int ret;
-       int srcu_idx;
        s32 tx_power = MBM_TO_DBM(mbm);
        struct wilc *wl = wiphy_priv(wiphy);
        struct wilc_vif *vif;
        if (!wl->initialized)
                return -EIO;
 
-       srcu_idx = srcu_read_lock(&wl->srcu);
+       rcu_read_lock();
        vif = wilc_get_wl_to_vif(wl);
        if (IS_ERR(vif)) {
-               srcu_read_unlock(&wl->srcu, srcu_idx);
+               rcu_read_unlock();
                return -EINVAL;
        }
 
        ret = wilc_set_tx_power(vif, tx_power);
        if (ret)
                netdev_err(vif->ndev, "Failed to set tx power\n");
-       srcu_read_unlock(&wl->srcu, srcu_idx);
+       rcu_read_unlock();
 
        return ret;
 }
        init_completion(&wl->cfg_event);
        init_completion(&wl->sync_event);
        init_completion(&wl->txq_thread_started);
-       init_srcu_struct(&wl->srcu);
 }
 
 void wlan_deinit_locks(struct wilc *wilc)
        mutex_destroy(&wilc->txq_add_to_head_cs);
        mutex_destroy(&wilc->vif_mutex);
        mutex_destroy(&wilc->deinit_lock);
-       cleanup_srcu_struct(&wilc->srcu);
 }
 
 int wilc_cfg80211_init(struct wilc **wilc, struct device *dev, int io_type,
 
        struct host_if_drv *hif_drv;
        struct host_if_msg *msg;
        struct wilc_vif *vif;
-       int srcu_idx;
        int result;
        int id;
 
        id = get_unaligned_le32(&buffer[length - 4]);
-       srcu_idx = srcu_read_lock(&wilc->srcu);
+       rcu_read_lock();
        vif = wilc_get_vif_from_idx(wilc, id);
        if (!vif)
                goto out;
                kfree(msg);
        }
 out:
-       srcu_read_unlock(&wilc->srcu, srcu_idx);
+       rcu_read_unlock();
 }
 
 void wilc_gnrl_async_info_received(struct wilc *wilc, u8 *buffer, u32 length)
        struct host_if_drv *hif_drv;
        struct host_if_msg *msg;
        struct wilc_vif *vif;
-       int srcu_idx;
        int result;
        int id;
 
        mutex_lock(&wilc->deinit_lock);
 
        id = get_unaligned_le32(&buffer[length - 4]);
-       srcu_idx = srcu_read_lock(&wilc->srcu);
+       rcu_read_lock();
        vif = wilc_get_vif_from_idx(wilc, id);
        if (!vif)
                goto out;
                kfree(msg);
        }
 out:
-       srcu_read_unlock(&wilc->srcu, srcu_idx);
+       rcu_read_unlock();
        mutex_unlock(&wilc->deinit_lock);
 }
 
 {
        struct host_if_drv *hif_drv;
        struct wilc_vif *vif;
-       int srcu_idx;
        int result;
        int id;
 
        id = get_unaligned_le32(&buffer[length - 4]);
-       srcu_idx = srcu_read_lock(&wilc->srcu);
+       rcu_read_lock();
        vif = wilc_get_vif_from_idx(wilc, id);
        if (!vif)
                goto out;
                }
        }
 out:
-       srcu_read_unlock(&wilc->srcu, srcu_idx);
+       rcu_read_unlock();
 }
 
 int wilc_remain_on_channel(struct wilc_vif *vif, u64 cookie, u16 chan,
 
 
 int wilc_wlan_get_num_conn_ifcs(struct wilc *wilc)
 {
-       int srcu_idx;
        u8 ret_val = 0;
        struct wilc_vif *vif;
 
-       srcu_idx = srcu_read_lock(&wilc->srcu);
+       rcu_read_lock();
        wilc_for_each_vif(wilc, vif) {
                if (!is_zero_ether_addr(vif->bssid))
                        ret_val++;
        }
-       srcu_read_unlock(&wilc->srcu, srcu_idx);
+       rcu_read_unlock();
        return ret_val;
 }
 
 static void wilc_wake_tx_queues(struct wilc *wl)
 {
-       int srcu_idx;
        struct wilc_vif *ifc;
 
-       srcu_idx = srcu_read_lock(&wl->srcu);
+       rcu_read_lock();
        wilc_for_each_vif(wl, ifc) {
                if (ifc->mac_opened && netif_queue_stopped(ifc->ndev))
                        netif_wake_queue(ifc->ndev);
        }
-       srcu_read_unlock(&wl->srcu, srcu_idx);
+       rcu_read_unlock();
 }
 
 static int wilc_txq_task(void *vp)
        struct sockaddr *addr = (struct sockaddr *)p;
        unsigned char mac_addr[ETH_ALEN];
        struct wilc_vif *tmp_vif;
-       int srcu_idx;
 
        if (!is_valid_ether_addr(addr->sa_data))
                return -EADDRNOTAVAIL;
 
        /* Verify MAC Address is not already in use: */
 
-       srcu_idx = srcu_read_lock(&wilc->srcu);
+       rcu_read_lock();
        wilc_for_each_vif(wilc, tmp_vif) {
                wilc_get_mac_address(tmp_vif, mac_addr);
                if (ether_addr_equal(addr->sa_data, mac_addr)) {
                        if (vif != tmp_vif) {
-                               srcu_read_unlock(&wilc->srcu, srcu_idx);
+                               rcu_read_unlock();
                                return -EADDRNOTAVAIL;
                        }
-                       srcu_read_unlock(&wilc->srcu, srcu_idx);
+                       rcu_read_unlock();
                        return 0;
                }
        }
-       srcu_read_unlock(&wilc->srcu, srcu_idx);
+       rcu_read_unlock();
 
        result = wilc_set_mac_address(vif, (u8 *)addr->sa_data);
        if (result)
                                                wilc_tx_complete);
 
        if (queue_count > FLOW_CONTROL_UPPER_THRESHOLD) {
-               int srcu_idx;
                struct wilc_vif *vif;
 
-               srcu_idx = srcu_read_lock(&wilc->srcu);
+               rcu_read_lock();
                wilc_for_each_vif(wilc, vif) {
                        if (vif->mac_opened)
                                netif_stop_queue(vif->ndev);
                }
-               srcu_read_unlock(&wilc->srcu, srcu_idx);
+               rcu_read_unlock();
        }
 
        return NETDEV_TX_OK;
        unsigned int frame_len = 0;
        struct wilc_vif *vif;
        struct sk_buff *skb;
-       int srcu_idx;
        int stats;
 
        if (!wilc)
                return;
 
-       srcu_idx = srcu_read_lock(&wilc->srcu);
+       rcu_read_lock();
        wilc_netdev = get_if_handler(wilc, buff);
        if (!wilc_netdev)
                goto out;
                netdev_dbg(wilc_netdev, "netif_rx ret value is: %d\n", stats);
        }
 out:
-       srcu_read_unlock(&wilc->srcu, srcu_idx);
+       rcu_read_unlock();
 }
 
 void wilc_wfi_mgmt_rx(struct wilc *wilc, u8 *buff, u32 size, bool is_auth)
 {
-       int srcu_idx;
        struct wilc_vif *vif;
 
-       srcu_idx = srcu_read_lock(&wilc->srcu);
+       rcu_read_lock();
        wilc_for_each_vif(wilc, vif) {
                struct ieee80211_mgmt *mgmt = (struct ieee80211_mgmt *)buff;
                u16 type = le16_to_cpup((__le16 *)buff);
                if (vif->monitor_flag)
                        wilc_wfi_monitor_rx(wilc->monitor_dev, buff, size);
        }
-       srcu_read_unlock(&wilc->srcu, srcu_idx);
+       rcu_read_unlock();
 }
 
 static const struct net_device_ops wilc_netdev_ops = {
                list_del_rcu(&vif->list);
                wilc->vif_num--;
                mutex_unlock(&wilc->vif_mutex);
-               synchronize_srcu(&wilc->srcu);
+               synchronize_rcu();
                if (vif->ndev)
                        unregister_netdev(vif->ndev);
        }
 {
        int idx = 0;
        struct wilc_vif *vif;
-       int srcu_idx;
 
-       srcu_idx = srcu_read_lock(&wl->srcu);
+       rcu_read_lock();
        wilc_for_each_vif(wl, vif) {
                if (vif->idx == 0)
                        idx = 1;
                else
                        idx = 0;
        }
-       srcu_read_unlock(&wl->srcu, srcu_idx);
+       rcu_read_unlock();
        return idx;
 }
 
        list_add_tail_rcu(&vif->list, &wl->vif_list);
        wl->vif_num += 1;
        mutex_unlock(&wl->vif_mutex);
-       synchronize_srcu(&wl->srcu);
+       synchronize_rcu();
 
        return vif;
 
 
 
 #define wilc_for_each_vif(w, v) \
        struct wilc *_w = w; \
-       list_for_each_entry_srcu(v, &_w->vif_list, list, \
-                                srcu_read_lock_held(&_w->srcu))
+       list_for_each_entry_rcu(v, &_w->vif_list, list, \
+                                rcu_read_lock_held())
 
 struct wilc_wfi_stats {
        unsigned long rx_packets;
 
        /* protect vif list */
        struct mutex vif_mutex;
-       struct srcu_struct srcu;
        u8 open_ifcs;
 
        /* protect head of transmit queue */
 
        u32 *vmm_table = wilc->vmm_table;
        u8 ac_pkt_num_to_chip[NQUEUES] = {0, 0, 0, 0};
        const struct wilc_hif_func *func;
-       int srcu_idx;
        u8 *txb = wilc->tx_buffer;
        struct wilc_vif *vif;
 
 
        mutex_lock(&wilc->txq_add_to_head_cs);
 
-       srcu_idx = srcu_read_lock(&wilc->srcu);
+       rcu_read_lock();
        wilc_for_each_vif(wilc, vif)
                wilc_wlan_txq_filter_dup_tcp_ack(vif->ndev);
-       srcu_read_unlock(&wilc->srcu, srcu_idx);
+       rcu_read_unlock();
 
        for (ac = 0; ac < NQUEUES; ac++)
                tqe_q[ac] = wilc_wlan_txq_get_first(wilc, ac);