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:

committed by
David S. Miller

parent
e62d2df084
commit
164d8c6665
@@ -25,11 +25,17 @@
|
||||
|
||||
static struct sk_filter *ptp_insns __read_mostly;
|
||||
|
||||
unsigned int ptp_classify_raw(const struct sk_buff *skb)
|
||||
{
|
||||
return SK_RUN_FILTER(ptp_insns, skb);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(ptp_classify_raw);
|
||||
|
||||
static unsigned int classify(const struct sk_buff *skb)
|
||||
{
|
||||
if (likely(skb->dev && skb->dev->phydev &&
|
||||
skb->dev->phydev->drv))
|
||||
return SK_RUN_FILTER(ptp_insns, skb);
|
||||
return ptp_classify_raw(skb);
|
||||
else
|
||||
return PTP_CLASS_NONE;
|
||||
}
|
||||
|
Reference in New Issue
Block a user