cn10k-ipsec: Allow ipsec crypto offload for skb with SA
Allow to use hardware offload for outbound ipsec crypto mode if security association (SA) is set for a given skb. Signed-off-by: Bharat Bhushan <bbhushan2@marvell.com> Signed-off-by: David S. Miller <davem@davemloft.net>pull/1131/head
parent
6a77a15884
commit
32188be805
|
|
@ -746,9 +746,24 @@ static void cn10k_ipsec_del_state(struct xfrm_state *x)
|
||||||
queue_work(pf->ipsec.sa_workq, &pf->ipsec.sa_work);
|
queue_work(pf->ipsec.sa_workq, &pf->ipsec.sa_work);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool cn10k_ipsec_offload_ok(struct sk_buff *skb, struct xfrm_state *x)
|
||||||
|
{
|
||||||
|
if (x->props.family == AF_INET) {
|
||||||
|
/* Offload with IPv4 options is not supported yet */
|
||||||
|
if (ip_hdr(skb)->ihl > 5)
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
/* Offload with IPv6 extension headers is not support yet */
|
||||||
|
if (ipv6_ext_hdr(ipv6_hdr(skb)->nexthdr))
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
static const struct xfrmdev_ops cn10k_ipsec_xfrmdev_ops = {
|
static const struct xfrmdev_ops cn10k_ipsec_xfrmdev_ops = {
|
||||||
.xdo_dev_state_add = cn10k_ipsec_add_state,
|
.xdo_dev_state_add = cn10k_ipsec_add_state,
|
||||||
.xdo_dev_state_delete = cn10k_ipsec_del_state,
|
.xdo_dev_state_delete = cn10k_ipsec_del_state,
|
||||||
|
.xdo_dev_offload_ok = cn10k_ipsec_offload_ok,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void cn10k_ipsec_sa_wq_handler(struct work_struct *work)
|
static void cn10k_ipsec_sa_wq_handler(struct work_struct *work)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue