summaryrefslogtreecommitdiff
path: root/drivers/net/can/usb/gs_usb.c
diff options
context:
space:
mode:
authorOliver Hartkopp <socketcan@hartkopp.net>2020-11-11 12:59:23 +0300
committerMarc Kleine-Budde <mkl@pengutronix.de>2020-11-20 14:05:14 +0300
commit4c01fc87675e6974d42383eba9a043123d8e13c3 (patch)
tree5e720f890a9f4fcbde754ba967facc101ba02857 /drivers/net/can/usb/gs_usb.c
parente8e73562ce0b24d691ad35df3de34b324248458f (diff)
downloadlinux-4c01fc87675e6974d42383eba9a043123d8e13c3.tar.xz
can: drivers: add len8_dlc support for various CAN adapters
Support the Classical CAN raw DLC functionality to send and receive DLC values from 9 .. 15 on various Classical CAN capable CAN network drivers: - sja1000 - gs_usb - pcan_usb - pcan_usb_fd - usb_8dev Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net> Tested-by: Oliver Hartkopp <socketcan@hartkopp.net> Link: https://lore.kernel.org/r/20201111095923.2535-1-socketcan@hartkopp.net [mkl: usb_8dev: changed indention] Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Diffstat (limited to 'drivers/net/can/usb/gs_usb.c')
-rw-r--r--drivers/net/can/usb/gs_usb.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/net/can/usb/gs_usb.c b/drivers/net/can/usb/gs_usb.c
index d6a68b7046eb..b3431c3feba1 100644
--- a/drivers/net/can/usb/gs_usb.c
+++ b/drivers/net/can/usb/gs_usb.c
@@ -331,7 +331,7 @@ static void gs_usb_receive_bulk_callback(struct urb *urb)
cf->can_id = hf->can_id;
- cf->len = can_cc_dlc2len(hf->can_dlc);
+ can_frame_set_cc_len(cf, hf->can_dlc, dev->can.ctrlmode);
memcpy(cf->data, hf->data, 8);
/* ERROR frames tell us information about the controller */
@@ -504,7 +504,8 @@ static netdev_tx_t gs_can_start_xmit(struct sk_buff *skb,
cf = (struct can_frame *)skb->data;
hf->can_id = cf->can_id;
- hf->can_dlc = cf->len;
+ hf->can_dlc = can_get_cc_dlc(cf, dev->can.ctrlmode);
+
memcpy(hf->data, cf->data, cf->len);
usb_fill_bulk_urb(urb, dev->udev,
@@ -858,7 +859,7 @@ static struct gs_can *gs_make_candev(unsigned int channel,
dev->can.bittiming_const = &dev->bt_const;
dev->can.do_set_bittiming = gs_usb_set_bittiming;
- dev->can.ctrlmode_supported = 0;
+ dev->can.ctrlmode_supported = CAN_CTRLMODE_CC_LEN8_DLC;
if (bt_const->feature & GS_CAN_FEATURE_LISTEN_ONLY)
dev->can.ctrlmode_supported |= CAN_CTRLMODE_LISTENONLY;