summaryrefslogtreecommitdiff
path: root/net/hsr
diff options
context:
space:
mode:
authorMurali Karicheri <m-karicheri2@ti.com>2020-07-17 17:55:09 +0300
committerDavid S. Miller <davem@davemloft.net>2020-07-18 04:54:37 +0300
commit6d6148bc78d2f002ecc67b801c5f55a0cc5184c8 (patch)
tree4ee4ac51a263667a037b62d6013b2b5605e9ca71 /net/hsr
parent7f5f81406e2b36785f1e25fe5209edd9dd3610d7 (diff)
downloadlinux-6d6148bc78d2f002ecc67b801c5f55a0cc5184c8.tar.xz
net: hsr: fix incorrect lsdu size in the tag of HSR frames for small frames
For small Ethernet frames with size less than minimum size 66 for HSR vs 60 for regular Ethernet frames, hsr driver currently doesn't pad the frame to make it minimum size. This results in incorrect LSDU size being populated in the HSR tag for these frames. Fix this by padding the frame to the minimum size applicable for HSR. Signed-off-by: Murali Karicheri <m-karicheri2@ti.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/hsr')
-rw-r--r--net/hsr/hsr_forward.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/net/hsr/hsr_forward.c b/net/hsr/hsr_forward.c
index ed13760463de..e42fd356f073 100644
--- a/net/hsr/hsr_forward.c
+++ b/net/hsr/hsr_forward.c
@@ -127,6 +127,9 @@ static void hsr_fill_tag(struct sk_buff *skb, struct hsr_frame_info *frame,
int lane_id;
int lsdu_size;
+ /* pad to minimum packet size which is 60 + 6 (HSR tag) */
+ skb_put_padto(skb, ETH_ZLEN + HSR_HLEN);
+
if (port->type == HSR_PT_SLAVE_A)
lane_id = 0;
else