SAHARA_HDR_CHA_SKHA | SAHARA_HDR_PARITY_BIT;
 }
 
-static int sahara_sg_length(struct scatterlist *sg,
-                           unsigned int total)
-{
-       int sg_nb;
-       unsigned int len;
-       struct scatterlist *sg_list;
-
-       sg_nb = 0;
-       sg_list = sg;
-
-       while (total) {
-               len = min(sg_list->length, total);
-
-               sg_nb++;
-               total -= len;
-
-               sg_list = sg_next(sg_list);
-               if (!sg_list)
-                       total = 0;
-       }
-
-       return sg_nb;
-}
-
 static char *sahara_err_src[16] = {
        "No error",
        "Header error",
                idx++;
        }
 
-       dev->nb_in_sg = sahara_sg_length(dev->in_sg, dev->total);
-       dev->nb_out_sg = sahara_sg_length(dev->out_sg, dev->total);
+       dev->nb_in_sg = sg_nents_for_len(dev->in_sg, dev->total);
+       dev->nb_out_sg = sg_nents_for_len(dev->out_sg, dev->total);
        if ((dev->nb_in_sg + dev->nb_out_sg) > SAHARA_MAX_HW_LINK) {
                dev_err(dev->device, "not enough hw links (%d)\n",
                        dev->nb_in_sg + dev->nb_out_sg);
 
        dev->in_sg = rctx->in_sg;
 
-       dev->nb_in_sg = sahara_sg_length(dev->in_sg, rctx->total);
+       dev->nb_in_sg = sg_nents_for_len(dev->in_sg, rctx->total);
        if ((dev->nb_in_sg) > SAHARA_MAX_HW_LINK) {
                dev_err(dev->device, "not enough hw links (%d)\n",
                        dev->nb_in_sg + dev->nb_out_sg);