af_packet uses dev_parse_header_protocol() to assign skb::protocol. The hsr stack does not assign a callback so the field is assigned to 0. The header used by the hsr stack corresponds to the ethernet header for the "first" part so the protocol member is at the same position. Use eth_header_parse_protocol() for the hsr_header_ops's parse_protocol callback. Signed-off-by: Sebastian Andrzej Siewior --- net/hsr/hsr_device.c | 1 + 1 file changed, 1 insertion(+) diff --git a/net/hsr/hsr_device.c b/net/hsr/hsr_device.c index 5555b71ab19b5..a999ddccc46c5 100644 --- a/net/hsr/hsr_device.c +++ b/net/hsr/hsr_device.c @@ -247,6 +247,7 @@ static netdev_tx_t hsr_dev_xmit(struct sk_buff *skb, struct net_device *dev) static const struct header_ops hsr_header_ops = { .create = eth_header, .parse = eth_header_parse, + .parse_protocol = eth_header_parse_protocol, }; static struct sk_buff *hsr_init_skb(struct hsr_port *master, int extra) -- 2.53.0