can: mcp251x: fix generation of error frames
authorMarc Kleine-Budde <mkl@pengutronix.de>
Wed, 20 Oct 2010 00:02:26 +0000 (00:02 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 21 Oct 2010 11:27:03 +0000 (04:27 -0700)
The function "mcp251x_error_skb" is used to generate error frames.
They are identified by the "CAN_ERR_FLAG" in can_id. The function
overwrites the can_id so that the frames show up as normal frames instead
of error frames.

This patch fixes the problem by or'ing the can_id instead of overwriting it.

Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Tested-by: Jargalan Nermunkh <jargalan.nermunkh@criticallink.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/can/mcp251x.c

index 59f40bce1ffc662f11d43b31e2597e3c83c86f5e..6aadc3e32bd5c8bc31c1d5c231e1e9ff99ae9188 100644 (file)
@@ -705,7 +705,7 @@ static void mcp251x_error_skb(struct net_device *net, int can_id, int data1)
 
        skb = alloc_can_err_skb(net, &frame);
        if (skb) {
-               frame->can_id = can_id;
+               frame->can_id |= can_id;
                frame->data[1] = data1;
                netif_rx_ni(skb);
        } else {