* [RFC] CAIF Protocol Stack
@ 2009-09-16 12:30 Sjur Brændeland
2009-09-18 12:31 ` Rémi Denis-Courmont
0 siblings, 1 reply; 4+ messages in thread
From: Sjur Brændeland @ 2009-09-16 12:30 UTC (permalink / raw)
To: netdev
Hello,
We are currently working on a patch set in order to introduce the
CAIF protocol in Linux. CAIF (Communication CPU to Application CPU Interface)
is the primary protocol used to communicate between to ST-Ericsson modem and
external host system.
The host processes can use CAIF to open virtual AT channels, initiate GPRS Data
connections, Video channels and Utility Channels.
The Utility Channels are general purpose pipes between modem and host.
ST-Ericsson modems support a number of Link Layers between modem and host,
currently Uart and Shared Memory are available for Linux.
Architecture:
------------
The Implementation of CAIF is divided into:
* CAIF Devices: Character Device, Net Device and Kernel API.
* CAIF Protocol Implementation
* CAIF Link Layer
In order to configure the devices a set of IOCTLs is used.
IOCTL
!
! +------+ +------+ +------+
! +------+! +------+! +------+!
! ! Chr !! !Kernel!! ! Net !!
! ! Dev !+ ! API !+ ! Dev !+ <- CAIF Devices
! +------+ +------! +------+
! ! ! !
! +----------!----------+
! +------+ <- CAIF Protocol Implementation
+-------> ! CAIF ! /dev/caifconfig
+------+
+--------!--------+
! !
+------+ +-----+
!ShMem ! ! TTY ! <- Link Layer
+------+ +-----+
Any comments welcome.
Files:
-----
net/caif/Kconfig | 61 +
net/caif/Makefile | 62 +
net/caif/caif_chnlif.c | 209 ++++
net/caif/caif_chr.c | 392 +++++++
net/caif/caif_config_util.c | 279 +++++
net/caif/chnl_chr.c | 1161 ++++++++++++++++++++
net/caif/chnl_net.c | 338 ++++++
net/caif/generic/cfcnfg.c | 722 ++++++++++++
net/caif/generic/cfctrl.c | 640 +++++++++++
net/caif/generic/cfdgml.c | 119 ++
net/caif/generic/cffrml.c | 144 +++
net/caif/generic/cflist.c | 99 ++
net/caif/generic/cfloopcfg.c | 93 ++
net/caif/generic/cflooplayer.c | 113 ++
net/caif/generic/cfmsll.c | 55 +
net/caif/generic/cfmuxl.c | 270 +++++
net/caif/generic/cfpkt_skbuff.c | 545 +++++++++
net/caif/generic/cfrfml.c | 112 ++
net/caif/generic/cfserl.c | 297 +++++
net/caif/generic/cfshml.c | 67 ++
net/caif/generic/cfspil.c | 245 ++++
net/caif/generic/cfsrvl.c | 177 +++
net/caif/generic/cfutill.c | 115 ++
net/caif/generic/cfveil.c | 118 ++
net/caif/generic/cfvidl.c | 68 ++
net/caif/generic/fcs.c | 58 +
drivers/net/caif/Kconfig | 58 +
drivers/net/caif/Makefile | 29 +
drivers/net/caif/chnl_tty.c | 217 ++++
drivers/net/caif/phyif_loop.c | 418 +++++++
drivers/net/caif/phyif_ser.c | 182 +++
drivers/net/caif/phyif_shm.c | 838 ++++++++++++++
drivers/net/caif/shm.h | 95 ++
drivers/net/caif/shm_cfgifc.c | 63 ++
drivers/net/caif/shm_mbxifc.c | 104 ++
drivers/net/caif/shm_smbx.c | 78 ++
include/linux/caif/caif_config.h | 231 ++++
include/linux/caif/caif_ioctl.h | 106 ++
include/net/caif/caif_actions.h | 81 ++
include/net/caif/caif_chr.h | 46 +
include/net/caif/caif_config_util.h | 27 +
include/net/caif/caif_kernel.h | 324 ++++++
include/net/caif/caif_log.h | 57 +
include/net/caif/generic/caif_layer.h | 476 ++++++++
include/net/caif/generic/cfcnfg.h | 223 ++++
include/net/caif/generic/cfctrl.h | 139 +++
include/net/caif/generic/cffrml.h | 29 +
include/net/caif/generic/cfglue.h | 387 +++++++
include/net/caif/generic/cfloopcfg.h | 28 +
include/net/caif/generic/cflst.h | 27 +
include/net/caif/generic/cfmsll.h | 22 +
include/net/caif/generic/cfmuxl.h | 30 +
include/net/caif/generic/cfpkt.h | 246 +++++
include/net/caif/generic/cfserl.h | 22 +
include/net/caif/generic/cfshml.h | 21 +
include/net/caif/generic/cfspil.h | 80 ++
include/net/caif/generic/cfsrvl.h | 48 +
include/net/caif/generic/fcs.h | 22 +
Regards
Sjur Brandeland
ST-Ericsson
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [RFC] CAIF Protocol Stack
2009-09-16 12:30 [RFC] CAIF Protocol Stack Sjur Brændeland
@ 2009-09-18 12:31 ` Rémi Denis-Courmont
2009-09-18 13:38 ` Sjur Brændeland
0 siblings, 1 reply; 4+ messages in thread
From: Rémi Denis-Courmont @ 2009-09-18 12:31 UTC (permalink / raw)
To: netdev
Hello,
On Wed, 16 Sep 2009 14:30:34 +0200, Sjur Brændeland
<sjur.brandeland@stericsson.com> wrote:
> The Implementation of CAIF is divided into:
> * CAIF Devices: Character Device, Net Device and Kernel API.
> * CAIF Protocol Implementation
> * CAIF Link Layer
I'm a bit confused here. What do you call a CAIF Device?
Do you mean a GPRS context is a network device, and an AT command interface
is a character device? Or is the CAIF modem a device? or what?
--
Rémi Denis-Courmont
^ permalink raw reply [flat|nested] 4+ messages in thread* RE: [RFC] CAIF Protocol Stack
2009-09-18 12:31 ` Rémi Denis-Courmont
@ 2009-09-18 13:38 ` Sjur Brændeland
0 siblings, 0 replies; 4+ messages in thread
From: Sjur Brændeland @ 2009-09-18 13:38 UTC (permalink / raw)
To: Rémi Denis-Courmont, netdev
> -----Original Message-----
> From: Rémi Denis-Courmont
> Sent: 18. september 2009 14:32
> Hello,
>
> On Wed, 16 Sep 2009 14:30:34 +0200, Sjur Brændeland
> <sjur.brandeland@stericsson.com> wrote:
> > The Implementation of CAIF is divided into:
> > * CAIF Devices: Character Device, Net Device and Kernel API.
> > * CAIF Protocol Implementation
> > * CAIF Link Layer
>
> I'm a bit confused here. What do you call a CAIF Device?
>
> Do you mean a GPRS context is a network device, and an AT
> command interface is a character device? Or is the CAIF modem
> a device? or what?
What I meant was:
* "Net Device" - a "struct net_device" with one instance for each GPRS PDP context.
* "Character Device" - a chr device, with one instance for each AT channel towards the modem.
BR/Sjur Brændeland
^ permalink raw reply [flat|nested] 4+ messages in thread
* RE: [RFC] CAIF Protocol Stack
@ 2009-09-18 12:01 Sjur Brændeland
0 siblings, 0 replies; 4+ messages in thread
From: Sjur Brændeland @ 2009-09-18 12:01 UTC (permalink / raw)
To: David Miller; +Cc: netdev
Hi David.
I understand that you are one of the main Maintainers of netdev.
As explained below we have a largeish driver we would like to contribute.
I realize we should have started contributing this on a earlier stage...., but
What is the preferred way of doing this, i.e. how should we split it up?
Submit the whole shebang,
Or
Split Horizontally e.g. a) CAIF-Protocol, b) GPRS-Net-Device c) CAIF-Link Layer
Or
Split Vertically e.g. a) Payload Path Net-Device, b) Payload Path AT-channel, c) Configuration
Which kernel GIT should we base the patch set on?
Any hints on this would be greatly appreciated.
Best Regards
Sjur Brændeland
ST-Ericsson
> -----Original Message-----
> From: Sjur Brændeland
> Sent: 16. september 2009 14:31
> To: 'netdev@vger.kernel.org'
> Subject: [RFC] CAIF Protocol Stack
>
> Hello,
>
> We are currently working on a patch set in order to introduce
> the CAIF protocol in Linux. CAIF (Communication CPU to
> Application CPU Interface) is the primary protocol used to
> communicate between to ST-Ericsson modem and external host system.
>
> The host processes can use CAIF to open virtual AT channels,
> initiate GPRS Data connections, Video channels and Utility Channels.
> The Utility Channels are general purpose pipes between modem and host.
>
> ST-Ericsson modems support a number of Link Layers between
> modem and host, currently Uart and Shared Memory are
> available for Linux.
>
> Architecture:
> ------------
> The Implementation of CAIF is divided into:
> * CAIF Devices: Character Device, Net Device and Kernel API.
> * CAIF Protocol Implementation
> * CAIF Link Layer
>
> In order to configure the devices a set of IOCTLs is used.
>
>
>
> IOCTL
> !
> ! +------+ +------+ +------+
> ! +------+! +------+! +------+!
> ! ! Chr !! !Kernel!! ! Net !!
> ! ! Dev !+ ! API !+ ! Dev !+ <- CAIF Devices
> ! +------+ +------! +------+
> ! ! ! !
> ! +----------!----------+
> ! +------+ <- CAIF Protocol
> Implementation
> +-------> ! CAIF ! /dev/caifconfig
> +------+
> +--------!--------+
> ! !
> +------+ +-----+
> !ShMem ! ! TTY ! <- Link Layer
> +------+ +-----+
>
> Any comments welcome.
>
>
>
> Files:
> -----
>
> net/caif/Kconfig | 61 +
> net/caif/Makefile | 62 +
> net/caif/caif_chnlif.c | 209 ++++
> net/caif/caif_chr.c | 392 +++++++
> net/caif/caif_config_util.c | 279 +++++
> net/caif/chnl_chr.c | 1161
> ++++++++++++++++++++
> net/caif/chnl_net.c | 338 ++++++
> net/caif/generic/cfcnfg.c | 722
> ++++++++++++
> net/caif/generic/cfctrl.c | 640 +++++++++++
> net/caif/generic/cfdgml.c | 119 ++
> net/caif/generic/cffrml.c | 144 +++
> net/caif/generic/cflist.c | 99 ++
> net/caif/generic/cfloopcfg.c | 93 ++
> net/caif/generic/cflooplayer.c | 113 ++
> net/caif/generic/cfmsll.c | 55 +
> net/caif/generic/cfmuxl.c | 270 +++++
> net/caif/generic/cfpkt_skbuff.c | 545 +++++++++
> net/caif/generic/cfrfml.c | 112 ++
> net/caif/generic/cfserl.c | 297 +++++
> net/caif/generic/cfshml.c | 67 ++
> net/caif/generic/cfspil.c | 245 ++++
> net/caif/generic/cfsrvl.c | 177 +++
> net/caif/generic/cfutill.c | 115 ++
> net/caif/generic/cfveil.c | 118 ++
> net/caif/generic/cfvidl.c | 68 ++
> net/caif/generic/fcs.c | 58 +
>
> drivers/net/caif/Kconfig | 58 +
> drivers/net/caif/Makefile | 29 +
> drivers/net/caif/chnl_tty.c | 217 ++++
> drivers/net/caif/phyif_loop.c | 418 +++++++
> drivers/net/caif/phyif_ser.c | 182 +++
> drivers/net/caif/phyif_shm.c | 838
> ++++++++++++++
> drivers/net/caif/shm.h | 95 ++
> drivers/net/caif/shm_cfgifc.c | 63 ++
> drivers/net/caif/shm_mbxifc.c | 104 ++
> drivers/net/caif/shm_smbx.c | 78 ++
>
> include/linux/caif/caif_config.h | 231 ++++
> include/linux/caif/caif_ioctl.h | 106 ++
> include/net/caif/caif_actions.h | 81 ++
> include/net/caif/caif_chr.h | 46 +
> include/net/caif/caif_config_util.h | 27 +
> include/net/caif/caif_kernel.h | 324 ++++++
> include/net/caif/caif_log.h | 57 +
> include/net/caif/generic/caif_layer.h | 476 ++++++++
> include/net/caif/generic/cfcnfg.h | 223 ++++
> include/net/caif/generic/cfctrl.h | 139 +++
> include/net/caif/generic/cffrml.h | 29 +
> include/net/caif/generic/cfglue.h | 387 +++++++
> include/net/caif/generic/cfloopcfg.h | 28 +
> include/net/caif/generic/cflst.h | 27 +
> include/net/caif/generic/cfmsll.h | 22 +
> include/net/caif/generic/cfmuxl.h | 30 +
> include/net/caif/generic/cfpkt.h | 246 +++++
> include/net/caif/generic/cfserl.h | 22 +
> include/net/caif/generic/cfshml.h | 21 +
> include/net/caif/generic/cfspil.h | 80 ++
> include/net/caif/generic/cfsrvl.h | 48 +
> include/net/caif/generic/fcs.h | 22 +
>
>
>
> Regards
> Sjur Brandeland
> ST-Ericsson
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2009-09-18 13:38 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-09-16 12:30 [RFC] CAIF Protocol Stack Sjur Brændeland
2009-09-18 12:31 ` Rémi Denis-Courmont
2009-09-18 13:38 ` Sjur Brændeland
-- strict thread matches above, loose matches on Subject: below --
2009-09-18 12:01 Sjur Brændeland
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox