common/cnxk: enable L3 header write back in SA
[dpdk.git] / drivers / common / cnxk / roc_ie_ot.c
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(C) 2022 Marvell.
3  */
4
5 #include "roc_api.h"
6 #include "roc_priv.h"
7
8 void
9 roc_ot_ipsec_inb_sa_init(struct roc_ot_ipsec_inb_sa *sa, bool is_inline)
10 {
11         size_t offset;
12
13         memset(sa, 0, sizeof(struct roc_ot_ipsec_inb_sa));
14
15         if (is_inline) {
16                 sa->w0.s.pkt_output = ROC_IE_OT_SA_PKT_OUTPUT_NO_FRAG;
17                 sa->w0.s.pkt_format = ROC_IE_OT_SA_PKT_FMT_META;
18                 sa->w0.s.pkind = ROC_IE_OT_CPT_PKIND;
19                 sa->w0.s.et_ovrwr = 1;
20                 sa->w2.s.l3hdr_on_err = 1;
21         }
22
23         offset = offsetof(struct roc_ot_ipsec_inb_sa, ctx);
24         sa->w0.s.hw_ctx_off = offset / ROC_CTX_UNIT_8B;
25         sa->w0.s.ctx_push_size = sa->w0.s.hw_ctx_off + 1;
26         sa->w0.s.ctx_size = ROC_IE_OT_CTX_ILEN;
27         sa->w0.s.ctx_hdr_size = ROC_IE_OT_SA_CTX_HDR_SIZE;
28         sa->w0.s.aop_valid = 1;
29 }
30
31 void
32 roc_ot_ipsec_outb_sa_init(struct roc_ot_ipsec_outb_sa *sa)
33 {
34         size_t offset;
35
36         memset(sa, 0, sizeof(struct roc_ot_ipsec_outb_sa));
37
38         offset = offsetof(struct roc_ot_ipsec_outb_sa, ctx);
39         sa->w0.s.ctx_push_size = (offset / ROC_CTX_UNIT_8B) + 1;
40         sa->w0.s.ctx_size = ROC_IE_OT_CTX_ILEN;
41         sa->w0.s.aop_valid = 1;
42 }