Skip to content

Commit

Permalink
ptp: Add generic ptp message type function
Browse files Browse the repository at this point in the history
The message type is located at different offsets within the ptp header depending
on the ptp version (v1 or v2). Therefore, drivers which also deal with ptp v1
have some code for it.

Extract this into a helper function for drivers to be used.

Signed-off-by: Kurt Kanzenbach <kurt@linutronix.de>
Reviewed-by: Richard Cochran <richardcochran@gmail.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Kurt Kanzenbach authored and David S. Miller committed Aug 19, 2020
1 parent bdfbb63 commit 036c508
Showing 1 changed file with 25 additions and 0 deletions.
25 changes: 25 additions & 0 deletions include/linux/ptp_classify.h
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,31 @@ unsigned int ptp_classify_raw(const struct sk_buff *skb);
*/
struct ptp_header *ptp_parse_header(struct sk_buff *skb, unsigned int type);

/**
* ptp_get_msgtype - Extract ptp message type from given header
* @hdr: ptp header
* @type: type of the packet (see ptp_classify_raw())
*
* This function returns the message type for a given ptp header. It takes care
* of the different ptp header versions (v1 or v2).
*
* Return: The message type
*/
static inline u8 ptp_get_msgtype(const struct ptp_header *hdr,
unsigned int type)
{
u8 msgtype;

if (unlikely(type & PTP_CLASS_V1)) {
/* msg type is located at the control field for ptp v1 */
msgtype = hdr->control;
} else {
msgtype = hdr->tsmt & 0x0f;
}

return msgtype;
}

void __init ptp_classifier_init(void);
#else
static inline void ptp_classifier_init(void)
Expand Down

0 comments on commit 036c508

Please sign in to comment.