mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-23 07:01:23 +00:00
rps: Inspect PPTP encapsulated by GRE to get flow hash
The PPTP is encapsulated by GRE header with that GRE_VERSION bits must contain one. But current GRE RPS needs the GRE_VERSION must be zero. So RPS does not work for PPTP traffic. In my test environment, there are four MIPS cores, and all traffic are passed through by PPTP. As a result, only one core is 100% busy while other three cores are very idle. After this patch, the usage of four cores are balanced well. Signed-off-by: Gao Feng <fgao@ikuai8.com> Reviewed-by: Philip Prindeville <philipp@redfish-solutions.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
084c9535aa
commit
ab10dccb11
5 changed files with 133 additions and 69 deletions
40
include/net/pptp.h
Normal file
40
include/net/pptp.h
Normal file
|
@ -0,0 +1,40 @@
|
|||
#ifndef _NET_PPTP_H
|
||||
#define _NET_PPTP_H
|
||||
|
||||
#define PPP_LCP_ECHOREQ 0x09
|
||||
#define PPP_LCP_ECHOREP 0x0A
|
||||
#define SC_RCV_BITS (SC_RCV_B7_1|SC_RCV_B7_0|SC_RCV_ODDP|SC_RCV_EVNP)
|
||||
|
||||
#define MISSING_WINDOW 20
|
||||
#define WRAPPED(curseq, lastseq)\
|
||||
((((curseq) & 0xffffff00) == 0) &&\
|
||||
(((lastseq) & 0xffffff00) == 0xffffff00))
|
||||
|
||||
#define PPTP_GRE_PROTO 0x880B
|
||||
#define PPTP_GRE_VER 0x1
|
||||
|
||||
#define PPTP_GRE_FLAG_C 0x80
|
||||
#define PPTP_GRE_FLAG_R 0x40
|
||||
#define PPTP_GRE_FLAG_K 0x20
|
||||
#define PPTP_GRE_FLAG_S 0x10
|
||||
#define PPTP_GRE_FLAG_A 0x80
|
||||
|
||||
#define PPTP_GRE_IS_C(f) ((f)&PPTP_GRE_FLAG_C)
|
||||
#define PPTP_GRE_IS_R(f) ((f)&PPTP_GRE_FLAG_R)
|
||||
#define PPTP_GRE_IS_K(f) ((f)&PPTP_GRE_FLAG_K)
|
||||
#define PPTP_GRE_IS_S(f) ((f)&PPTP_GRE_FLAG_S)
|
||||
#define PPTP_GRE_IS_A(f) ((f)&PPTP_GRE_FLAG_A)
|
||||
|
||||
#define PPTP_HEADER_OVERHEAD (2+sizeof(struct pptp_gre_header))
|
||||
struct pptp_gre_header {
|
||||
u8 flags;
|
||||
u8 ver;
|
||||
__be16 protocol;
|
||||
__be16 payload_len;
|
||||
__be16 call_id;
|
||||
__be32 seq;
|
||||
__be32 ack;
|
||||
} __packed;
|
||||
|
||||
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue