summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2018-03-09 05:54:52 +0300
committerDavid S. Miller <davem@davemloft.net>2018-03-09 05:54:52 +0300
commit9b5d5f4f96c795830a6820f8356b2980ffeb47b9 (patch)
tree8d7976516e62f9864b4040e70f142b59322b55b4 /include/linux
parent571e6776add4f499661e761e03e46ec0f6d66243 (diff)
parent42356d9a137bc83268e3988e9f1fdd48dbeef2ef (diff)
downloadlinux-9b5d5f4f96c795830a6820f8356b2980ffeb47b9.tar.xz
Merge branch 'ntuple-filters-with-RSS'
Edward Cree says: ==================== ntuple filters with RSS This series introduces the ability to mark an ethtool steering filter to use RSS spreading, and the ability to create and configure multiple RSS contexts with different indirection tables, hash keys, and hash fields. An implementation for the sfc driver (for 7000-series and later SFC NICs) is included in patch 2/2. The anticipated use case of this feature is for steering traffic destined for a container (or virtual machine) to the subset of CPUs on which processes in the container (or the VM's vCPUs) are bound, while retaining the scalability of RSS spreading from the viewpoint inside the container. The use of both a base queue number (ring_cookie) and indirection table is intended to allow re-use of a single RSS context to target multiple sets of CPUs. For instance, if an 8-core system is hosting three containers on CPUs [1,2], [3,4] and [6,7], then a single RSS context with an equal-weight [0,1] indirection table could be used to target all three containers by setting ring_cookie to 1, 3 and 6 on the respective filters. v2: Initialised ctx in efx_ef10_filter_insert() to avoid (false positive) gcc warning. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/ethtool.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h
index 2ec41a7eb54f..ebe41811ed34 100644
--- a/include/linux/ethtool.h
+++ b/include/linux/ethtool.h
@@ -371,6 +371,11 @@ struct ethtool_ops {
u8 *hfunc);
int (*set_rxfh)(struct net_device *, const u32 *indir,
const u8 *key, const u8 hfunc);
+ int (*get_rxfh_context)(struct net_device *, u32 *indir, u8 *key,
+ u8 *hfunc, u32 rss_context);
+ int (*set_rxfh_context)(struct net_device *, const u32 *indir,
+ const u8 *key, const u8 hfunc,
+ u32 *rss_context, bool delete);
void (*get_channels)(struct net_device *, struct ethtool_channels *);
int (*set_channels)(struct net_device *, struct ethtool_channels *);
int (*get_dump_flag)(struct net_device *, struct ethtool_dump *);