All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tom Lendacky <thomas.lendacky@amd.com>
To: LABBE Corentin <clabbe.montjoie@gmail.com>,
	<herbert@gondor.apana.org.au>, <davem@davemloft.net>,
	<akpm@linux-foundation.org>, <arnd@arndb.de>, <axboe@fb.com>,
	<david.s.gordon@intel.com>, <martin.petersen@oracle.com>,
	<robert.jarzmik@free.fr>, <tonyb@cybernetics.com>
Cc: <linux-kernel@vger.kernel.org>, <linux-crypto@vger.kernel.org>
Subject: Re: [PATCH v2 5/8] lib: introduce sg_nents_len_chained
Date: Fri, 18 Sep 2015 09:01:29 -0500	[thread overview]
Message-ID: <55FC1939.7080407@amd.com> (raw)
In-Reply-To: <1442581036-23789-6-git-send-email-clabbe.montjoie@gmail.com>

On 09/18/2015 07:57 AM, LABBE Corentin wrote:
> Some driver use a modified version of sg_nents_for_len with an
> additional parameter bool *chained for knowing if the scatterlist is
> chained or not.
>
> So, for removing duplicate code, add sg_nents_len_chained in
> lib/scatterlist.c
>
> Signed-off-by: LABBE Corentin <clabbe.montjoie@gmail.com>
> ---
>   include/linux/scatterlist.h |  1 +
>   lib/scatterlist.c           | 40 ++++++++++++++++++++++++++++++++++++++++
>   2 files changed, 41 insertions(+)
>
> diff --git a/include/linux/scatterlist.h b/include/linux/scatterlist.h
> index 556ec1e..594cdb0 100644
> --- a/include/linux/scatterlist.h
> +++ b/include/linux/scatterlist.h
> @@ -243,6 +243,7 @@ static inline void *sg_virt(struct scatterlist *sg)
>
>   int sg_nents(struct scatterlist *sg);
>   int sg_nents_for_len(struct scatterlist *sg, u64 len);
> +int sg_nents_len_chained(struct scatterlist *sg, u64 len, bool *chained);
>   struct scatterlist *sg_next(struct scatterlist *);
>   struct scatterlist *sg_last(struct scatterlist *s, unsigned int);
>   void sg_init_table(struct scatterlist *, unsigned int);
> diff --git a/lib/scatterlist.c b/lib/scatterlist.c
> index bafa993..070e396 100644
> --- a/lib/scatterlist.c
> +++ b/lib/scatterlist.c
> @@ -90,6 +90,46 @@ int sg_nents_for_len(struct scatterlist *sg, u64 len)
>   EXPORT_SYMBOL(sg_nents_for_len);
>
>   /**
> + * sg_nents_len_chained - return total count of entries in scatterlist
> + *                        needed to satisfy the supplied length
> + * @sg:		The scatterlist
> + * @len:	The total required length
> + * @chained	A pointer where to store if SG is chained or not
> + *
> + * Description:
> + * Determines the number of entries in sg that are required to meet
> + * the supplied length, taking into account chaining as well
> + * If the scatterlist is chained, set *chained to true.
> + *
> + * Returns:
> + *   the number of sg entries needed, negative error on failure
> + *
> + **/
> +int sg_nents_len_chained(struct scatterlist *sg, u64 len, bool *chained)
> +{
> +	int nents;
> +	u64 total;
> +
> +	if (chained)
> +		*chained = false;
> +
> +	if (!len)
> +		return 0;
> +
> +	for (nents = 0, total = 0; sg; sg = sg_next(sg)) {
> +		nents++;
> +		total += sg->length;
> +		if (!sg_is_last(sg) && (sg + 1)->length == 0 && chained)

Wouldn't it be better to use the sg_is_chain macro to determine if the
the entry is chained instead of checking the length?

Thanks,
Tom

> +			*chained = true;
> +		if (total >= len)
> +			return nents;
> +	}
> +
> +	return -EINVAL;
> +}
> +EXPORT_SYMBOL(sg_nents_len_chained);
> +
> +/**
>    * sg_last - return the last scatterlist entry in a list
>    * @sgl:	First entry in the scatterlist
>    * @nents:	Number of entries in the scatterlist
>

  reply	other threads:[~2015-09-18 14:01 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-18 12:57 [PATCH v2] crypto: Remove duplicate code of SG helpers functions LABBE Corentin
2015-09-18 12:57 ` [PATCH v2 1/8] crypto: bfin: replace sg_count by sg_nents LABBE Corentin
2015-09-18 12:57 ` [PATCH v2 2/8] crypto: amcc replace get_sg_count by sg_nents_for_len LABBE Corentin
2015-09-18 12:57 ` [PATCH v2 3/8] crypto: sahara: replace sahara_sg_length with sg_nents_for_len LABBE Corentin
2015-09-18 12:57 ` [PATCH v2 4/8] s390: replace zfcp_qdio_sbale_count by sg_nents LABBE Corentin
2015-09-30 13:59   ` Steffen Maier
2015-09-18 12:57 ` [PATCH v2 5/8] lib: introduce sg_nents_len_chained LABBE Corentin
2015-09-18 14:01   ` Tom Lendacky [this message]
2015-09-18 16:19   ` Tony Battersby
2015-09-18 21:25     ` Tony Battersby
2015-09-21 14:19       ` Herbert Xu
2015-09-21 14:59         ` LABBE Corentin
2015-09-18 12:57 ` [PATCH v2 6/8] crypto: talitos: replace sg_count with sg_nents_len_chained LABBE Corentin
2015-09-18 12:57 ` [PATCH v2 7/8] crypto: qce: replace qce_countsg " LABBE Corentin
2015-09-18 12:57 ` [PATCH v2 8/8] crypto: caam: replace __sg_count " LABBE Corentin
2015-09-21 15:09 ` [PATCH v2] crypto: Remove duplicate code of SG helpers functions Herbert Xu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=55FC1939.7080407@amd.com \
    --to=thomas.lendacky@amd.com \
    --cc=akpm@linux-foundation.org \
    --cc=arnd@arndb.de \
    --cc=axboe@fb.com \
    --cc=clabbe.montjoie@gmail.com \
    --cc=davem@davemloft.net \
    --cc=david.s.gordon@intel.com \
    --cc=herbert@gondor.apana.org.au \
    --cc=linux-crypto@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=robert.jarzmik@free.fr \
    --cc=tonyb@cybernetics.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.