From: Wolfgang Grandegger <wg@grandegger.com>
To: Masayuki Ohtake <masa-korg@dsn.okisemi.com>
Cc: Andrew Chih Howe <andrew.chih.howe.khor@intel.com>,
Qi <qi.wang@intel.com>, ML netdev <netdev@vger.kernel.org>,
gregkh@suse.de, ML linux-kernel <linux-kernel@vger.kernel.org>,
"Wang, Yong Y" <yong.y.wang@intel.com>,
socketcan-core@lists.berlios.de, arjan@linux.intel.com,
"David S. Miller" <davem@davemloft.net>,
Christian Pellegrin <chripell@fsfe.org>,
Samuel Ortiz <sameo@linux.intel.com>
Subject: Re: [MeeGo-Dev][PATCH] Topcliff: Update PCH_CAN driver to 2.6.35
Date: Wed, 01 Sep 2010 20:51:56 +0200 [thread overview]
Message-ID: <4C7EA0CC.2030609@grandegger.com> (raw)
In-Reply-To: <000501cb49a9$9cd4bf00$66f8800a@maildom.okisemi.com>
Hello,
On 09/01/2010 09:45 AM, Masayuki Ohtake wrote:
> Sorry, for late response.
> ----- Original Message -----
> From: "Wang, Qi" <qi.wang@intel.com>
> To: "Masayuki Ohtak" <masa-korg@dsn.okisemi.com>
> Cc: "Khor, Andrew Chih Howe" <andrew.chih.howe.khor@intel.com>; <gregkh@suse.de>; <arjan@linux.intel.com>; "Wang, Yong
> Y" <yong.y.wang@intel.com>; "Wolfgang Grandegger" <wg@grandegger.com>
> Sent: Thursday, August 12, 2010 6:00 PM
> Subject: RE: [MeeGo-Dev][PATCH] Topcliff: Update PCH_CAN driver to 2.6.35
...
>>>>> - The values for the hw-specific bit-timing registers should be derived
>>>>> from the calculated values in "priv->can.bittiming":
>>>>>
>>>>> http://lxr.linux.no/#linux+v2.6.35/include/linux/can/netlink.h#L17
>>>>>
>
> I show current pch_can code below.
>
> +static int pch_set_bittiming(struct net_device *ndev)
> +{
> + struct pch_can_priv *priv = netdev_priv(ndev);
> + struct pch_can_os *dev_can_os = priv->pch_can_os_p;
> + const struct can_bittiming *bt = &priv->can.bittiming;
>
> Is the above TRUE, isn't it ?
The code fragment looks good. In that function you should then *derive*
the values of the bit-timing registers from the data fields of "bt". For
the SJA1000, you find the code here:
http://lxr.linux.no/#linux+v2.6.35/drivers/net/can/sja1000/sja1000.c#L202
>>>>> - The driver should handle state changes and communicate them to the
>>>>> user space via error messages, if possible.
>>>>>
> What's "state chage" mean ?
Googling for "can bis states" returned:
http://www.softing.com/home/en/industrial-automation/products/can-bus/more-can-bus/error-handling/error-states.php?navanchor=3010510
The CAN controller usually triggers an interrupt when the state changes,
which allows the driver to track the CAN state and deliver that
information to the user space.
>>>>> - The driver should report errors to the user space via error messages.
>>>>>
> Is the above mean using alloc_can_err_skb and set error info and notify to kernel with netif_rx ?
Yes. Please search "Documentation/networking/can.txt" for "error frames"
for further information.
>>>>> - Bus errors seem not to be handled properly.I'm missing can_bus_off().
>>>>> Does the controller recover from bus-off automatically?
> No.
> CAN driver recovers from Bus-off state.
You mean: "It does *not" recover automatically"! Right?
>
>>>>>
>>>>> - I see that the driver uses many TX and RX objects. How do you avoid
>>>>> out-of-order transmission and reception?
>>>> What do you mean out-of-order RX and TX?
>>>> Atom processor only supports in-order execution, and PCIe-based peripherals
>>> can solve it with consumer-producer model. Actually IC designer will take care
>>> of out-of-order PCIe CPLD transaction.
>>>
>>> I mean out-of-order transmission to or from the CAN bus. This is handled
>>> by the CAN controller hardware. It has nothing to to with the processor.
> Cannot avoid occurring rx or tx our-of-order.
It is a *requirement* as Oliver already pointed out. It's easy to
achieve if just one TX object is used but it might be tricky with more
than one.
Wolfgang.
next prev parent reply other threads:[~2010-09-01 18:51 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <4C61EDE5.4030505@dsn.okisemi.com>
[not found] ` <4C62981B.8050402@grandegger.com>
[not found] ` <D5AB6E638E5A3E4B8F4406B113A5A19A28EA26CC@shsmsx501.ccr.corp.intel.com>
[not found] ` <4C63B6C9.5050804@grandegger.com>
[not found] ` <D5AB6E638E5A3E4B8F4406B113A5A19A28EA29DF@shsmsx501.ccr.corp.intel.com>
2010-09-01 7:45 ` [MeeGo-Dev][PATCH] Topcliff: Update PCH_CAN driver to 2.6.35 Masayuki Ohtake
2010-09-01 17:04 ` out-of-order tx objects - was " Oliver Hartkopp
2010-09-01 18:51 ` Wolfgang Grandegger [this message]
2010-09-02 3:19 ` Masayuki Ohtake
2010-09-02 6:32 ` 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=4C7EA0CC.2030609@grandegger.com \
--to=wg@grandegger.com \
--cc=andrew.chih.howe.khor@intel.com \
--cc=arjan@linux.intel.com \
--cc=chripell@fsfe.org \
--cc=davem@davemloft.net \
--cc=gregkh@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=masa-korg@dsn.okisemi.com \
--cc=netdev@vger.kernel.org \
--cc=qi.wang@intel.com \
--cc=sameo@linux.intel.com \
--cc=socketcan-core@lists.berlios.de \
--cc=yong.y.wang@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox