mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 10:00:17 +00:00
hsr: Fix supervision frame sending on HSRv0
[ Upstream commit96a3a03abf] On HSRv0, no supervision frames were sent. The supervison frames were generated successfully, but failed the check for a sufficiently long mac header, i.e., at least sizeof(struct hsr_ethhdr), in hsr_fill_frame_info() because the mac header only contained the ethernet header. Fix this by including the HSR header in the mac header when generating HSR supervision frames. Note that the mac header now also includes the TLV fields. This matches how we set the headers on rx and also the size of struct hsrv0_ethhdr_sp. Reported-by: Hangbin Liu <liuhangbin@gmail.com> Closes: https://lore.kernel.org/netdev/aMONxDXkzBZZRfE5@fedora/ Fixes:9cfb5e7f0d("net: hsr: fix hsr_init_sk() vs network/transport headers.") Signed-off-by: Felix Maurer <fmaurer@redhat.com> Reviewed-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Tested-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Link: https://patch.msgid.link/4354114fea9a642fe71f49aeeb6c6159d1d61840.1762876095.git.fmaurer@redhat.com Tested-by: Hangbin Liu <liuhangbin@gmail.com> Signed-off-by: Paolo Abeni <pabeni@redhat.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
6e48bc7c26
commit
57622b6b1a
@@ -320,6 +320,9 @@ static void send_hsr_supervision_frame(struct hsr_port *port,
|
|||||||
}
|
}
|
||||||
|
|
||||||
hsr_stag = skb_put(skb, sizeof(struct hsr_sup_tag));
|
hsr_stag = skb_put(skb, sizeof(struct hsr_sup_tag));
|
||||||
|
skb_set_network_header(skb, ETH_HLEN + HSR_HLEN);
|
||||||
|
skb_reset_mac_len(skb);
|
||||||
|
|
||||||
set_hsr_stag_path(hsr_stag, (hsr->prot_version ? 0x0 : 0xf));
|
set_hsr_stag_path(hsr_stag, (hsr->prot_version ? 0x0 : 0xf));
|
||||||
set_hsr_stag_HSR_ver(hsr_stag, hsr->prot_version);
|
set_hsr_stag_HSR_ver(hsr_stag, hsr->prot_version);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user