static void brcmf_btcoex_boost_wifi(struct brcmf_btcoex_info *btci,
                                    bool trump_sco)
 {
-       struct brcmf_if *ifp = btci->cfg->pub->iflist[0];
+       struct brcmf_if *ifp = brcmf_get_ifp(btci->cfg->pub, 0);
 
        if (trump_sco && !btci->saved_regs_part2) {
                /* this should reduce eSCO agressive
 {
        struct brcmf_cfg80211_info *cfg = wiphy_priv(vif->wdev.wiphy);
        struct brcmf_btcoex_info *btci = cfg->btcoex;
-       struct brcmf_if *ifp = cfg->pub->iflist[0];
+       struct brcmf_if *ifp = brcmf_get_ifp(cfg->pub, 0);
 
        switch (mode) {
        case BRCMF_BTCOEX_DISABLED:
 
 
 void brcmf_feat_attach(struct brcmf_pub *drvr)
 {
-       struct brcmf_if *ifp = drvr->iflist[0];
+       struct brcmf_if *ifp = brcmf_get_ifp(drvr, 0);
 
        brcmf_feat_iovar_int_get(ifp, BRCMF_FEAT_MCHAN, "mchan");
        brcmf_feat_iovar_int_get(ifp, BRCMF_FEAT_PNO, "pfn");
 
 brcmf_fws_flow_control_check(struct brcmf_fws_info *fws, struct pktq *pq,
                             u8 if_id)
 {
-       struct brcmf_if *ifp = fws->drvr->iflist[!if_id ? 0 : if_id + 1];
+       struct brcmf_if *ifp = brcmf_get_ifp(fws->drvr, if_id);
 
        if (WARN_ON(!ifp))
                return;
 int brcmf_fws_init(struct brcmf_pub *drvr)
 {
        struct brcmf_fws_info *fws;
+       struct brcmf_if *ifp;
        u32 tlv = BRCMF_FWS_FLAGS_RSSI_SIGNALS;
        int rc;
        u32 mode;
         * continue. Set mode back to none indicating not enabled.
         */
        fws->fw_signals = true;
-       if (brcmf_fil_iovar_int_set(drvr->iflist[0], "tlv", tlv)) {
+       ifp = brcmf_get_ifp(drvr, 0);
+       if (brcmf_fil_iovar_int_set(ifp, "tlv", tlv)) {
                brcmf_err("failed to set bdcv2 tlv signaling\n");
                fws->fcmode = BRCMF_FWS_FCMODE_NONE;
                fws->fw_signals = false;
        }
 
-       if (brcmf_fil_iovar_int_set(drvr->iflist[0], "ampdu_hostreorder", 1))
+       if (brcmf_fil_iovar_int_set(ifp, "ampdu_hostreorder", 1))
                brcmf_dbg(INFO, "enabling AMPDU host-reorder failed\n");
 
        /* Enable seq number reuse, if supported */
-       if (brcmf_fil_iovar_int_get(drvr->iflist[0], "wlfc_mode", &mode) == 0) {
+       if (brcmf_fil_iovar_int_get(ifp, "wlfc_mode", &mode) == 0) {
                if (BRCMF_FWS_MODE_GET_REUSESEQ(mode)) {
                        mode = 0;
                        BRCMF_FWS_MODE_SET_REUSESEQ(mode, 1);
-                       if (brcmf_fil_iovar_int_set(drvr->iflist[0],
+                       if (brcmf_fil_iovar_int_set(ifp,
                                                    "wlfc_mode", mode) == 0) {
                                BRCMF_FWS_MODE_SET_REUSESEQ(fws->mode, 1);
                        }