/* total length of entire transfer */
        u32 len;
 
+       bool virt_scat;
+
        void (*complete) (struct htc_target *, struct hif_scatter_req *);
        int status;
        int scat_entries;
 struct hif_dev_scat_sup_info {
        int max_scat_entries;
        int max_xfer_szper_scatreq;
-       bool virt_scat;
 };
 
 struct ath6kl_hif_ops {
 
                   scat_req->addr, !read ? "async" : "sync",
                   (read) ? "rd" : "wr");
 
-       if (!read && dev->hif_scat_info.virt_scat)
+       if (!read && scat_req->virt_scat)
                status = ath6kldev_cp_scat_dma_buf(scat_req, false);
 
        if (status) {
                return status;
        }
 
-       if (dev->hif_scat_info.virt_scat)
+       if (scat_req->virt_scat)
                status =  ath6kldev_rw_scatter(dev->ar, scat_req);
        else
                status = ath6kl_hif_scat_req_rw(dev->ar, scat_req);
        if (read) {
                /* in sync mode, we can touch the scatter request */
                scat_req->status = status;
-               if (!status && dev->hif_scat_info.virt_scat)
+               if (!status && scat_req->virt_scat)
                        scat_req->status =
                                ath6kldev_cp_scat_dma_buf(scat_req, true);
        }
 
                bus_req->scat_req = s_req;
                s_req->busrequest = bus_req;
 
+               s_req->virt_scat = virt_scat;
+
                /* add it to the scatter pool */
                hif_scatter_req_add(ar_sdio->ar, s_req);
        }
                                        ATH6KL_MAX_TRANSFER_SIZE_PER_SCATTER;
        }
 
-       pinfo->virt_scat = virt_scat;
-
        return 0;
 }