mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-27 09:02:06 +00:00
net: ptp: do not reimplement PTP/BPF classifier
There are currently pch_gbe, cpts, and ixp4xx_eth drivers that open-code and reimplement a BPF classifier for the PTP protocol. Since all of them effectively do the very same thing and load the very same PTP/BPF filter, we can just consolidate that code by introducing ptp_classify_raw() in the time-stamping core framework which can be used in drivers. As drivers get initialized after bootstrapping the core networking subsystem, they can make use of ptp_insns wrapped through ptp_classify_raw(), which allows to simplify and remove PTP classifier setup code in drivers. Joint work with Alexei Starovoitov. Signed-off-by: Daniel Borkmann <dborkman@redhat.com> Signed-off-by: Alexei Starovoitov <ast@plumgrid.com> Cc: Richard Cochran <richard.cochran@omicron.at> Cc: Jiri Benc <jbenc@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
e62d2df084
commit
164d8c6665
5 changed files with 12 additions and 38 deletions
|
@ -80,14 +80,6 @@
|
|||
#define OP_RETA (BPF_RET | BPF_A)
|
||||
#define OP_RETK (BPF_RET | BPF_K)
|
||||
|
||||
static inline int ptp_filter_init(struct sock_filter *f, int len)
|
||||
{
|
||||
if (OP_LDH == f[0].code)
|
||||
return sk_chk_filter(f, len);
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define PTP_FILTER \
|
||||
{OP_LDH, 0, 0, OFF_ETYPE }, /* */ \
|
||||
{OP_JEQ, 0, 12, ETH_P_IP }, /* f goto L20 */ \
|
||||
|
@ -133,4 +125,6 @@ static inline int ptp_filter_init(struct sock_filter *f, int len)
|
|||
{OP_RETA, 0, 0, 0 }, /* */ \
|
||||
/*L6x*/ {OP_RETK, 0, 0, PTP_CLASS_NONE },
|
||||
|
||||
unsigned int ptp_classify_raw(const struct sk_buff *skb);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue