crypto: chelsio - calculating tx_channel_id as per the max number of channels
authorAyush Sawal <ayush.sawal@chelsio.com>
Fri, 13 Dec 2019 11:38:52 +0000 (17:08 +0530)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 20 Dec 2019 06:58:35 +0000 (14:58 +0800)
chcr driver was not using the number of channels from lld and
assuming that there are always two channels available. With following
patch chcr will use number of channel as passed by cxgb4.

Signed-off-by: Ayush Sawal <ayush.sawal@chelsio.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/chelsio/chcr_algo.c

index 1b4a5664e6040c811a0ef31f833c4fccc98c954c..586dbc69d0cd635b13cd1aabb785837b8e9b50bf 100644 (file)
@@ -1379,7 +1379,8 @@ static int chcr_device_init(struct chcr_context *ctx)
                txq_perchan = ntxq / u_ctx->lldi.nchan;
                spin_lock(&ctx->dev->lock_chcr_dev);
                ctx->tx_chan_id = ctx->dev->tx_channel_id;
-               ctx->dev->tx_channel_id = !ctx->dev->tx_channel_id;
+               ctx->dev->tx_channel_id =
+                       (ctx->dev->tx_channel_id + 1) %  u_ctx->lldi.nchan;
                spin_unlock(&ctx->dev->lock_chcr_dev);
                rxq_idx = ctx->tx_chan_id * rxq_perchan;
                rxq_idx += id % rxq_perchan;