Commit 68db604e authored by Hangbin Liu's avatar Hangbin Liu Committed by Paolo Abeni

bonding: support xfrm state update

The patch add xfrm statistics update for bonding IPsec offload.
Reviewed-by: default avatarNikolay Aleksandrov <razor@blackwall.org>
Acked-by: default avatarJay Vosburgh <jv@jvosburgh.net>
Signed-off-by: default avatarHangbin Liu <liuhangbin@gmail.com>
Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent 96d30bf9
...@@ -718,12 +718,37 @@ static void bond_advance_esn_state(struct xfrm_state *xs) ...@@ -718,12 +718,37 @@ static void bond_advance_esn_state(struct xfrm_state *xs)
rcu_read_unlock(); rcu_read_unlock();
} }
/**
* bond_xfrm_update_stats - Update xfrm state
* @xs: pointer to transformer state struct
**/
static void bond_xfrm_update_stats(struct xfrm_state *xs)
{
struct net_device *real_dev;
rcu_read_lock();
real_dev = bond_ipsec_dev(xs);
if (!real_dev)
goto out;
if (!real_dev->xfrmdev_ops ||
!real_dev->xfrmdev_ops->xdo_dev_state_update_stats) {
pr_warn_ratelimited("%s: %s doesn't support xdo_dev_state_update_stats\n", __func__, real_dev->name);
goto out;
}
real_dev->xfrmdev_ops->xdo_dev_state_update_stats(xs);
out:
rcu_read_unlock();
}
static const struct xfrmdev_ops bond_xfrmdev_ops = { static const struct xfrmdev_ops bond_xfrmdev_ops = {
.xdo_dev_state_add = bond_ipsec_add_sa, .xdo_dev_state_add = bond_ipsec_add_sa,
.xdo_dev_state_delete = bond_ipsec_del_sa, .xdo_dev_state_delete = bond_ipsec_del_sa,
.xdo_dev_state_free = bond_ipsec_free_sa, .xdo_dev_state_free = bond_ipsec_free_sa,
.xdo_dev_offload_ok = bond_ipsec_offload_ok, .xdo_dev_offload_ok = bond_ipsec_offload_ok,
.xdo_dev_state_advance_esn = bond_advance_esn_state, .xdo_dev_state_advance_esn = bond_advance_esn_state,
.xdo_dev_state_update_stats = bond_xfrm_update_stats,
}; };
#endif /* CONFIG_XFRM_OFFLOAD */ #endif /* CONFIG_XFRM_OFFLOAD */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment