Message ID | 20200730080048.32553-3-kurt@linutronix.de |
---|---|
State | Changes Requested |
Delegated to: | David Miller |
Headers | show |
Series | ptp: Add generic helper functions | expand |
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 <kurt@linutronix.de> Reviewed-by: Richard Cochran <richardcochran@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 >
On 7/30/2020 1:00 AM, 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 <kurt@linutronix.de> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
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; + else + msgtype = hdr->tsmt & 0x0f; + + return msgtype; +} + void __init ptp_classifier_init(void); #else static inline void ptp_classifier_init(void)
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> --- include/linux/ptp_classify.h | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+)