This patch series implements support for Tx queue selection based on
Rx queue(s) map. This is done by configuring Rx queue(s) map per Tx-queue
using sysfs attribute. If the user configuration for Rx queues does
not apply, then the Tx queue selection falls back to XPS using CPUs and
finally to hashing.

XPS is refactored to support Tx queue selection based on either the
CPUs map or the Rx-queues map. The config option CONFIG_XPS needs to be
enabled. By default no receive queues are configured for the Tx queue.

- /sys/class/net/<dev>/queues/tx-*/xps_rxqs

This is to enable sending packets on the same Tx-Rx queue pair as this
is useful for busy polling multi-threaded workloads where it is not
possible to pin the threads to a CPU. This is a rework of Sridhar's
patch for symmetric queueing via socket option:
https://www.spinics.net/lists/netdev/msg453106.html

v2:
- Added documentation in networking/scaling.txt
- Added a simple routine to replace multiple ifdef blocks.

---

Amritha Nambiar (4):
      net: Refactor XPS for CPUs and Rx queues
      net: Enable Tx queue selection based on Rx queues
      net-sysfs: Add interface for Rx queue map per Tx queue
      Documentation: Add explanation for XPS using Rx-queue map


 Documentation/networking/scaling.txt |   58 +++++++-
 include/linux/cpumask.h              |   11 +-
 include/linux/netdevice.h            |   72 ++++++++++
 include/net/sock.h                   |   18 +++
 net/core/dev.c                       |  242 +++++++++++++++++++++++-----------
 net/core/net-sysfs.c                 |   85 ++++++++++++
 net/core/sock.c                      |    5 +
 net/ipv4/tcp_input.c                 |    7 +
 net/ipv4/tcp_ipv4.c                  |    1 
 net/ipv4/tcp_minisocks.c             |    1 
 10 files changed, 404 insertions(+), 96 deletions(-)

--

Reply via email to