forked from openbmc/linux
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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>
- Loading branch information
Showing
5 changed files
with
135 additions
and
71 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters