The patch below converts the ixl(4) and ixlv(4) drivers to use the new
ifcounter interface.  I've hidden the interface behind some macros to
ensure that the driver continues to compile for FreeBSD 10 and
earlier.  The result of the macros is that the ifcounter
implementation is somewhat clunkier than I would have liked, but I
preferred to try and share as much code between the legacy counter
implementation and the ifcounter implementation.

I have tested the ixl driver with head.  I have only compile-tested it
for stable/10.

This patch also fixes some counter bugs:

- Ensure that tx discards are reported
- There are actually two types of rx discard counters in the hardware.
Currently the driver is only reporting discards from one of the two
counters, so I fixed that
- The ipackets and opackets counters were being unnecessarily
incremented in the rx and tx paths.  This was racy, unnecessary (the
counters also get explicitly set based on the values in HW counters)
and very bad for performance -- the cacheline contained the counters
was constantly bouncing between CPUs.  I saw this even with only one
queue active, probably due to false sharing with some other field in
the ifnet struct.

https://people.freebsd.org/~rstone/patches/ixl/0005-Convert-ixl-and-ixlv-drivers-to-use-new-ifcounter-in.patch
_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"

Reply via email to