[3/7] examples/ipsec-secgw: add support for TSO
Checks
Commit Message
Add support to allow user to specific MSS for TSO offload on a per SA
basis. MSS configuration in the context of IPsec is only supported for
outbound SA's in the context of an inline IPsec Crypto offload.
Signed-off-by: Declan Doherty <declan.doherty@intel.com>
Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
---
examples/ipsec-secgw/ipsec.h | 1 +
examples/ipsec-secgw/sa.c | 15 +++++++++++++++
2 files changed, 16 insertions(+)
Comments
> Add support to allow user to specific MSS for TSO offload on a per SA
Spell check 'specify'
> basis. MSS configuration in the context of IPsec is only supported for
> outbound SA's in the context of an inline IPsec Crypto offload.
>
> Signed-off-by: Declan Doherty <declan.doherty@intel.com>
> Signed-off-by: Radu Nicolau <radu.nicolau@intel.com>
> ---
> examples/ipsec-secgw/ipsec.h | 1 +
> examples/ipsec-secgw/sa.c | 15 +++++++++++++++
No update for the new mss option in the documentation of the app
Please also update description to explain the new option.
> 2 files changed, 16 insertions(+)
>
> diff --git a/examples/ipsec-secgw/ipsec.h b/examples/ipsec-secgw/ipsec.h
> index b496b4a936..7ba29406bf 100644
> --- a/examples/ipsec-secgw/ipsec.h
> +++ b/examples/ipsec-secgw/ipsec.h
> @@ -143,6 +143,7 @@ struct ipsec_sa {
> enum rte_security_ipsec_sa_direction direction;
> uint8_t udp_encap;
> uint16_t portid;
> + uint16_t mss;
> uint8_t fdir_qid;
> uint8_t fdir_flag;
>
> diff --git a/examples/ipsec-secgw/sa.c b/examples/ipsec-secgw/sa.c
> index d5943f8cdc..bc83e4bccc 100644
> --- a/examples/ipsec-secgw/sa.c
> +++ b/examples/ipsec-secgw/sa.c
> @@ -695,6 +695,16 @@ parse_sa_tokens(char **tokens, uint32_t n_tokens,
> continue;
> }
>
> + if (strcmp(tokens[ti], "mss") == 0) {
> + INCREMENT_TOKEN_INDEX(ti, n_tokens, status);
> + if (status->status < 0)
> + return;
> + rule->mss = atoi(tokens[ti]);
> + if (status->status < 0)
> + return;
> + continue;
> + }
> +
> if (strcmp(tokens[ti], "fallback") == 0) {
> struct rte_ipsec_session *fb;
>
> @@ -1366,6 +1376,11 @@ fill_ipsec_sa_prm(struct rte_ipsec_sa_prm *prm,
> const struct ipsec_sa *ss,
> prm->ipsec_xform.options.ecn = 1;
> prm->ipsec_xform.options.copy_dscp = 1;
>
> + if (ss->mss > 0) {
> + prm->ipsec_xform.options.tso = 1;
> + prm->ipsec_xform.mss = ss->mss;
> + }
> +
> if (IS_TRANSPORT(ss->flags)) {
> /* transport mode */
> prm->trs.proto = rc;
> --
> 2.25.1
@@ -143,6 +143,7 @@ struct ipsec_sa {
enum rte_security_ipsec_sa_direction direction;
uint8_t udp_encap;
uint16_t portid;
+ uint16_t mss;
uint8_t fdir_qid;
uint8_t fdir_flag;
@@ -695,6 +695,16 @@ parse_sa_tokens(char **tokens, uint32_t n_tokens,
continue;
}
+ if (strcmp(tokens[ti], "mss") == 0) {
+ INCREMENT_TOKEN_INDEX(ti, n_tokens, status);
+ if (status->status < 0)
+ return;
+ rule->mss = atoi(tokens[ti]);
+ if (status->status < 0)
+ return;
+ continue;
+ }
+
if (strcmp(tokens[ti], "fallback") == 0) {
struct rte_ipsec_session *fb;
@@ -1366,6 +1376,11 @@ fill_ipsec_sa_prm(struct rte_ipsec_sa_prm *prm, const struct ipsec_sa *ss,
prm->ipsec_xform.options.ecn = 1;
prm->ipsec_xform.options.copy_dscp = 1;
+ if (ss->mss > 0) {
+ prm->ipsec_xform.options.tso = 1;
+ prm->ipsec_xform.mss = ss->mss;
+ }
+
if (IS_TRANSPORT(ss->flags)) {
/* transport mode */
prm->trs.proto = rc;