Commit 843b8464 authored by Carsten Schmidt's avatar Carsten Schmidt Committed by Marc Kleine-Budde
Browse files

can: kvaser_usb: Add len8_dlc support

parent d49b9b07
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -816,7 +816,7 @@ static int kvaser_usb_init_one(struct kvaser_usb *dev, int channel)
	init_completion(&priv->stop_comp);
	init_completion(&priv->flush_comp);
	init_completion(&priv->get_busparams_comp);
	priv->can.ctrlmode_supported = 0;
	priv->can.ctrlmode_supported = CAN_CTRLMODE_CC_LEN8_DLC;

	priv->dev = dev;
	priv->netdev = netdev;
+9 −4
Original line number Diff line number Diff line
@@ -1263,7 +1263,7 @@ static void kvaser_usb_hydra_rx_msg_std(const struct kvaser_usb *dev,
	if (flags & KVASER_USB_HYDRA_CF_FLAG_OVERRUN)
		kvaser_usb_can_rx_over_error(priv->netdev);

	cf->len = can_cc_dlc2len(cmd->rx_can.dlc);
	can_frame_set_cc_len((struct can_frame *)cf, cmd->rx_can.dlc, priv->can.ctrlmode);

	if (flags & KVASER_USB_HYDRA_CF_FLAG_REMOTE_FRAME) {
		cf->can_id |= CAN_RTR_FLAG;
@@ -1342,7 +1342,7 @@ static void kvaser_usb_hydra_rx_msg_ext(const struct kvaser_usb *dev,
		if (flags & KVASER_USB_HYDRA_CF_FLAG_ESI)
			cf->flags |= CANFD_ESI;
	} else {
		cf->len = can_cc_dlc2len(dlc);
		can_frame_set_cc_len((struct can_frame *)cf, dlc, priv->can.ctrlmode);
	}

	if (flags & KVASER_USB_HYDRA_CF_FLAG_REMOTE_FRAME) {
@@ -1442,7 +1442,7 @@ kvaser_usb_hydra_frame_to_cmd_ext(const struct kvaser_usb_net_priv *priv,
	struct kvaser_usb *dev = priv->dev;
	struct kvaser_cmd_ext *cmd;
	struct canfd_frame *cf = (struct canfd_frame *)skb->data;
	u8 dlc = can_fd_len2dlc(cf->len);
	u8 dlc;
	u8 nbr_of_bytes = cf->len;
	u32 flags;
	u32 id;
@@ -1467,6 +1467,11 @@ kvaser_usb_hydra_frame_to_cmd_ext(const struct kvaser_usb_net_priv *priv,

	cmd->len = cpu_to_le16(*cmd_len);

	if (can_is_canfd_skb(skb))
		dlc = can_fd_len2dlc(cf->len);
	else
		dlc = can_get_cc_dlc((struct can_frame *)cf, priv->can.ctrlmode);

	cmd->tx_can.databytes = nbr_of_bytes;
	cmd->tx_can.dlc = dlc;

@@ -1542,7 +1547,7 @@ kvaser_usb_hydra_frame_to_cmd_std(const struct kvaser_usb_net_priv *priv,
		id = cf->can_id & CAN_SFF_MASK;
	}

	cmd->tx_can.dlc = cf->len;
	cmd->tx_can.dlc = can_get_cc_dlc(cf, priv->can.ctrlmode);

	flags = (cf->can_id & CAN_EFF_FLAG ?
		 KVASER_USB_HYDRA_CF_FLAG_EXTENDED_ID : 0);
+3 −3
Original line number Diff line number Diff line
@@ -573,7 +573,7 @@ kvaser_usb_leaf_frame_to_cmd(const struct kvaser_usb_net_priv *priv,
			cmd->u.tx_can.data[1] = cf->can_id & 0x3f;
		}

		cmd->u.tx_can.data[5] = cf->len;
		cmd->u.tx_can.data[5] = can_get_cc_dlc(cf, priv->can.ctrlmode);
		memcpy(&cmd->u.tx_can.data[6], cf->data, cf->len);

		if (cf->can_id & CAN_RTR_FLAG)
@@ -1349,7 +1349,7 @@ static void kvaser_usb_leaf_rx_can_msg(const struct kvaser_usb *dev,
		else
			cf->can_id &= CAN_SFF_MASK;

		cf->len = can_cc_dlc2len(cmd->u.leaf.log_message.dlc);
		can_frame_set_cc_len(cf, cmd->u.leaf.log_message.dlc & 0xF, priv->can.ctrlmode);

		if (cmd->u.leaf.log_message.flags & MSG_FLAG_REMOTE_FRAME)
			cf->can_id |= CAN_RTR_FLAG;
@@ -1367,7 +1367,7 @@ static void kvaser_usb_leaf_rx_can_msg(const struct kvaser_usb *dev,
			cf->can_id |= CAN_EFF_FLAG;
		}

		cf->len = can_cc_dlc2len(rx_data[5]);
		can_frame_set_cc_len(cf, rx_data[5] & 0xF, priv->can.ctrlmode);

		if (cmd->u.rx_can_header.flag & MSG_FLAG_REMOTE_FRAME)
			cf->can_id |= CAN_RTR_FLAG;