Skip to content

Commit 96a3a03

Browse files
fmaurer-rhPaolo Abeni
authored andcommitted
hsr: Fix supervision frame sending on HSRv0
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: 9cfb5e7 ("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>
1 parent 0eff2ea commit 96a3a03

1 file changed

Lines changed: 3 additions & 0 deletions

File tree

net/hsr/hsr_device.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,9 @@ static void send_hsr_supervision_frame(struct hsr_port *port,
320320
}
321321

322322
hsr_stag = skb_put(skb, sizeof(struct hsr_sup_tag));
323+
skb_set_network_header(skb, ETH_HLEN + HSR_HLEN);
324+
skb_reset_mac_len(skb);
325+
323326
set_hsr_stag_path(hsr_stag, (hsr->prot_version ? 0x0 : 0xf));
324327
set_hsr_stag_HSR_ver(hsr_stag, hsr->prot_version);
325328

0 commit comments

Comments
 (0)