All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wolfgang Grandegger <wg@grandegger.com>
To: Alexander Stein <alexander.stein@systec-electronic.com>
Cc: Marc Kleine-Budde <mkl@pengutronix.de>, linux-can@vger.kernel.org
Subject: Re: [PATCH 1/2] pch_can: Stop netif queue if last message buffer is filled
Date: Tue, 21 Feb 2012 17:25:57 +0100	[thread overview]
Message-ID: <4F43C595.8080706@grandegger.com> (raw)
In-Reply-To: <1329840002-20746-1-git-send-email-alexander.stein@systec-electronic.com>

Hi Alexander,

On 02/21/2012 05:00 PM, Alexander Stein wrote:
> If all Tx buffers are empty and we start queuing frames (more than Tx
> buffer size) beginning at the last message buffer we will override the
> first inserted entry if it doesn't get sent meanwhile, e.g. low priority
> or ACK error. There is no stop condition when all buffers are used.
> We will get get awoken by pch_can_tx_complete when the last entry is sent.
> 
> Signed-off-by: Alexander Stein <alexander.stein@systec-electronic.com>
> ---
>  drivers/net/can/pch_can.c |    4 +---
>  1 files changed, 1 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/net/can/pch_can.c b/drivers/net/can/pch_can.c
> index 6edc25e..3af5341 100644
> --- a/drivers/net/can/pch_can.c
> +++ b/drivers/net/can/pch_can.c
> @@ -903,9 +903,7 @@ static netdev_tx_t pch_xmit(struct sk_buff *skb, struct net_device *ndev)
>  
>  	tx_obj_no = priv->tx_obj;
>  	if (priv->tx_obj == PCH_TX_OBJ_END) {
> -		if (ioread32(&priv->regs->treq2) & PCH_TREQ2_TX_MASK)
> -			netif_stop_queue(ndev);
> -
> +		netif_stop_queue(ndev);
>  		priv->tx_obj = PCH_TX_OBJ_START;
>  	} else {
>  		priv->tx_obj++;

The pch_can uses a C_CAN core (and for maintenance reasons we would like
to get ride of it sooner than later). In that driver the queue is
stopped here:

http://lxr.linux.no/#linux+v3.2.7/drivers/net/can/c_can/c_can.c#L508

Therefore I'm not sure if your fix is enough (without looking into the
manual). I could send you a "pch_pci" driver patch for C_CAN, which
would allow you to use it. What kernel version are you using?

Thanks,

Wolfgang.

  parent reply	other threads:[~2012-02-21 16:26 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-21 16:00 [PATCH 1/2] pch_can: Stop netif queue if last message buffer is filled Alexander Stein
2012-02-21 16:00 ` [PATCH 2/2] pch_can: (re)start Tx queue at first entry Alexander Stein
2012-02-21 16:25 ` Wolfgang Grandegger [this message]
2012-02-21 16:30   ` [PATCH 1/2] pch_can: Stop netif queue if last message buffer is filled Alexander Stein
2012-02-22 10:58     ` Wolfgang Grandegger
2012-02-22 11:11       ` Bhupesh SHARMA
2012-02-22 13:05         ` Wolfgang Grandegger

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=4F43C595.8080706@grandegger.com \
    --to=wg@grandegger.com \
    --cc=alexander.stein@systec-electronic.com \
    --cc=linux-can@vger.kernel.org \
    --cc=mkl@pengutronix.de \
    /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.