A better place may be to add it at the beginning of
On 17/07/2020 17:55, Murali Karicheri wrote:
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@xxxxxx>
---
 no change from original version
 Sending this bug fix ahead of PRP patch series as per comment
 net/hsr/hsr_forward.c | 3 +++
 1 file changed, 3 insertions(+)
 Sending this bug fix ahead of PRP patch series as per comment
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);
It may fail.
And i worry that it might be not the right place to do that
(if packet is small it will be called for every copy of the packet).
May be it has to be done once when packet enters LRE device?
+
ÂÂÂÂÂ if (port->type == HSR_PT_SLAVE_A)
ÂÂÂÂÂÂÂÂÂ lane_id = 0;
ÂÂÂÂÂ else