Wolfgang Grandegger wrote:

>>  
>> +    if (skb->len != sizeof(*cf) || cf->can_dlc > 8) {
>> +            kfree_skb(skb);
>> +            dev->stats.tx_dropped++;
>> +            return NETDEV_TX_OK;
>> +    }
> 
> A static inline function "invalid_can_skb(skb)" (or "no_can_skb") would
> be handy here:
> 
>       if (invalid_can_skb(skb)) {
>               kfree_skb(skb);
>               dev->stats.tx_dropped++;
>               return NETDEV_TX_OK;            
>       }

Another idea could be:

        if (can_dropped_invalid_skb(skb, dev))
                return NETDEV_TX_OK;

with

static inline int can_dropped_invalid_skb(struct sk_buff *skb, struct 
net_device *dev)
{
        const struct can_frame *cf = (struct can_frame *)skb->data;

        if (unlikely(skb->len != sizeof(*cf) || cf->can_dlc > 8)) {
                kfree_skb(skb);
                dev->stats.tx_dropped++;
                return 1;
        }

        return 0;
}

Any preferences?

Regards,
Oliver
_______________________________________________
Socketcan-core mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/socketcan-core

Reply via email to