Skip to content

Commit fd2bc41

Browse files
rleonSaeed Mahameed
authored andcommitted
xfrm: generalize xdo_dev_state_update_curlft to allow statistics update
In order to allow drivers to fill all statistics, change the name of xdo_dev_state_update_curlft to be xdo_dev_state_update_stats. Acked-by: Steffen Klassert <steffen.klassert@secunet.com> Signed-off-by: Leon Romanovsky <leonro@nvidia.com> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
1 parent 8ff25da commit fd2bc41

File tree

6 files changed

+14
-16
lines changed

6 files changed

+14
-16
lines changed

Documentation/networking/xfrm_device.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,9 @@ Callbacks to implement
7171
bool (*xdo_dev_offload_ok) (struct sk_buff *skb,
7272
struct xfrm_state *x);
7373
void (*xdo_dev_state_advance_esn) (struct xfrm_state *x);
74+
void (*xdo_dev_state_update_stats) (struct xfrm_state *x);
7475

7576
/* Solely packet offload callbacks */
76-
void (*xdo_dev_state_update_curlft) (struct xfrm_state *x);
7777
int (*xdo_dev_policy_add) (struct xfrm_policy *x, struct netlink_ext_ack *extack);
7878
void (*xdo_dev_policy_delete) (struct xfrm_policy *x);
7979
void (*xdo_dev_policy_free) (struct xfrm_policy *x);
@@ -191,6 +191,6 @@ xdo_dev_policy_free() on any remaining offloaded states.
191191

192192
Outcome of HW handling packets, the XFRM core can't count hard, soft limits.
193193
The HW/driver are responsible to perform it and provide accurate data when
194-
xdo_dev_state_update_curlft() is called. In case of one of these limits
194+
xdo_dev_state_update_stats() is called. In case of one of these limits
195195
occuried, the driver needs to call to xfrm_state_check_expire() to make sure
196196
that XFRM performs rekeying sequence.

drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -984,7 +984,7 @@ static void mlx5e_xfrm_advance_esn_state(struct xfrm_state *x)
984984
queue_work(sa_entry->ipsec->wq, &work->work);
985985
}
986986

987-
static void mlx5e_xfrm_update_curlft(struct xfrm_state *x)
987+
static void mlx5e_xfrm_update_stats(struct xfrm_state *x)
988988
{
989989
struct mlx5e_ipsec_sa_entry *sa_entry = to_ipsec_sa_entry(x);
990990
struct mlx5e_ipsec_rule *ipsec_rule = &sa_entry->ipsec_rule;
@@ -993,7 +993,8 @@ static void mlx5e_xfrm_update_curlft(struct xfrm_state *x)
993993
lockdep_assert(lockdep_is_held(&x->lock) ||
994994
lockdep_is_held(&dev_net(x->xso.real_dev)->xfrm.xfrm_cfg_mutex));
995995

996-
if (x->xso.flags & XFRM_DEV_OFFLOAD_FLAG_ACQ)
996+
if (x->xso.flags & XFRM_DEV_OFFLOAD_FLAG_ACQ ||
997+
x->xso.type != XFRM_DEV_OFFLOAD_PACKET)
997998
return;
998999

9991000
mlx5_fc_query_cached(ipsec_rule->fc, &bytes, &packets, &lastuse);
@@ -1156,7 +1157,7 @@ static const struct xfrmdev_ops mlx5e_ipsec_xfrmdev_ops = {
11561157
.xdo_dev_offload_ok = mlx5e_ipsec_offload_ok,
11571158
.xdo_dev_state_advance_esn = mlx5e_xfrm_advance_esn_state,
11581159

1159-
.xdo_dev_state_update_curlft = mlx5e_xfrm_update_curlft,
1160+
.xdo_dev_state_update_stats = mlx5e_xfrm_update_stats,
11601161
.xdo_dev_policy_add = mlx5e_xfrm_add_policy,
11611162
.xdo_dev_policy_delete = mlx5e_xfrm_del_policy,
11621163
.xdo_dev_policy_free = mlx5e_xfrm_free_policy,

include/linux/netdevice.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1062,7 +1062,7 @@ struct xfrmdev_ops {
10621062
bool (*xdo_dev_offload_ok) (struct sk_buff *skb,
10631063
struct xfrm_state *x);
10641064
void (*xdo_dev_state_advance_esn) (struct xfrm_state *x);
1065-
void (*xdo_dev_state_update_curlft) (struct xfrm_state *x);
1065+
void (*xdo_dev_state_update_stats) (struct xfrm_state *x);
10661066
int (*xdo_dev_policy_add) (struct xfrm_policy *x, struct netlink_ext_ack *extack);
10671067
void (*xdo_dev_policy_delete) (struct xfrm_policy *x);
10681068
void (*xdo_dev_policy_free) (struct xfrm_policy *x);

include/net/xfrm.h

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1578,21 +1578,18 @@ struct xfrm_state *xfrm_state_lookup_byspi(struct net *net, __be32 spi,
15781578
unsigned short family);
15791579
int xfrm_state_check_expire(struct xfrm_state *x);
15801580
#ifdef CONFIG_XFRM_OFFLOAD
1581-
static inline void xfrm_dev_state_update_curlft(struct xfrm_state *x)
1581+
static inline void xfrm_dev_state_update_stats(struct xfrm_state *x)
15821582
{
15831583
struct xfrm_dev_offload *xdo = &x->xso;
15841584
struct net_device *dev = xdo->dev;
15851585

1586-
if (x->xso.type != XFRM_DEV_OFFLOAD_PACKET)
1587-
return;
1588-
15891586
if (dev && dev->xfrmdev_ops &&
1590-
dev->xfrmdev_ops->xdo_dev_state_update_curlft)
1591-
dev->xfrmdev_ops->xdo_dev_state_update_curlft(x);
1587+
dev->xfrmdev_ops->xdo_dev_state_update_stats)
1588+
dev->xfrmdev_ops->xdo_dev_state_update_stats(x);
15921589

15931590
}
15941591
#else
1595-
static inline void xfrm_dev_state_update_curlft(struct xfrm_state *x) {}
1592+
static inline void xfrm_dev_state_update_stats(struct xfrm_state *x) {}
15961593
#endif
15971594
void xfrm_state_insert(struct xfrm_state *x);
15981595
int xfrm_state_add(struct xfrm_state *x);

net/xfrm/xfrm_state.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -570,7 +570,7 @@ static enum hrtimer_restart xfrm_timer_handler(struct hrtimer *me)
570570
int err = 0;
571571

572572
spin_lock(&x->lock);
573-
xfrm_dev_state_update_curlft(x);
573+
xfrm_dev_state_update_stats(x);
574574

575575
if (x->km.state == XFRM_STATE_DEAD)
576576
goto out;
@@ -1935,7 +1935,7 @@ EXPORT_SYMBOL(xfrm_state_update);
19351935

19361936
int xfrm_state_check_expire(struct xfrm_state *x)
19371937
{
1938-
xfrm_dev_state_update_curlft(x);
1938+
xfrm_dev_state_update_stats(x);
19391939

19401940
if (!READ_ONCE(x->curlft.use_time))
19411941
WRITE_ONCE(x->curlft.use_time, ktime_get_real_seconds());

net/xfrm/xfrm_user.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -902,7 +902,7 @@ static void copy_to_user_state(struct xfrm_state *x, struct xfrm_usersa_info *p)
902902
memcpy(&p->sel, &x->sel, sizeof(p->sel));
903903
memcpy(&p->lft, &x->lft, sizeof(p->lft));
904904
if (x->xso.dev)
905-
xfrm_dev_state_update_curlft(x);
905+
xfrm_dev_state_update_stats(x);
906906
memcpy(&p->curlft, &x->curlft, sizeof(p->curlft));
907907
put_unaligned(x->stats.replay_window, &p->stats.replay_window);
908908
put_unaligned(x->stats.replay, &p->stats.replay);

0 commit comments

Comments
 (0)