can: gw: support modification of Classical CAN DLCs
Subsystems (2)
Oliver Hartkopp
maintainerPATCH 1/1 can: gw: support modification of Classical CAN DLCs
Add support for data length code modifications for Classical CAN.
The netlink configuration interface always allowed to pass any value that fits into a byte, therefore only the modification process had to be extended to handle the raw DLC represenation of Classical CAN frames.
When a DLC value from 0 .. F is provided for Classical CAN frame modifications the 'len' value is modified as-is with the exception that potentially existing 9 .. F DLC values in the len8_dlc element are moved to the 'len' element for the modification operation by mod_retrieve_ccdlc().
After the modification the Classical CAN frame DLC information is brought back into the correct format by mod_store_ccdlc() which is filling 'len' and 'len8_dlc' accordingly.
--- include/uapi/linux/can/gw.h | 4 +- net/can/gw.c | 79 +++++++++++++++++++++++++++++++++---- 2 files changed, 73 insertions(+), 10 deletions(-)
include/uapi/linux/can/gw.h +2 -2
@@ -96,12 +96,12 @@ enum {#define CGW_MOD_FUNCS 4/* AND OR XOR SET */ /* CAN frame elements that are affected by curr. 3 CAN frame modifications */ #define CGW_MOD_ID 0x01 -#define CGW_MOD_DLC 0x02/* contains the data length in bytes */ -#define CGW_MOD_LEN CGW_MOD_DLC/* CAN FD length representation */ +#define CGW_MOD_DLC 0x02/* Classical CAN data length code */ +#define CGW_MOD_LEN CGW_MOD_DLC/* CAN FD (plain) data length */ #define CGW_MOD_DATA 0x04#define CGW_MOD_FLAGS 0x08/* CAN FD flags */ #define CGW_FRAME_MODS 4/* ID DLC/LEN DATA FLAGS */
net/can/gw.c +71 -8
129 lines not on this page · raw message
Signature · 1 line
2.29.2