On Thu, Jul 30, 2020 at 10:00:41AM +0200, Kurt Kanzenbach wrote: > 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 <k...@linutronix.de>
Reviewed-by: Richard Cochran <richardcoch...@gmail.com> CodingStyle nit below... > --- > include/linux/ptp_classify.h | 24 ++++++++++++++++++++++++ > 1 file changed, 24 insertions(+) > > diff --git a/include/linux/ptp_classify.h b/include/linux/ptp_classify.h > index 26fd38a4bd67..f4dd42fddc0c 100644 > --- a/include/linux/ptp_classify.h > +++ b/include/linux/ptp_classify.h > @@ -90,6 +90,30 @@ 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; With the comment, it looks like two statements, and so please use if (...) { /**/ ... } else { ... } here. > + else > + msgtype = hdr->tsmt & 0x0f; > + > + return msgtype; > +} > + > void __init ptp_classifier_init(void); > #else > static inline void ptp_classifier_init(void) > -- > 2.20.1 >