summaryrefslogtreecommitdiff
path: root/drivers/net/netdevsim/psp.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/netdevsim/psp.c')
-rw-r--r--drivers/net/netdevsim/psp.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/drivers/net/netdevsim/psp.c b/drivers/net/netdevsim/psp.c
index c6000ebc6bc8..c6c1acaa99a3 100644
--- a/drivers/net/netdevsim/psp.c
+++ b/drivers/net/netdevsim/psp.c
@@ -22,6 +22,7 @@ nsim_do_psp(struct sk_buff *skb, struct netdevsim *ns,
struct psp_dev *peer_psd;
struct psp_assoc *pas;
struct net *net;
+ int psp_len;
void **ptr;
rcu_read_lock();
@@ -48,6 +49,12 @@ nsim_do_psp(struct sk_buff *skb, struct netdevsim *ns,
goto out_unlock;
}
+ psp_len = skb->len - skb_inner_transport_offset(skb);
+ u64_stats_update_begin(&ns->psp.syncp);
+ u64_stats_inc(&ns->psp.tx_packets);
+ u64_stats_add(&ns->psp.tx_bytes, psp_len);
+ u64_stats_update_end(&ns->psp.syncp);
+
/* Now pretend we just received this frame */
peer_psd = rcu_dereference(peer_ns->psp.dev);
if (peer_psd && peer_psd->config.versions & (1 << pas->version)) {
@@ -72,14 +79,10 @@ nsim_do_psp(struct sk_buff *skb, struct netdevsim *ns,
refcount_inc(&(*psp_ext)->refcnt);
skb->decrypted = 1;
- u64_stats_update_begin(&ns->psp.syncp);
- u64_stats_inc(&ns->psp.tx_packets);
- u64_stats_inc(&ns->psp.rx_packets);
- u64_stats_add(&ns->psp.tx_bytes,
- skb->len - skb_inner_transport_offset(skb));
- u64_stats_add(&ns->psp.rx_bytes,
- skb->len - skb_inner_transport_offset(skb));
- u64_stats_update_end(&ns->psp.syncp);
+ u64_stats_update_begin(&peer_ns->psp.syncp);
+ u64_stats_inc(&peer_ns->psp.rx_packets);
+ u64_stats_add(&peer_ns->psp.rx_bytes, psp_len);
+ u64_stats_update_end(&peer_ns->psp.syncp);
} else {
struct ipv6hdr *ip6h __maybe_unused;
struct iphdr *iph;