linux-can.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Patch for kvaser_usb
@ 2013-04-26 14:50 Jonas Peterson
  2013-04-26 15:00 ` Marc Kleine-Budde
  0 siblings, 1 reply; 26+ messages in thread
From: Jonas Peterson @ 2013-04-26 14:50 UTC (permalink / raw)
  To: linux-can

Hello,

I've tried the kvaser_usb driver with my Kvaser USBcan Pro and no can
frames are properly received. It seems like they are all flagged as
log messages. I patched the driver and have used it for a while now.
Feel free to use it as you please.

Best regards,
Jonas Peterson

--- /drivers/net/can/usb/kvaser_usb.c 2013-04-26 16:20:19.748994249 +0200
+++ kvaser_usb.c 2012-12-14 15:59:10.017829818 +0100
@@ -858,6 +858,62 @@
  stats->rx_bytes += cf->can_dlc;
 }

+static void kvaser_usb_rx_can_log_msg(const struct kvaser_usb *dev,
+   const struct kvaser_msg *msg)
+{
+ struct kvaser_usb_net_priv *priv;
+ struct can_frame *cf;
+ struct sk_buff *skb;
+ struct net_device_stats *stats;
+ u8 channel = msg->u.log_message.channel;
+
+ if (channel >= dev->nchannels) {
+ dev_err(dev->udev->dev.parent,
+ "Invalid channel number (%d)\n", channel);
+ return;
+ }
+
+ priv = dev->nets[channel];
+ stats = &priv->netdev->stats;
+
+ if (msg->u.log_message.flags & (MSG_FLAG_ERROR_FRAME | MSG_FLAG_NERR |
+   MSG_FLAG_OVERRUN)) {
+ kvaser_usb_rx_can_err(priv, msg);
+ dev_err(dev->udev->dev.parent,
+ "Error frame (flags: 0x%02x)",
+     msg->u.log_message.flags);
+ return;
+ } else if (msg->u.log_message.flags & ~MSG_FLAG_REMOTE_FRAME) {
+ dev_err(dev->udev->dev.parent,
+ "Unhandled frame (flags: 0x%02x)",
+     msg->u.log_message.flags);
+ netdev_warn(priv->netdev,
+     "Unhandled frame (flags: 0x%02x)",
+     msg->u.log_message.flags);
+ return;
+ }
+
+ skb = alloc_can_skb(priv->netdev, &cf);
+ if (!skb) {
+ dev_err(dev->udev->dev.parent, "Alloc error");
+ stats->tx_dropped++;
+ return;
+ }
+
+ cf->can_id = msg->u.log_message.id;
+ cf->can_dlc = msg->u.log_message.dlc;
+
+ if (msg->u.rx_can.flag & MSG_FLAG_REMOTE_FRAME)
+ cf->can_id |= CAN_RTR_FLAG;
+ else
+ memcpy(cf->data, &msg->u.log_message.data, cf->can_dlc);
+
+ netif_rx(skb);
+
+ stats->rx_packets++;
+ stats->rx_bytes += cf->can_dlc;
+}
+
 static void kvaser_usb_start_chip_reply(const struct kvaser_usb *dev,
  const struct kvaser_msg *msg)
 {
@@ -921,8 +977,11 @@
  break;

  case CMD_LOG_MESSAGE:
- if (msg->u.log_message.flags & MSG_FLAG_ERROR_FRAME)
+ if (msg->u.log_message.flags & MSG_FLAG_ERROR_FRAME) {
  kvaser_usb_rx_error(dev, msg);
+ } else {
+ kvaser_usb_rx_can_log_msg(dev, msg);
+ }
  break;

  case CMD_TX_ACKNOWLEDGE:

^ permalink raw reply	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2013-05-15 11:50 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-04-26 14:50 Patch for kvaser_usb Jonas Peterson
2013-04-26 15:00 ` Marc Kleine-Budde
2013-04-26 16:35   ` Jonas Peterson
2013-04-26 20:51     ` Olivier Sobrie
2013-04-29  7:53       ` Marc Kleine-Budde
2013-04-29 10:40         ` flexcan driver: tx_bytes counter never incremented when CAN_RAW_LOOPBACK removed? Stephane Grosjean
2013-04-29 10:53           ` Marc Kleine-Budde
2013-04-29 12:37             ` Stephane Grosjean
2013-04-29 12:44               ` Marc Kleine-Budde
2013-04-29 12:55               ` Wolfgang Grandegger
2013-04-30  6:47                 ` Stephane Grosjean
2013-04-30 10:19                   ` Wolfgang Grandegger
2013-04-30 11:37                     ` Wolfgang Grandegger
2013-04-29 13:43             ` Kurt Van Dijck
2013-04-29  7:52     ` Patch for kvaser_usb Marc Kleine-Budde
2013-04-29 11:09   ` Jonas Peterson
2013-04-30 21:40   ` [PATCH] can: kvaser_usb: handle rx msg correctly Olivier Sobrie
2013-05-02 10:35     ` Marc Kleine-Budde
2013-05-02 18:06       ` Olivier Sobrie
2013-05-02 18:57         ` [PATCH v2] " Olivier Sobrie
2013-05-03  9:51           ` Marc Kleine-Budde
2013-05-07 20:05             ` [PATCH v3] " Olivier Sobrie
2013-05-15 10:05               ` Marc Kleine-Budde
2013-05-15 11:50                 ` Olivier Sobrie
2013-05-03  9:49         ` [PATCH] " Marc Kleine-Budde
2013-05-06 20:00           ` Olivier Sobrie

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).