|
@@ -317,7 +317,9 @@ void can_put_echo_skb(struct sk_buff *skb, struct net_device *dev,
|
|
|
BUG_ON(idx >= priv->echo_skb_max);
|
|
|
|
|
|
/* check flag whether this packet has to be looped back */
|
|
|
- if (!(dev->flags & IFF_ECHO) || skb->pkt_type != PACKET_LOOPBACK) {
|
|
|
+ if (!(dev->flags & IFF_ECHO) || skb->pkt_type != PACKET_LOOPBACK ||
|
|
|
+ (skb->protocol != htons(ETH_P_CAN) &&
|
|
|
+ skb->protocol != htons(ETH_P_CANFD))) {
|
|
|
kfree_skb(skb);
|
|
|
return;
|
|
|
}
|
|
@@ -329,7 +331,6 @@ void can_put_echo_skb(struct sk_buff *skb, struct net_device *dev,
|
|
|
return;
|
|
|
|
|
|
/* make settings for echo to reduce code in irq context */
|
|
|
- skb->protocol = htons(ETH_P_CAN);
|
|
|
skb->pkt_type = PACKET_BROADCAST;
|
|
|
skb->ip_summed = CHECKSUM_UNNECESSARY;
|
|
|
skb->dev = dev;
|