req = skcipher_request_cast(pd_uinfo->async_req);
 
-       if (pd_uinfo->using_sd) {
+       if (pd_uinfo->sa_va->sa_command_0.bf.scatter) {
                crypto4xx_copy_pkt_to_dst(dev, pd, pd_uinfo,
                                          req->cryptlen, req->dst);
        } else {
        u32 icv[AES_BLOCK_SIZE];
        int err = 0;
 
-       if (pd_uinfo->using_sd) {
+       if (pd_uinfo->sa_va->sa_command_0.bf.scatter) {
                crypto4xx_copy_pkt_to_dst(dev, pd, pd_uinfo,
                                          pd->pd_ctl_len.bf.pkt_len,
                                          dst);
                 * we know application give us dst a whole piece of memory
                 * no need to use scatter ring.
                 */
-               pd_uinfo->using_sd = 0;
                pd_uinfo->first_sd = 0xffffffff;
                sa->sa_command_0.bf.scatter = 0;
                pd->dest = (u32)dma_map_page(dev->core_dev->device,
                u32 sd_idx = fst_sd;
                nbytes = datalen;
                sa->sa_command_0.bf.scatter = 1;
-               pd_uinfo->using_sd = 1;
                pd_uinfo->first_sd = fst_sd;
                sd = crypto4xx_get_sdp(dev, &sd_dma, sd_idx);
                pd->dest = sd_dma;