All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stephen Hemminger <shemminger@vyatta.com>
To: Gerrit Renker <gerrit@erg.abdn.ac.uk>
Cc: davem@davemloft.net, netdev@vger.kernel.org
Subject: Re: [SC92031] [BUG-FIX] [Patch 1/1]: Revert use of skb_padto
Date: Fri, 2 May 2008 14:45:03 -0700	[thread overview]
Message-ID: <20080502144503.4ef2a430@extreme> (raw)
In-Reply-To: <20080502202940.GA5116@gerrit.erg.abdn.ac.uk>

On Fri, 2 May 2008 21:29:40 +0100
Gerrit Renker <gerrit@erg.abdn.ac.uk> wrote:

> [SC92031]: Revert use of skb_padto (does not update skb->len)
> 
> This reverts use of skb_padto() introduced in 
> 
>  commit 26a17b7bbb36a8552d531bc1ad08472fb5aa3007
>  Date:   Wed Apr 2 10:11:11 2008 -0700
>  sc92031: start transmit return value bugfix
> 
> The padto does not work because the driver code evaluates `len' later on
> and there are cases where skb->len is not updated accordingly.
> 
> This was observed with ARP frames (skb->len = 42 bytes, !skb_cloned(),
> skb_tailroom = 84 bytes). Then in skb_pad(), the first condition is true,
> where skb->len is not updated. As a consequence, the driver uses 42 bytes
> instead of the 60 bytes, and the ARP frame never makes it onto the wire.
> 
> Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
> ---
>  sc92031.c |    8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)
> 
> --- a/drivers/net/sc92031.c
> +++ b/drivers/net/sc92031.c
> @@ -953,9 +953,6 @@ static int sc92031_start_xmit(struct sk_buff *skb, struct net_device *dev)
>  	unsigned entry;
>  	u32 tx_status;
>  
> -	if (skb_padto(skb, ETH_ZLEN))
> -		return NETDEV_TX_OK;
> -
>  	if (unlikely(skb->len > TX_BUF_SIZE)) {
>  		dev->stats.tx_dropped++;
>  		goto out;
> @@ -975,6 +972,11 @@ static int sc92031_start_xmit(struct sk_buff *skb, struct net_device *dev)
>  	skb_copy_and_csum_dev(skb, priv->tx_bufs + entry * TX_BUF_SIZE);
>  
>  	len = skb->len;
> +	if (unlikely(len < ETH_ZLEN)) {
> +		memset(priv->tx_bufs + entry * TX_BUF_SIZE + len,
> +				0, ETH_ZLEN - len);
> +		len = ETH_ZLEN;
> +	}
>  

Yes, this also works better in the out of memory case since it doesn't
need to reallocate the skb.


  reply	other threads:[~2008-05-02 21:45 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-05-02 20:29 [SC92031] [BUG-FIX] [Patch 1/1]: Revert use of skb_padto Gerrit Renker
2008-05-02 21:45 ` Stephen Hemminger [this message]
2008-05-16 17:17   ` [NET] " Gerrit Renker
2008-05-16 20:09     ` 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=20080502144503.4ef2a430@extreme \
    --to=shemminger@vyatta.com \
    --cc=davem@davemloft.net \
    --cc=gerrit@erg.abdn.ac.uk \
    --cc=netdev@vger.kernel.org \
    /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.