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: Wed, 22 Feb 2012 11:58:41 +0100 [thread overview]
Message-ID: <4F44CA61.8060200@grandegger.com> (raw)
In-Reply-To: <3473249.7elBHfZ9bN@ws-stein>
On 02/21/2012 05:30 PM, Alexander Stein wrote:
> Hello Wolfgang,
>
> Am Dienstag, 21. Februar 2012, 17:25:57 schrieb Wolfgang Grandegger:
>> 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
>
> Does the C_CAN core have a real fifo? The message "fifo" in PCH CAN just uses the first message object. So you will reorder message under some conditions if used like a real fifo.
My understanding is that the CAN controller cores are identical. What
the driver actually uses might be different. Out of order transmission
of message are *not* allowed and the software must take care. With a
real fifo that might be tricky, indeed.
>> 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?
>
> We are currently using 2.6.39.
OK, I'm going to prepare a patch for that kernel version first.
More soon...
Wolfgang.
next prev parent reply other threads:[~2012-02-22 10:58 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 ` [PATCH 1/2] pch_can: Stop netif queue if last message buffer is filled Wolfgang Grandegger
2012-02-21 16:30 ` Alexander Stein
2012-02-22 10:58 ` Wolfgang Grandegger [this message]
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=4F44CA61.8060200@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.