From 655df688f8faa448c152c12139e336a3471b174a Mon Sep 17 00:00:00 2001 From: Mariusz Drost Date: Wed, 26 Jun 2019 15:26:16 +0200 Subject: [PATCH] net/ixgbe: fix IP type for crypto session When ixgbe_crypto_add_sa() is called, it checks whether the ip type is IPv6 or IPv4 to write correct addresses to the registers. Type itself is never specified, and act as IPv4, which is the default value. It causes lack of support for IPv6. To fix that, ip type needs to be stored in device private data, based on crypto session ip type field, before the checking is done. Fixes: ec17993a145a ("examples/ipsec-secgw: support security offload") Fixes: 9a0752f498d2 ("net/ixgbe: enable inline IPsec") Cc: stable@dpdk.org Signed-off-by: Mariusz Drost Acked-by: Konstantin Ananyev Tested-by: Konstantin Ananyev --- drivers/net/ixgbe/ixgbe_ipsec.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/net/ixgbe/ixgbe_ipsec.c b/drivers/net/ixgbe/ixgbe_ipsec.c index 5a416885f8..1eea707161 100644 --- a/drivers/net/ixgbe/ixgbe_ipsec.c +++ b/drivers/net/ixgbe/ixgbe_ipsec.c @@ -154,8 +154,12 @@ ixgbe_crypto_add_sa(struct ixgbe_crypto_session *ic_session) if (ic_session->op == IXGBE_OP_AUTHENTICATED_DECRYPTION) priv->rx_sa_tbl[sa_index].mode |= (IPSRXMOD_PROTO | IPSRXMOD_DECRYPT); - if (ic_session->dst_ip.type == IPv6) + if (ic_session->dst_ip.type == IPv6) { priv->rx_sa_tbl[sa_index].mode |= IPSRXMOD_IPV6; + priv->rx_ip_tbl[ip_index].ip.type = IPv6; + } else if (ic_session->dst_ip.type == IPv4) + priv->rx_ip_tbl[ip_index].ip.type = IPv4; + priv->rx_sa_tbl[sa_index].used = 1; /* write IP table entry*/ -- 2.20.1