ptp: Add generic PTP is_sync() function
PHY drivers such as micrel or dp83640 need to analyze whether a given skb is a PTP sync message for one step functionality. In order to avoid code duplication introduce a generic function and move it to ptp classify. Signed-off-by: Kurt Kanzenbach <kurt@linutronix.de> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
669b258a79
Коммит
f72de02ebe
|
@ -126,6 +126,17 @@ static inline u8 ptp_get_msgtype(const struct ptp_header *hdr,
|
||||||
return msgtype;
|
return msgtype;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ptp_msg_is_sync - Evaluates whether the given skb is a PTP Sync message
|
||||||
|
* @skb: packet buffer
|
||||||
|
* @type: type of the packet (see ptp_classify_raw())
|
||||||
|
*
|
||||||
|
* This function evaluates whether the given skb is a PTP Sync message.
|
||||||
|
*
|
||||||
|
* Return: true if sync message, false otherwise
|
||||||
|
*/
|
||||||
|
bool ptp_msg_is_sync(struct sk_buff *skb, unsigned int type);
|
||||||
|
|
||||||
void __init ptp_classifier_init(void);
|
void __init ptp_classifier_init(void);
|
||||||
#else
|
#else
|
||||||
static inline void ptp_classifier_init(void)
|
static inline void ptp_classifier_init(void)
|
||||||
|
@ -148,5 +159,9 @@ static inline u8 ptp_get_msgtype(const struct ptp_header *hdr,
|
||||||
*/
|
*/
|
||||||
return PTP_MSGTYPE_SYNC;
|
return PTP_MSGTYPE_SYNC;
|
||||||
}
|
}
|
||||||
|
static inline bool ptp_msg_is_sync(struct sk_buff *skb, unsigned int type)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif /* _PTP_CLASSIFY_H_ */
|
#endif /* _PTP_CLASSIFY_H_ */
|
||||||
|
|
|
@ -137,6 +137,18 @@ struct ptp_header *ptp_parse_header(struct sk_buff *skb, unsigned int type)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(ptp_parse_header);
|
EXPORT_SYMBOL_GPL(ptp_parse_header);
|
||||||
|
|
||||||
|
bool ptp_msg_is_sync(struct sk_buff *skb, unsigned int type)
|
||||||
|
{
|
||||||
|
struct ptp_header *hdr;
|
||||||
|
|
||||||
|
hdr = ptp_parse_header(skb, type);
|
||||||
|
if (!hdr)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return ptp_get_msgtype(hdr, type) == PTP_MSGTYPE_SYNC;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(ptp_msg_is_sync);
|
||||||
|
|
||||||
void __init ptp_classifier_init(void)
|
void __init ptp_classifier_init(void)
|
||||||
{
|
{
|
||||||
static struct sock_filter ptp_filter[] __initdata = {
|
static struct sock_filter ptp_filter[] __initdata = {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче