crypto/scheduler: fix session backup
[dpdk.git] / drivers / crypto / scheduler / scheduler_roundrobin.c
index 7abdd29..9545aa9 100644 (file)
@@ -90,6 +90,7 @@ schedule_enqueue(void *qp_ctx, struct rte_crypto_op **ops, uint16_t nb_ops)
        for (; i < nb_ops; i++) {
                sess0 = (struct scheduler_session *)
                                ops[i]->sym->session->_private;
+               sessions[i] = ops[i]->sym->session;
                ops[i]->sym->session = sess0->sessions[slave_idx];
        }
 
@@ -168,6 +169,7 @@ schedule_enqueue_ordering(void *qp_ctx, struct rte_crypto_op **ops,
        for (; i < nb_ops; i++) {
                sess0 = (struct scheduler_session *)
                                ops[i]->sym->session->_private;
+               sessions[i] = ops[i]->sym->session;
                ops[i]->sym->session = sess0->sessions[slave_idx];
                ops[i]->sym->m_src->seqn = gen_qp_ctx->seqn++;
        }
@@ -350,7 +352,6 @@ static int
 scheduler_start(struct rte_cryptodev *dev)
 {
        struct scheduler_ctx *sched_ctx = dev->data->dev_private;
-
        uint16_t i;
 
        for (i = 0; i < dev->data->nb_queue_pairs; i++) {
@@ -358,14 +359,13 @@ scheduler_start(struct rte_cryptodev *dev)
                struct rr_scheduler_qp_ctx *rr_qp_ctx =
                                qp_ctx->private_qp_ctx;
                uint32_t j;
-               uint16_t qp_id = rr_qp_ctx->slaves[0].qp_id;
 
                memset(rr_qp_ctx->slaves, 0, MAX_SLAVES_NUM *
                                sizeof(struct scheduler_slave));
                for (j = 0; j < sched_ctx->nb_slaves; j++) {
                        rr_qp_ctx->slaves[j].dev_id =
-                                       sched_ctx->slaves[i].dev_id;
-                       rr_qp_ctx->slaves[j].qp_id = qp_id;
+                                       sched_ctx->slaves[j].dev_id;
+                       rr_qp_ctx->slaves[j].qp_id = i;
                }
 
                rr_qp_ctx->nb_slaves = sched_ctx->nb_slaves;