mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-13 23:34:05 +08:00
filter: add SKF_AD_RXHASH and SKF_AD_CPU
Add SKF_AD_RXHASH and SKF_AD_CPU to filter ancillary mechanism, to be able to build advanced filters. This can help spreading packets on several sockets with a fast selection, after RPS dispatch to N cpus for example, or to catch a percentage of flows in one queue. tcpdump -s 500 "cpu = 1" : [0] ld CPU [1] jeq #1 jt 2 jf 3 [2] ret #500 [3] ret #0 # take 12.5 % of flows (average) tcpdump -s 1000 "rxhash & 7 = 2" : [0] ld RXHASH [1] and #7 [2] jeq #2 jt 3 jf 4 [3] ret #1000 [4] ret #0 Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Cc: Rui <wirelesser@gmail.com> Acked-by: Changli Gao <xiaosuo@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
539995d186
commit
da2033c282
@ -124,7 +124,9 @@ struct sock_fprog { /* Required for SO_ATTACH_FILTER. */
|
|||||||
#define SKF_AD_MARK 20
|
#define SKF_AD_MARK 20
|
||||||
#define SKF_AD_QUEUE 24
|
#define SKF_AD_QUEUE 24
|
||||||
#define SKF_AD_HATYPE 28
|
#define SKF_AD_HATYPE 28
|
||||||
#define SKF_AD_MAX 32
|
#define SKF_AD_RXHASH 32
|
||||||
|
#define SKF_AD_CPU 36
|
||||||
|
#define SKF_AD_MAX 40
|
||||||
#define SKF_NET_OFF (-0x100000)
|
#define SKF_NET_OFF (-0x100000)
|
||||||
#define SKF_LL_OFF (-0x200000)
|
#define SKF_LL_OFF (-0x200000)
|
||||||
|
|
||||||
|
@ -375,6 +375,12 @@ load_b:
|
|||||||
return 0;
|
return 0;
|
||||||
A = skb->dev->type;
|
A = skb->dev->type;
|
||||||
continue;
|
continue;
|
||||||
|
case SKF_AD_RXHASH:
|
||||||
|
A = skb->rxhash;
|
||||||
|
continue;
|
||||||
|
case SKF_AD_CPU:
|
||||||
|
A = raw_smp_processor_id();
|
||||||
|
continue;
|
||||||
case SKF_AD_NLATTR: {
|
case SKF_AD_NLATTR: {
|
||||||
struct nlattr *nla;
|
struct nlattr *nla;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user