From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from hu-out-0506.google.com (hu-out-0506.google.com [72.14.214.233]) by ozlabs.org (Postfix) with ESMTP id 042A6DDED0 for ; Fri, 27 Jun 2008 16:36:09 +1000 (EST) Received: by hu-out-0506.google.com with SMTP id 34so910061hue.9 for ; Thu, 26 Jun 2008 23:36:06 -0700 (PDT) Message-ID: <1946a170806262336y4aa3621at16520fc546bbe4b1@mail.gmail.com> Date: Fri, 27 Jun 2008 12:06:06 +0530 From: SathyaNarayanan To: benh@kernel.crashing.org Subject: Re: [PATCH] ibm_newemac: Fixes entry of short packets In-Reply-To: <1214263257.8011.278.camel@pasglop> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_10092_4396745.1214548566483" References: <1214225705-25850-1-git-send-email-sr@denx.de> <1214263257.8011.278.camel@pasglop> Cc: linuxppc-dev@ozlabs.org, Stefan Roese , netdev@vger.kernel.org List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , ------=_Part_10092_4396745.1214548566483 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi benh, Please find my comments inline. On Tue, Jun 24, 2008 at 4:50 AM, Benjamin Herrenschmidt < benh@kernel.crashing.org> wrote: > On Mon, 2008-06-23 at 14:55 +0200, Stefan Roese wrote: > > From: Sathya Narayanan > > > > Short packets has to be discarded by the driver. So this patch addresses > the > > issue of discarding the short packets of size lesser then ethernet header > > size. > > You are freeing the skb, why ? Shouldn't we just keep the skb in the > ring for further rx ? Actually , short packets are not allowed to flow through the higher layers, If any of the layer tried to use the extra room available may hit wit crash . Since it is a invalid packet it has to be dropped and freed in driver. Actually if you see in code, the other invalid packets are also handelled similar. > > > Signed-off-by: Sathya Narayanan > > Signed-off-by: Stefan Roese > > --- > > drivers/net/ibm_newemac/core.c | 7 +++++++ > > 1 files changed, 7 insertions(+), 0 deletions(-) > > > > diff --git a/drivers/net/ibm_newemac/core.c > b/drivers/net/ibm_newemac/core.c > > index 6dfc2c9..aa407b2 100644 > > --- a/drivers/net/ibm_newemac/core.c > > +++ b/drivers/net/ibm_newemac/core.c > > @@ -1652,6 +1652,13 @@ static int emac_poll_rx(void *param, int budget) > > > > skb_put(skb, len); > > push_packet: > > + if (skb->len < ETH_HLEN) { > > + dev_kfree_skb(skb); > > + printk(KERN_WARNING "%s: short packets dropped\n", > > + dev->ndev->name); > > + ++dev->estats.rx_dropped_stack; > > + goto next; > > + } > > skb->dev = dev->ndev; > > skb->protocol = eth_type_trans(skb, dev->ndev); > > emac_rx_csum(dev, skb, ctrl); > > ------=_Part_10092_4396745.1214548566483 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi benh,

            Please find my comments inline.

On Tue, Jun 24, 2008 at 4:50 AM, Benjamin Herrenschmidt <benh@kernel.crashing.org> wrote:
On Mon, 2008-06-23 at 14:55 +0200, Stefan Roese wrote:
> From: Sathya Narayanan <sathyan@teamf1.com>
>
> Short packets has to be discarded by the driver. So this patch addresses the
> issue of discarding the short packets of size lesser then ethernet header
> size.

You are freeing the skb, why ? Shouldn't we just keep the skb in the
ring for further rx ?

Actually , short packets are not allowed to flow through the higher layers, If any of the layer tried to use the extra room available may hit wit crash .
Since it is a invalid packet it has to be dropped and freed in driver.
Actually if you see in code, the other invalid packets are also handelled similar.



> Signed-off-by: Sathya Narayanan <sathyan@teamf1.com>
> Signed-off-by: Stefan Roese <sr@denx.de>
> ---
>  drivers/net/ibm_newemac/core.c |    7 +++++++
>  1 files changed, 7 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/net/ibm_newemac/core.c b/drivers/net/ibm_newemac/core.c
> index 6dfc2c9..aa407b2 100644
> --- a/drivers/net/ibm_newemac/core.c
> +++ b/drivers/net/ibm_newemac/core.c
> @@ -1652,6 +1652,13 @@ static int emac_poll_rx(void *param, int budget)
>
>               skb_put(skb, len);
>       push_packet:
> +             if (skb->len < ETH_HLEN) {
> +                     dev_kfree_skb(skb);
> +                     printk(KERN_WARNING "%s: short packets dropped\n",
> +                            dev->ndev->name);
> +                     ++dev->estats.rx_dropped_stack;
> +                     goto next;
> +             }
>               skb->dev = dev->ndev;
>               skb->protocol = eth_type_trans(skb, dev->ndev);
>               emac_rx_csum(dev, skb, ctrl);


------=_Part_10092_4396745.1214548566483--