Message ID | 1415193393-30023-1-git-send-email-b29396@freescale.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Wed, 2014-11-05 at 21:16 +0800, Dong Aisheng wrote: > The CAN device drivers can use it to check if the frame to send is on > CAN FD mode or normal CAN mode. > > Acked-by: Oliver Hartkopp <socketcan@hartkopp.net> > Signed-off-by: Dong Aisheng <b29396@freescale.com> > --- > ChangesLog: > * v1->v2: change to skb->len == CANFD_MTU; > --- > include/linux/can/dev.h | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/include/linux/can/dev.h b/include/linux/can/dev.h > index 6992afc..4c3919c 100644 > --- a/include/linux/can/dev.h > +++ b/include/linux/can/dev.h > @@ -99,6 +99,11 @@ inval_skb: > return 1; > } > This looks a bit strange to assume that skb->len == magical_value is CAN FD. A comment would be nice. > +static inline int can_is_canfd_skb(struct sk_buff *skb) static inline bool can_is_canfd_skb(const struct sk_buff *skb) > +{ > + return skb->len == CANFD_MTU; > +} > + > /* get data length from can_dlc with sanitized can_dlc */ > u8 can_dlc2len(u8 can_dlc); >
On 05.11.2014 17:22, Eric Dumazet wrote: > On Wed, 2014-11-05 at 21:16 +0800, Dong Aisheng wrote: > > This looks a bit strange to assume that skb->len == magical_value is CAN > FD. A comment would be nice. > Yes. Due to exactly two types of struct can(fd)_frame which can be contained in a skb the skbs are distinguished by the length which can be either CAN_MTU or CANFD_MTU. >> +static inline int can_is_canfd_skb(struct sk_buff *skb) > > static inline bool can_is_canfd_skb(const struct sk_buff *skb) > ok. >> +{ What about: /* the CAN specific type of skb is identified by its data length */ >> + return skb->len == CANFD_MTU; >> +} >> + >> /* get data length from can_dlc with sanitized can_dlc */ >> u8 can_dlc2len(u8 can_dlc); Regards, Oliver
On Wed, Nov 05, 2014 at 06:33:09PM +0100, Oliver Hartkopp wrote: > On 05.11.2014 17:22, Eric Dumazet wrote: > >On Wed, 2014-11-05 at 21:16 +0800, Dong Aisheng wrote: > > > > >This looks a bit strange to assume that skb->len == magical_value is CAN > >FD. A comment would be nice. > > > > Yes. Due to exactly two types of struct can(fd)_frame which can be > contained in a skb the skbs are distinguished by the length which > can be either CAN_MTU or CANFD_MTU. > > >>+static inline int can_is_canfd_skb(struct sk_buff *skb) > > > >static inline bool can_is_canfd_skb(const struct sk_buff *skb) > > > > ok. > Got it. > >>+{ > > What about: > > /* the CAN specific type of skb is identified by its data length */ > Looks good to me. I will send a updated version with these changes. > >>+ return skb->len == CANFD_MTU; > >>+} > >>+ > >> /* get data length from can_dlc with sanitized can_dlc */ > >> u8 can_dlc2len(u8 can_dlc); > > Regards, > Oliver > Regards Dong Aisheng
diff --git a/include/linux/can/dev.h b/include/linux/can/dev.h index 6992afc..4c3919c 100644 --- a/include/linux/can/dev.h +++ b/include/linux/can/dev.h @@ -99,6 +99,11 @@ inval_skb: return 1; } +static inline int can_is_canfd_skb(struct sk_buff *skb) +{ + return skb->len == CANFD_MTU; +} + /* get data length from can_dlc with sanitized can_dlc */ u8 can_dlc2len(u8 can_dlc);