2007-10-26 12:10:47

by Herbert Xu

[permalink] [raw]
Subject: [CRYPTO] hifn_795x: Update for new scatterlist API

Hi Evgeniy:

I've updated the HIFN driver to work with the new scatterlist
API. Please have a look to see if I've done anything stupid.

Thanks,
--
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <[email protected]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
--
diff --git a/drivers/crypto/hifn_795x.c b/drivers/crypto/hifn_795x.c
index 984f333..391c20a 100644
--- a/drivers/crypto/hifn_795x.c
+++ b/drivers/crypto/hifn_795x.c
@@ -1225,6 +1225,7 @@ static int ablkcipher_walk_init(struct ablkcipher_walk *w,
int i;

num = min(ASYNC_SCATTERLIST_CACHE, num);
+ sg_init_table(w->cache, num);

w->num = 0;
for (i=0; i<num; ++i) {
@@ -1236,9 +1237,7 @@ static int ablkcipher_walk_init(struct ablkcipher_walk *w,

s = &w->cache[i];

- s->page = page;
- s->length = PAGE_SIZE;
- s->offset = 0;
+ sg_set_page(s, page, PAGE_SIZE, 0);
w->num++;
}

@@ -1252,11 +1251,9 @@ static void ablkcipher_walk_exit(struct ablkcipher_walk *w)
for (i=0; i<w->num; ++i) {
struct scatterlist *s = &w->cache[i];

- __free_page(s->page);
+ __free_page(sg_page(s));

s->length = 0;
- s->offset = 0;
- s->page = NULL;
}

w->num = 0;
@@ -1275,7 +1272,7 @@ static int ablkcipher_add(void *daddr, unsigned int *drestp, struct scatterlist
while (size) {
copy = min(drest, src->length);

- saddr = kmap_atomic(src->page, KM_SOFTIRQ1);
+ saddr = kmap_atomic(sg_page(src), KM_SOFTIRQ1);
memcpy(daddr, saddr + src->offset, copy);
kunmap_atomic(saddr, KM_SOFTIRQ1);

@@ -1333,7 +1330,7 @@ static int ablkcipher_walk(struct ablkcipher_request *req,

t = &w->cache[idx];

- daddr = kmap_atomic(t->page, KM_SOFTIRQ0);
+ daddr = kmap_atomic(sg_page(t), KM_SOFTIRQ0);
err = ablkcipher_add(daddr, &dlen, src, slen, &nbytes);
if (err < 0)
goto err_out_unmap;
@@ -1462,14 +1459,14 @@ static int hifn_setup_session(struct ablkcipher_request *req)
t = &ctx->walk.cache[idx];

if (t->length) {
- spage = dpage = t->page;
+ spage = dpage = sg_page(t);
soff = doff = 0;
len = t->length;
} else {
- spage = src->page;
+ spage = sg_page(src);
soff = src->offset;

- dpage = dst->page;
+ dpage = sg_page(dst);
doff = dst->offset;

len = dst->length;
@@ -1590,7 +1587,7 @@ static int ablkcipher_get(void *saddr, unsigned int *srestp, unsigned int offset

copy = min(dst->length, srest);

- daddr = kmap_atomic(dst->page, KM_IRQ0);
+ daddr = kmap_atomic(sg_page(dst), KM_IRQ0);
memcpy(daddr + dst->offset + offset, saddr, copy);
kunmap_atomic(daddr, KM_IRQ0);

@@ -1638,11 +1635,11 @@ static void hifn_process_ready(struct ablkcipher_request *req, int error)
t = &ctx->walk.cache[idx];
dst = &req->dst[idx];

- dprintk("\n%s: t->page: %p, t->length: %u, "
- "dst->page: %p, dst->length: %u, "
+ dprintk("\n%s: sg_page(t): %p, t->length: %u, "
+ "sg_page(dst): %p, dst->length: %u, "
"nbytes: %u.\n",
- __func__, t->page, t->length, dst->page,
- dst->length, nbytes);
+ __func__, sg_page(t), t->length,
+ sg_page(dst), dst->length, nbytes);

if (!t->length) {
nbytes -= dst->length;
@@ -1650,7 +1647,7 @@ static void hifn_process_ready(struct ablkcipher_request *req, int error)
continue;
}

- saddr = kmap_atomic(t->page, KM_IRQ1);
+ saddr = kmap_atomic(sg_page(t), KM_IRQ1);

err = ablkcipher_get(saddr, &t->length, t->offset,
dst, nbytes, &nbytes);


2007-10-26 12:23:50

by Evgeniy Polyakov

[permalink] [raw]
Subject: Re: [CRYPTO] hifn_795x: Update for new scatterlist API

Hi Herbert.

On Fri, Oct 26, 2007 at 08:10:41PM +0800, Herbert Xu ([email protected]) wrote:
> Hi Evgeniy:
>
> I've updated the HIFN driver to work with the new scatterlist
> API. Please have a look to see if I've done anything stupid.

Using some script I think, since it also updated debug text :)
That does not matter though, so this looks ok.

Thanks Herbert.

--
Evgeniy Polyakov