All of lore.kernel.org
 help / color / mirror / Atom feed
From: Murali Karicheri <m-karicheri2@ti.com>
To: Grygorii Strashko <grygorii.strashko@ti.com>,
	<davem@davemloft.net>, <kuba@kernel.org>,
	<netdev@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<nsekhar@ti.com>, <vinicius.gomes@intel.com>
Subject: Re: [PATCH 1/2 v2] net: hsr: fix incorrect lsdu size in the tag of HSR frames for small frames
Date: Mon, 20 Jul 2020 10:08:00 -0400	[thread overview]
Message-ID: <ad869a7c-fe39-8b75-c235-d65005cd9c32@ti.com> (raw)
In-Reply-To: <0e064d93-546d-e999-e36a-499d37137ba4@ti.com>

Grygorii,

On 7/17/20 1:39 PM, Grygorii Strashko wrote:
> 
> 
> 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@ti.com>
>> ---
>>   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?
> 
A better place may be to add it at the beginning of
hsr_fill_frame_info() at which point there is one copy and after that
code enters hsr_forward_do() to replicate. I don't think we can place it
anywhere before that code.

hsr_dev_xmit()
    - hsr_forward_skb()
       - hsr_fill_frame_info()

Inside hsr_fill_frame_info() we could do

	if (ethhdr->h_proto == htons(ETH_P_8021Q)) {
		frame->is_vlan = true;
		/* FIXME: */
		netdev_warn_once(skb->dev, "VLAN not yet supported");
	}
+	min_size = ETH_ZLEN + HSR_HLEN;
+       if (frame->is_vlan)
+		min_size += 4;
+	ret = skb_put_padto(skb, min_size))
+	if (ret)
+	     return ret;

At this point, it will be ready to tag the frame. Frame will be either a
supervision frame which is already tagged or standard frame from upper
layer. Either case, padto() is required. So looks like the right place
to avoid doing it twice.

And packet would get dropped at the caller if skb_put_padto() fails. So
we could return the return value to the caller.

This also eliminates similar padto() call in 
send_hsr_supervision_frame() as well.

What do you think?

Murali
>> +
>>       if (port->type == HSR_PT_SLAVE_A)
>>           lane_id = 0;
>>       else
>>
> 

-- 
Murali Karicheri
Texas Instruments

  reply	other threads:[~2020-07-20 14:08 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-17 14:55 [PATCH 1/2 v2] net: hsr: fix incorrect lsdu size in the tag of HSR frames for small frames Murali Karicheri
2020-07-17 14:55 ` [PATCH 2/2 v2] net: hsr: validate address B before copying to skb Murali Karicheri
2020-07-18  1:54   ` David Miller
2020-07-17 17:39 ` [PATCH 1/2 v2] net: hsr: fix incorrect lsdu size in the tag of HSR frames for small frames Grygorii Strashko
2020-07-20 14:08   ` Murali Karicheri [this message]
2020-07-20 15:25     ` Murali Karicheri
2020-07-18  1:54 ` David Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ad869a7c-fe39-8b75-c235-d65005cd9c32@ti.com \
    --to=m-karicheri2@ti.com \
    --cc=davem@davemloft.net \
    --cc=grygorii.strashko@ti.com \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=nsekhar@ti.com \
    --cc=vinicius.gomes@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.