public inbox for netdev@vger.kernel.org 
 help / color / mirror / Atom feed
From: Bill Fink <billfink@mindspring•com>
To: Urs Thuermann <urs@isnogud•escape.de>
Cc: Thomas Gleixner <tglx@linutronix•de>,
	Randy Dunlap <randy.dunlap@oracle•com>,
	netdev@vger•kernel.org, David Miller <davem@davemloft•net>,
	Patrick McHardy <kaber@trash•net>,
	Oliver Hartkopp <oliver@hartkopp•net>,
	Oliver Hartkopp <oliver.hartkopp@volkswagen•de>
Subject: Re: [PATCH 7/7] CAN: Add documentation
Date: Tue, 18 Sep 2007 02:51:44 -0400	[thread overview]
Message-ID: <20070918025144.71dcb85b.billfink@mindspring.com> (raw)
In-Reply-To: <ygflkb5rp9d.fsf@janus.isnogud.escape.de>

On 17 Sep 2007, Urs Thuermann wrote:

> Thomas Gleixner <tglx@linutronix•de> writes:
> 
> > Please do, having the patch in mail makes it easier to review and to
> > comment.
> 
> OK, here it is:

One more typo.

> This patch adds documentation for the PF_CAN protocol family.
> 
> Signed-off-by: Oliver Hartkopp <oliver.hartkopp@volkswagen•de>
> Signed-off-by: Urs Thuermann <urs.thuermann@volkswagen•de>
> 
> ---
>  Documentation/networking/00-INDEX |    2 
>  Documentation/networking/can.txt  |  635 ++++++++++++++++++++++++++++++++++++++
>  2 files changed, 637 insertions(+)
> 
> Index: net-2.6.24/Documentation/networking/can.txt
> ===================================================================
> --- /dev/null	1970-01-01 00:00:00.000000000 +0000
> +++ net-2.6.24/Documentation/networking/can.txt	2007-09-17 21:57:29.000000000 +0200
> @@ -0,0 +1,635 @@
> +============================================================================
> +
> +can.txt
> +
> +Readme file for the Controller Area Network Protocol Family (aka Socket CAN)
> +
> +This file contains
> +
> +  1 Overview / What is Socket CAN
> +
> +  2 Motivation / Why using the socket API
> +

...

> +============================================================================
> +
> +1. Overview / What is Socket CAN
> +--------------------------------
> +
> +The socketcan package is an implementation of CAN protocols
> +(Controller Area Network) for Linux.  CAN is a networking technology
> +which has widespread use in automation, embedded devices, and
> +automotive fields.  While there have been other CAN implementations
> +for Linux based on character devices, Socket CAN uses the Berkeley
> +socket API, the Linux network stack and implements the CAN device
> +drivers as network interfaces.  The CAN socket API has been designed
> +as similar as possible to the TCP/IP protocols to allow programmers,
> +familiar with network programming, to easily learn how to use CAN
> +sockets.
> +
> +2. Motivation / Why using the socket API
> +----------------------------------------
> +
> +There have been CAN implementations for Linux before Socket CAN so the
> +question arises, why we have started another project.  Most existing
> +implementations come as a device driver for some CAN hardware, they
> +are based on character devices and provide comparatively little
> +functionality.  Usually, there is only a hardware-specific device
> +driver which provides a character device interface to send and
> +receive raw CAN frames, directly to/from the controller hardware.
> +Queueing of frames and higher-level transport protocols like ISO-TP
> +have to be implemented in user space applications.  Also, most
> +character-device implementations support only one single process to
> +open the device at a time, similar to a serial interface.  Exchanging
> +the CAN controller requires employment of another device driver and
> +often the need for adaption of large parts of the application to the
> +new driver's API.
> +
> +Socket CAN was designed to overcome all of these limitations.  A new
> +protocol family has been implemented which provides a socket interface
> +to user space applications and which builds upon the Linux network
> +layer, so to use all of the provided queueing functionality.  A device
> +driver for CAN controller hardware registers itself with the Linux
> +network layer as a network device, so that CAN frames from the
> +controller can be passed up to the network layer and on to the CAN
> +protocol family module and also vice-versa.  Also, the protocol family
> +module provides an API for transport protocol modules to register, so
> +that any number of transport protocols can be loaded or unloaded
> +dynamically.  In fact, the can core module alone does not provide any
> +protocol and cannot be used without loading at least one additional
> +protocol module.  Multiple sockets can be opened at the same time,
> +on different or the same protocol module and they can listen/send
> +frames on different or the same CAN IDs.  Several sockets listening on
> +the same interface for frames with the same CAN ID are all passed the
> +same received matching CAN frames.  An application wishing to
> +communicate using a specific transport protocol, e.g. ISO-TP, just
> +selects that protocol when opening the socket, and then can read and
> +write application data byte streams, without having to deal with
> +CAN-IDs, frames, etc.
> +
> +Similar functionality visible from user-space could be provided by a
> +character decive, too, but this would lead to a technically inelegant
> +solution for a couple of reasons:

"decive" -> "device" above.

						-Bill

  parent reply	other threads:[~2007-09-18  6:52 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-09-17 10:03 [PATCH 0/7] CAN: Add new PF_CAN protocol family, try #6 Urs Thuermann
2007-09-17 10:03 ` [PATCH 1/7] CAN: Allocate protocol numbers for PF_CAN Urs Thuermann
2007-09-18 13:31   ` Patrick McHardy
2007-09-17 10:03 ` [PATCH 2/7] CAN: Add PF_CAN core module Urs Thuermann
2007-09-17 15:50   ` Paul E. McKenney
2007-09-18 13:31   ` Patrick McHardy
2007-09-18 14:54     ` Urs Thuermann
2007-09-18 15:07       ` Patrick McHardy
2007-09-18 21:20     ` Urs Thuermann
2007-09-19  8:27       ` Patrick McHardy
2007-09-20  8:53         ` Urs Thuermann
2007-09-20 10:33           ` Patrick McHardy
2007-09-20 11:30             ` Urs Thuermann
2007-09-20 11:43               ` Patrick McHardy
2007-09-17 10:03 ` [PATCH 3/7] CAN: Add raw protocol Urs Thuermann
2007-09-18 14:13   ` Patrick McHardy
2007-09-18 21:49     ` Urs Thuermann
2007-09-19  8:34       ` Patrick McHardy
2007-09-17 10:03 ` [PATCH 4/7] CAN: Add broadcast manager (bcm) protocol Urs Thuermann
2007-09-17 10:03 ` [PATCH 5/7] CAN: Add virtual CAN netdevice driver Urs Thuermann
2007-09-18 15:02   ` Patrick McHardy
2007-09-18 22:24     ` Urs Thuermann
2007-09-19  6:26       ` Oliver Hartkopp
2007-09-19  8:41       ` Patrick McHardy
2007-09-17 10:03 ` [PATCH 6/7] CAN: Add maintainer entries Urs Thuermann
2007-09-17 10:03 ` [PATCH 7/7] CAN: Add documentation Urs Thuermann
2007-09-17 17:30   ` Randy Dunlap
2007-09-17 20:22     ` Urs Thuermann
2007-09-17 20:37       ` Thomas Gleixner
2007-09-17 20:49         ` Urs Thuermann
2007-09-17 22:57           ` Randy Dunlap
2007-09-17 23:19             ` Urs Thuermann
2007-09-18  6:51           ` Bill Fink [this message]
2007-09-18  7:20             ` Urs Thuermann
  -- strict thread matches above, loose matches on Subject: below --
2007-11-16 15:02 [PATCH 0/7] CAN: New PF_CAN protocol family for 2.6.25, update Urs Thuermann
2007-11-16 15:02 ` [PATCH 7/7] CAN: Add documentation Urs Thuermann
2007-11-14 12:13 [PATCH 0/7] CAN: New PF_CAN protocol family for 2.6.25 Urs Thuermann
2007-11-14 12:13 ` [PATCH 7/7] CAN: Add documentation Urs Thuermann
2007-10-05 10:49 [PATCH 0/7] CAN: Add new PF_CAN protocol family, try #10 Urs Thuermann
2007-10-05 10:49 ` [PATCH 7/7] CAN: Add documentation Urs Thuermann
2007-10-02 13:10 [PATCH 0/7] CAN: Add new PF_CAN protocol family, try #9 Urs Thuermann
2007-10-02 13:10 ` [PATCH 7/7] CAN: Add documentation Urs Thuermann
2007-09-25 12:20 [PATCH 0/7] CAN: Add new PF_CAN protocol family, try #8 Urs Thuermann
2007-09-25 12:20 ` [PATCH 7/7] CAN: Add documentation Urs Thuermann
2007-09-20 18:43 [PATCH 0/7] CAN: Add new PF_CAN protocol family, try #7 Urs Thuermann
2007-09-20 18:43 ` [PATCH 7/7] CAN: Add documentation Urs Thuermann
2007-08-04  2:06 [patch 0/7] CAN: Add new PF_CAN protocol family, try #5 Urs Thuermann
2007-08-04  2:07 ` [patch 7/7] CAN: Add documentation Urs Thuermann
2007-06-22  3:44 [patch 0/7] CAN: Add new PF_CAN protocol family, try #3 Urs Thuermann
2007-06-22  3:44 ` [patch 7/7] CAN: Add documentation Urs Thuermann
2007-05-30 13:11 [patch 0/7] CAN: Add new PF_CAN protocol family, update Urs Thuermann
2007-05-30 13:11 ` [patch 7/7] CAN: Add documentation Urs Thuermann
2007-05-16 14:51 [patch 0/7] CAN: Add new PF_CAN protocol family Urs Thuermann
2007-05-16 14:51 ` [patch 7/7] CAN: Add documentation Urs Thuermann

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=20070918025144.71dcb85b.billfink@mindspring.com \
    --to=billfink@mindspring$(echo .)com \
    --cc=davem@davemloft$(echo .)net \
    --cc=kaber@trash$(echo .)net \
    --cc=netdev@vger$(echo .)kernel.org \
    --cc=oliver.hartkopp@volkswagen$(echo .)de \
    --cc=oliver@hartkopp$(echo .)net \
    --cc=randy.dunlap@oracle$(echo .)com \
    --cc=tglx@linutronix$(echo .)de \
    --cc=urs@isnogud$(echo .)escape.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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