RE: [RFC] CAIF Protocol Stack
From: Sjur Brændeland <hidden>
Date: 2009-09-18 12:16:52
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