xfrm: copy_to_user_state fetch offloaded SA packets/bytes statistics
authorRaed Salem <raeds@nvidia.com>
Tue, 14 Mar 2023 08:58:40 +0000 (10:58 +0200)
committerLeon Romanovsky <leon@kernel.org>
Mon, 20 Mar 2023 09:29:37 +0000 (11:29 +0200)
Both in RX and TX, the traffic that performs IPsec packet offload
transformation is accounted by HW only. Consequently, the HW should
be queried for packets/bytes statistics when user asks for such
transformation data.

Signed-off-by: Raed Salem <raeds@nvidia.com>
Link: https://lore.kernel.org/r/d90ec74186452b1509ee94875d942cb777b7181e.1678714336.git.leon@kernel.org
Acked-by: Steffen Klassert <steffen.klassert@secunet.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
net/xfrm/xfrm_user.c

index cf5172d..5eee905 100644 (file)
@@ -901,6 +901,8 @@ static void copy_to_user_state(struct xfrm_state *x, struct xfrm_usersa_info *p)
        memcpy(&p->id, &x->id, sizeof(p->id));
        memcpy(&p->sel, &x->sel, sizeof(p->sel));
        memcpy(&p->lft, &x->lft, sizeof(p->lft));
+       if (x->xso.dev)
+               xfrm_dev_state_update_curlft(x);
        memcpy(&p->curlft, &x->curlft, sizeof(p->curlft));
        put_unaligned(x->stats.replay_window, &p->stats.replay_window);
        put_unaligned(x->stats.replay, &p->stats.replay);