Skip to content

net: Convert some UDP tunnel drivers to NETDEV_PCPU_STAT_DSTATS.

Guillaume Nault netdev 2 versions – Applied

Status from this message: This series was applied to netdev/net-next.git (main)

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v2 Latest4 patches 0 repliesApplied 4/4
  2. v14 patches 4 repliesSuperseded

Changes in v2 from the cover letter

* Copy skb->len before calling is_ip_tx_frame() in vrf_xmit() (Jakub).

Patches in v2 All 4 applied

#Subject and filesSizeRepliesApplied
1/4vrf: Make pcpu_dstats update functions available to other modules.drivers/net/vrf.c include/linux/netdevice.h+54 -350 repliesApplied
2/4vxlan: Handle stats using NETDEV_PCPU_STAT_DSTATS.drivers/net/vxlan/vxlan_core.c+14 -140 repliesApplied
3/4geneve: Handle stats using NETDEV_PCPU_STAT_DSTATS.drivers/net/geneve.c+6 -60 repliesApplied
4/4bareudp: Handle stats using NETDEV_PCPU_STAT_DSTATS.drivers/net/bareudp.c+8 -80 repliesApplied

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v2 yet.

Read the v2 thread

Cover letter [PATCH net-next v2 0/4] net: Convert some UDP tunnel drivers to NETDEV_PCPU_STAT_DSTATS.

VXLAN, Geneve and Bareudp use various device counters for managing RX and TX statistics:

* VXLAN uses the device core_stats for RX and TX drops, tstats for regular RX/TX counters and DEV_STATS_INC() for various types of RX/TX errors.

* Geneve uses tstats for regular RX/TX counters and DEV_STATS_INC() for everything else, include RX/TX drops.

* Bareudp, was recently converted to follow VXLAN behaviour, that is, device core_stats for RX and TX drops, tstats for regular RX/TX counters and DEV_STATS_INC() for other counter types.

Let's consolidate statistics management around the dstats counters instead. This avoids using core_stats in VXLAN and Bareudp, as core_stats is supposed to be used by core networking code only (and not in drivers). This also allows Geneve to avoid using atomic increments when updating RX and TX drop counters, as dstats is per-cpu. Finally, this also simplifies the code as all three modules now handle stats in the same way and with only two different sets of counters (the per-cpu dstats and the atomic DEV_STATS_INC()).

Patch 1 creates dstats helper functions that can be used outside of VRF (until then, dstats was VRF-specific).
Then patches 2 to 4, convert VXLAN, Geneve and Bareudp, one by one.

v2:
* Copy skb->len before calling is_ip_tx_frame() in vrf_xmit() (Jakub).

Guillaume Nault (4):
vrf: Make pcpu_dstats update functions available to other modules.
vxlan: Handle stats using NETDEV_PCPU_STAT_DSTATS.
geneve: Handle stats using NETDEV_PCPU_STAT_DSTATS.
bareudp: Handle stats using NETDEV_PCPU_STAT_DSTATS.

 drivers/net/bareudp.c          | 16 +++++------
 drivers/net/geneve.c           | 12 ++++-----
 drivers/net/vrf.c              | 49 ++++++++++------------------------
 drivers/net/vxlan/vxlan_core.c | 28 +++++++++----------
 include/linux/netdevice.h      | 40 +++++++++++++++++++++++++++
 5 files changed, 82 insertions(+), 63 deletions(-)
Signature · 1 line
2.39.2