sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget./translations/zh_CN/networking/caif/linux_caifmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget./translations/zh_TW/networking/caif/linux_caifmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget./translations/it_IT/networking/caif/linux_caifmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget./translations/ja_JP/networking/caif/linux_caifmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget./translations/ko_KR/networking/caif/linux_caifmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget./translations/sp_SP/networking/caif/linux_caifmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhH/var/lib/git/docbuild/linux/Documentation/networking/caif/linux_caif.rsthKubh)}(h4This data file has been placed in the public domain.h]h4This data file has been placed in the public domain.}hhsbah}(h]h ]h"]h$]h&]hhuh1hhhhhho/srv/docbuild/lib/venvs/build-kernel-docs/lib64/python3.9/site-packages/docutils/parsers/rst/include/isonum.txthKubh)}(hDerived from the Unicode character mappings available from . Processed by unicode2rstsubs.py, part of Docutils: .h]hDerived from the Unicode character mappings available from . Processed by unicode2rstsubs.py, part of Docutils: .}hhsbah}(h]h ]h"]h$]h&]hhuh1hhhhhhhhKubhsubstitution_definition)}(h*.. |amp| unicode:: U+00026 .. AMPERSANDh]h&}hhsbah}(h]h ]h"]ampah$]h&]uh1hhhhKhhhhubh)}(h+.. |apos| unicode:: U+00027 .. APOSTROPHEh]h'}hhsbah}(h]h ]h"]aposah$]h&]uh1hhhhKhhhhubh)}(h).. |ast| unicode:: U+0002A .. ASTERISKh]h*}hhsbah}(h]h ]h"]astah$]h&]uh1hhhhK hhhhubh)}(h+.. |brvbar| unicode:: U+000A6 .. BROKEN BARh]h¦}hjsbah}(h]h ]h"]brvbarah$]h&]uh1hhhhK hhhhubh)}(h0.. |bsol| unicode:: U+0005C .. REVERSE SOLIDUSh]h\}hjsbah}(h]h ]h"]bsolah$]h&]uh1hhhhK hhhhubh)}(h*.. |cent| unicode:: U+000A2 .. CENT SIGNh]h¢}hjsbah}(h]h ]h"]centah$]h&]uh1hhhhK hhhhubh)}(h&.. |colon| unicode:: U+0003A .. COLONh]h:}hj-sbah}(h]h ]h"]colonah$]h&]uh1hhhhK hhhhubh)}(h&.. |comma| unicode:: U+0002C .. COMMAh]h,}hj<sbah}(h]h ]h"]commaah$]h&]uh1hhhhKhhhhubh)}(h... |commat| unicode:: U+00040 .. COMMERCIAL ATh]h@}hjKsbah}(h]h ]h"]commatah$]h&]uh1hhhhKhhhhubh)}(h/.. |copy| unicode:: U+000A9 .. COPYRIGHT SIGNh]h©}hjZsbah}(h]h ]h"]copyah$]h&]uh1hhhhKhhhhubh)}(h... |curren| unicode:: U+000A4 .. CURRENCY SIGNh]h¤}hjisbah}(h]h ]h"]currenah$]h&]uh1hhhhKhhhhubh)}(h0.. |darr| unicode:: U+02193 .. DOWNWARDS ARROWh]h↓}hjxsbah}(h]h ]h"]darrah$]h&]uh1hhhhKhhhhubh)}(h,.. |deg| unicode:: U+000B0 .. DEGREE SIGNh]h°}hjsbah}(h]h ]h"]degah$]h&]uh1hhhhKhhhhubh)}(h... |divide| unicode:: U+000F7 .. DIVISION SIGNh]h÷}hjsbah}(h]h ]h"]divideah$]h&]uh1hhhhKhhhhubh)}(h,.. |dollar| unicode:: U+00024 .. DOLLAR SIGNh]h$}hjsbah}(h]h ]h"]dollarah$]h&]uh1hhhhKhhhhubh)}(h,.. |equals| unicode:: U+0003D .. EQUALS SIGNh]h=}hjsbah}(h]h ]h"]equalsah$]h&]uh1hhhhKhhhhubh)}(h1.. |excl| unicode:: U+00021 .. EXCLAMATION MARKh]h!}hjsbah}(h]h ]h"]exclah$]h&]uh1hhhhKhhhhubh)}(h9.. |frac12| unicode:: U+000BD .. VULGAR FRACTION ONE HALFh]h½}hjsbah}(h]h ]h"]frac12ah$]h&]uh1hhhhKhhhhubh)}(h<.. |frac14| unicode:: U+000BC .. VULGAR FRACTION ONE QUARTERh]h¼}hjsbah}(h]h ]h"]frac14ah$]h&]uh1hhhhKhhhhubh)}(h;.. |frac18| unicode:: U+0215B .. VULGAR FRACTION ONE EIGHTHh]h⅛}hjsbah}(h]h ]h"]frac18ah$]h&]uh1hhhhKhhhhubh)}(h?.. |frac34| unicode:: U+000BE .. VULGAR FRACTION THREE QUARTERSh]h¾}hjsbah}(h]h ]h"]frac34ah$]h&]uh1hhhhKhhhhubh)}(h>.. |frac38| unicode:: U+0215C .. VULGAR FRACTION THREE EIGHTHSh]h⅜}hjsbah}(h]h ]h"]frac38ah$]h&]uh1hhhhKhhhhubh)}(h=.. |frac58| unicode:: U+0215D .. VULGAR FRACTION FIVE EIGHTHSh]h⅝}hjsbah}(h]h ]h"]frac58ah$]h&]uh1hhhhKhhhhubh)}(h>.. |frac78| unicode:: U+0215E .. VULGAR FRACTION SEVEN EIGHTHSh]h⅞}hj,sbah}(h]h ]h"]frac78ah$]h&]uh1hhhhKhhhhubh)}(h2.. |gt| unicode:: U+0003E .. GREATER-THAN SIGNh]h>}hj;sbah}(h]h ]h"]gtah$]h&]uh1hhhhKhhhhubh)}(h9.. |half| unicode:: U+000BD .. VULGAR FRACTION ONE HALFh]h½}hjJsbah}(h]h ]h"]halfah$]h&]uh1hhhhK hhhhubh)}(h/.. |horbar| unicode:: U+02015 .. HORIZONTAL BARh]h―}hjYsbah}(h]h ]h"]horbarah$]h&]uh1hhhhK!hhhhubh)}(h'.. |hyphen| unicode:: U+02010 .. HYPHENh]h‐}hjhsbah}(h]h ]h"]hyphenah$]h&]uh1hhhhK"hhhhubh)}(h:.. |iexcl| unicode:: U+000A1 .. INVERTED EXCLAMATION MARKh]h¡}hjwsbah}(h]h ]h"]iexclah$]h&]uh1hhhhK#hhhhubh)}(h7.. |iquest| unicode:: U+000BF .. INVERTED QUESTION MARKh]h¿}hjsbah}(h]h ]h"]iquestah$]h&]uh1hhhhK$hhhhubh)}(hJ.. |laquo| unicode:: U+000AB .. LEFT-POINTING DOUBLE ANGLE QUOTATION MARKh]h«}hjsbah}(h]h ]h"]laquoah$]h&]uh1hhhhK%hhhhubh)}(h0.. |larr| unicode:: U+02190 .. LEFTWARDS ARROWh]h←}hjsbah}(h]h ]h"]larrah$]h&]uh1hhhhK&hhhhubh)}(h3.. |lcub| unicode:: U+0007B .. LEFT CURLY BRACKETh]h{}hjsbah}(h]h ]h"]lcubah$]h&]uh1hhhhK'hhhhubh)}(h;.. |ldquo| unicode:: U+0201C .. LEFT DOUBLE QUOTATION MARKh]h“}hjsbah}(h]h ]h"]ldquoah$]h&]uh1hhhhK(hhhhubh)}(h).. |lowbar| unicode:: U+0005F .. LOW LINEh]h_}hjsbah}(h]h ]h"]lowbarah$]h&]uh1hhhhK)hhhhubh)}(h1.. |lpar| unicode:: U+00028 .. LEFT PARENTHESISh]h(}hjsbah}(h]h ]h"]lparah$]h&]uh1hhhhK*hhhhubh)}(h4.. |lsqb| unicode:: U+0005B .. LEFT SQUARE BRACKETh]h[}hjsbah}(h]h ]h"]lsqbah$]h&]uh1hhhhK+hhhhubh)}(h;.. |lsquo| unicode:: U+02018 .. LEFT SINGLE QUOTATION MARKh]h‘}hjsbah}(h]h ]h"]lsquoah$]h&]uh1hhhhK,hhhhubh)}(h/.. |lt| unicode:: U+0003C .. LESS-THAN SIGNh]h<}hj sbah}(h]h ]h"]ltah$]h&]uh1hhhhK-hhhhubh)}(h+.. |micro| unicode:: U+000B5 .. MICRO SIGNh]hµ}hjsbah}(h]h ]h"]microah$]h&]uh1hhhhK.hhhhubh)}(h+.. |middot| unicode:: U+000B7 .. MIDDLE DOTh]h·}hj+sbah}(h]h ]h"]middotah$]h&]uh1hhhhK/hhhhubh)}(h/.. |nbsp| unicode:: U+000A0 .. NO-BREAK SPACEh]h }hj:sbah}(h]h ]h"]nbspah$]h&]uh1hhhhK0hhhhubh)}(h).. |not| unicode:: U+000AC .. NOT SIGNh]h¬}hjIsbah}(h]h ]h"]notah$]h&]uh1hhhhK1hhhhubh)}(h,.. |num| unicode:: U+00023 .. NUMBER SIGNh]h#}hjXsbah}(h]h ]h"]numah$]h&]uh1hhhhK2hhhhubh)}(h).. |ohm| unicode:: U+02126 .. OHM SIGNh]hΩ}hjgsbah}(h]h ]h"]ohmah$]h&]uh1hhhhK3hhhhubh)}(h;.. |ordf| unicode:: U+000AA .. FEMININE ORDINAL INDICATORh]hª}hjvsbah}(h]h ]h"]ordfah$]h&]uh1hhhhK4hhhhubh)}(h<.. |ordm| unicode:: U+000BA .. MASCULINE ORDINAL INDICATORh]hº}hjsbah}(h]h ]h"]ordmah$]h&]uh1hhhhK5hhhhubh)}(h-.. |para| unicode:: U+000B6 .. PILCROW SIGNh]h¶}hjsbah}(h]h ]h"]paraah$]h&]uh1hhhhK6hhhhubh)}(h-.. |percnt| unicode:: U+00025 .. PERCENT SIGNh]h%}hjsbah}(h]h ]h"]percntah$]h&]uh1hhhhK7hhhhubh)}(h*.. |period| unicode:: U+0002E .. FULL STOPh]h.}hjsbah}(h]h ]h"]periodah$]h&]uh1hhhhK8hhhhubh)}(h*.. |plus| unicode:: U+0002B .. PLUS SIGNh]h+}hjsbah}(h]h ]h"]plusah$]h&]uh1hhhhK9hhhhubh)}(h0.. |plusmn| unicode:: U+000B1 .. PLUS-MINUS SIGNh]h±}hjsbah}(h]h ]h"]plusmnah$]h&]uh1hhhhK:hhhhubh)}(h+.. |pound| unicode:: U+000A3 .. POUND SIGNh]h£}hjsbah}(h]h ]h"]poundah$]h&]uh1hhhhK;hhhhubh)}(h... |quest| unicode:: U+0003F .. QUESTION MARKh]h?}hjsbah}(h]h ]h"]questah$]h&]uh1hhhhKhhhhubh)}(h1.. |rarr| unicode:: U+02192 .. RIGHTWARDS ARROWh]h→}hjsbah}(h]h ]h"]rarrah$]h&]uh1hhhhK?hhhhubh)}(h4.. |rcub| unicode:: U+0007D .. RIGHT CURLY BRACKETh]h}}hj*sbah}(h]h ]h"]rcubah$]h&]uh1hhhhK@hhhhubh)}(h<.. |rdquo| unicode:: U+0201D .. RIGHT DOUBLE QUOTATION MARKh]h”}hj9sbah}(h]h ]h"]rdquoah$]h&]uh1hhhhKAhhhhubh)}(h0.. |reg| unicode:: U+000AE .. REGISTERED SIGNh]h®}hjHsbah}(h]h ]h"]regah$]h&]uh1hhhhKBhhhhubh)}(h2.. |rpar| unicode:: U+00029 .. RIGHT PARENTHESISh]h)}hjWsbah}(h]h ]h"]rparah$]h&]uh1hhhhKChhhhubh)}(h5.. |rsqb| unicode:: U+0005D .. RIGHT SQUARE BRACKETh]h]}hjfsbah}(h]h ]h"]rsqbah$]h&]uh1hhhhKDhhhhubh)}(h<.. |rsquo| unicode:: U+02019 .. RIGHT SINGLE QUOTATION MARKh]h’}hjusbah}(h]h ]h"]rsquoah$]h&]uh1hhhhKEhhhhubh)}(h-.. |sect| unicode:: U+000A7 .. SECTION SIGNh]h§}hjsbah}(h]h ]h"]sectah$]h&]uh1hhhhKFhhhhubh)}(h*.. |semi| unicode:: U+0003B .. SEMICOLONh]h;}hjsbah}(h]h ]h"]semiah$]h&]uh1hhhhKGhhhhubh)}(h,.. |shy| unicode:: U+000AD .. SOFT HYPHENh]h­}hjsbah}(h]h ]h"]shyah$]h&]uh1hhhhKHhhhhubh)}(h(.. |sol| unicode:: U+0002F .. SOLIDUSh]h/}hjsbah}(h]h ]h"]solah$]h&]uh1hhhhKIhhhhubh)}(h,.. |sung| unicode:: U+0266A .. EIGHTH NOTEh]h♪}hjsbah}(h]h ]h"]sungah$]h&]uh1hhhhKJhhhhubh)}(h0.. |sup1| unicode:: U+000B9 .. SUPERSCRIPT ONEh]h¹}hjsbah}(h]h ]h"]sup1ah$]h&]uh1hhhhKKhhhhubh)}(h0.. |sup2| unicode:: U+000B2 .. SUPERSCRIPT TWOh]h²}hjsbah}(h]h ]h"]sup2ah$]h&]uh1hhhhKLhhhhubh)}(h2.. |sup3| unicode:: U+000B3 .. SUPERSCRIPT THREEh]h³}hjsbah}(h]h ]h"]sup3ah$]h&]uh1hhhhKMhhhhubh)}(h4.. |times| unicode:: U+000D7 .. MULTIPLICATION SIGNh]h×}hjsbah}(h]h ]h"]timesah$]h&]uh1hhhhKNhhhhubh)}(h0.. |trade| unicode:: U+02122 .. TRADE MARK SIGNh]h™}hj sbah}(h]h ]h"]tradeah$]h&]uh1hhhhKOhhhhubh)}(h... |uarr| unicode:: U+02191 .. UPWARDS ARROWh]h↑}hjsbah}(h]h ]h"]uarrah$]h&]uh1hhhhKPhhhhubh)}(h... |verbar| unicode:: U+0007C .. VERTICAL LINEh]h|}hj)sbah}(h]h ]h"]verbarah$]h&]uh1hhhhKQhhhhubh)}(h*.. |yen| unicode:: U+000A5 .. YEN SIGN h]h¥}hj8sbah}(h]h ]h"]yenah$]h&]uh1hhhhKRhhhhubhsection)}(hhh](htitle)}(h Linux CAIFh]h Linux CAIF}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjIhhhhhKubh paragraph)}(h$Copyright |copy| ST-Ericsson AB 2010h](h Copyright }(hj^hhhNhNubh©}(hj^hhhNhNubh ST-Ericsson AB 2010}(hj^hhhNhNubeh}(h]h ]h"]h$]h&]uh1j\hhhKhjIhhubh field_list)}(hhh](hfield)}(hhh](h field_name)}(hAuthorh]hAuthor}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j~hj{hhhKubh field_body)}(h/Sjur Brendeland/ sjur.brandeland@stericsson.comh]j])}(hjh](hSjur Brendeland/ }(hjhhhNhNubh reference)}(hsjur.brandeland@stericsson.comh]hsjur.brandeland@stericsson.com}(hjhhhNhNubah}(h]h ]h"]h$]h&]refuri%mailto:sjur.brandeland@stericsson.comuh1jhjubeh}(h]h ]h"]h$]h&]uh1j\hhhK hjubah}(h]h ]h"]h$]h&]uh1jhj{ubeh}(h]h ]h"]h$]h&]uh1jyhhhK hjvhhubjz)}(hhh](j)}(h License termsh]h License terms}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j~hjhhhKubj)}(h,GNU General Public License (GPL) version 2 h]j])}(h*GNU General Public License (GPL) version 2h]h*GNU General Public License (GPL) version 2}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hhhK hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]uh1jyhhhK hjvhhubeh}(h]h ]h"]h$]h&]uh1jthjIhhhhhK ubjH)}(hhh](jM)}(h Introductionh]h Introduction}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjhhhhhKubj])}(hX!CAIF is a MUX protocol used by ST-Ericsson cellular modems for communication between Modem and host. The host processes can open virtual AT channels, initiate GPRS Data connections, Video channels and Utility Channels. The Utility Channels are general purpose pipes between modem and host.h]hX!CAIF is a MUX protocol used by ST-Ericsson cellular modems for communication between Modem and host. The host processes can open virtual AT channels, initiate GPRS Data connections, Video channels and Utility Channels. The Utility Channels are general purpose pipes between modem and host.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hhhKhjhhubj])}(hST-Ericsson modems support a number of transports between modem and host. Currently, UART and Loopback are available for Linux.h]hST-Ericsson modems support a number of transports between modem and host. Currently, UART and Loopback are available for Linux.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hhhKhjhhubeh}(h] introductionah ]h"] introductionah$]h&]uh1jGhjIhhhhhKubjH)}(hhh](jM)}(h Architectureh]h Architecture}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj)hhhhhKubj])}(h+The implementation of CAIF is divided into:h]h+The implementation of CAIF is divided into:}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hhhKhj)hhubh bullet_list)}(hhh](h list_item)}(h(CAIF Socket Layer and GPRS IP Interface.h]j])}(hjQh]h(CAIF Socket Layer and GPRS IP Interface.}(hjShhhNhNubah}(h]h ]h"]h$]h&]uh1j\hhhKhjOubah}(h]h ]h"]h$]h&]uh1jMhjJhhhhhNubjN)}(h!CAIF Core Protocol Implementationh]j])}(hjhh]h!CAIF Core Protocol Implementation}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hhhK hjfubah}(h]h ]h"]h$]h&]uh1jMhjJhhhhhNubjN)}(h-CAIF Link Layer, implemented as NET devices. h]j])}(h,CAIF Link Layer, implemented as NET devices.h]h,CAIF Link Layer, implemented as NET devices.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hhhK!hj}ubah}(h]h ]h"]h$]h&]uh1jMhjJhhhhhNubeh}(h]h ]h"]h$]h&]bullet*uh1jHhhhKhj)hhubh literal_block)}(hXbRTNL ! ! +------+ +------+ ! +------+! +------+! ! ! IP !! !Socket!! +-------> !interf!+ ! API !+ <- CAIF Client APIs ! +------+ +------! ! ! ! ! +-----------+ ! ! ! +------+ <- CAIF Core Protocol ! ! CAIF ! ! ! Core ! ! +------+ ! +----------!---------+ ! ! ! ! ! +------+ +-----+ +------+ +--> ! HSI ! ! TTY ! ! USB ! <- Link Layer (Net Devices) +------+ +-----+ +------+h]hXbRTNL ! ! +------+ +------+ ! +------+! +------+! ! ! IP !! !Socket!! +-------> !interf!+ ! API !+ <- CAIF Client APIs ! +------+ +------! ! ! ! ! +-----------+ ! ! ! +------+ <- CAIF Core Protocol ! ! CAIF ! ! ! Core ! ! +------+ ! +----------!---------+ ! ! ! ! ! +------+ +-----+ +------+ +--> ! HSI ! ! TTY ! ! USB ! <- Link Layer (Net Devices) +------+ +-----+ +------+}hjsbah}(h]h ]h"]h$]h&]hhuh1jhhhK%hj)hhubeh}(h] architectureah ]h"] architectureah$]h&]uh1jGhjIhhhhhKubjH)}(hhh](jM)}(hImplementationh]hImplementation}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jLhjhhhhhKh]h:Clients must call configuration function to add PHY layer.}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hhhKPhj<ubah}(h]h ]h"]h$]h&]uh1jMhj ubjN)}(hfClients must implement CAIF layer to consume/produce CAIF payload with receive and transmit functions.h]j])}(hfClients must implement CAIF layer to consume/produce CAIF payload with receive and transmit functions.h]hfClients must implement CAIF layer to consume/produce CAIF payload with receive and transmit functions.}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hhhKQhjSubah}(h]h ]h"]h$]h&]uh1jMhj ubjN)}(hMClients must call configuration function to add and connect the Client layer.h]j])}(hMClients must call configuration function to add and connect the Client layer.h]hMClients must call configuration function to add and connect the Client layer.}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1j\hhhKShjkubah}(h]h ]h"]h$]h&]uh1jMhj ubjN)}(hWhen receiving / transmitting CAIF Packets (cfpkt), ownership is passed to the called function (except for framing layers' receive function) h]j])}(hWhen receiving / transmitting CAIF Packets (cfpkt), ownership is passed to the called function (except for framing layers' receive function)h]hWhen receiving / transmitting CAIF Packets (cfpkt), ownership is passed to the called function (except for framing layers’ receive function)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j\hhhKUhjubah}(h]h ]h"]h$]h&]uh1jMhj ubeh}(h]h ]h"]h$]h&]j-uh1jHhhhKMhjubah}(h]h ]h"]h$]h&]uh1jhhhKMhjhhubeh}(h]caif-structureah ]h"]caif structureah$]h&]uh1jGhjhhhhhKIubeh}(h]caif-core-protocol-layerah ]h"]caif core protocol layerah$]h&]uh1jGhjhhhhhK@ubeh}(h]implementationah ]h"]implementationah$]h&]uh1jGhjIhhhhhKup , layer->dn - In order to send data upwards, each layer should do:: layer->up->receive(layer->up, packet); - In order to send data downwards, each layer should do:: layer->dn->transmit(layer->dn, packet); h]jI)}(hhh](jN)}(h4All layers embed the same structure "struct cflayer"h]j])}(hj h]h8All layers embed the same structure “struct cflayer”}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hhhKhj ubah}(h]h ]h"]h$]h&]uh1jMhj ubjN)}(h:A layer does not depend on any other layer's private data.h]j])}(hj' h]hup , layer->dn h](j])}(h,Layers are stacked by setting the pointers::h]h+Layers are stacked by setting the pointers:}(hj@ hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hhhKhj< ubj)}(hlayer->up , layer->dnh]hlayer->up , layer->dn}hjN sbah}(h]h ]h"]h$]h&]hhuh1jhhhKhj< ubeh}(h]h ]h"]h$]h&]uh1jMhj ubjN)}(hgIn order to send data upwards, each layer should do:: layer->up->receive(layer->up, packet); h](j])}(h5In order to send data upwards, each layer should do::h]h4In order to send data upwards, each layer should do:}(hjf hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hhhKhjb ubj)}(h&layer->up->receive(layer->up, packet);h]h&layer->up->receive(layer->up, packet);}hjt sbah}(h]h ]h"]h$]h&]hhuh1jhhhKhjb ubeh}(h]h ]h"]h$]h&]uh1jMhj ubjN)}(hkIn order to send data downwards, each layer should do:: layer->dn->transmit(layer->dn, packet); h](j])}(h7In order to send data downwards, each layer should do::h]h6In order to send data downwards, each layer should do:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hhhKhj ubj)}(h'layer->dn->transmit(layer->dn, packet);h]h'layer->dn->transmit(layer->dn, packet);}hj sbah}(h]h ]h"]h$]h&]hhuh1jhhhKhj ubeh}(h]h ]h"]h$]h&]uh1jMhj ubeh}(h]h ]h"]h$]h&]jjuh1jHhhhKhj ubah}(h]h ]h"]h$]h&]uh1jhhhKhjhhubeh}(h]layered-architectureah ]h"]layered architectureah$]h&]uh1jGhjIhhhhhKYubjH)}(hhh](jM)}(hCAIF Socket and IP interfaceh]hCAIF Socket and IP interface}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj hhhhhKubj])}(hXThe IP interface and CAIF socket API are implemented on top of the CAIF Core protocol. The IP Interface and CAIF socket have an instance of 'struct cflayer', just like the CAIF Core protocol stack. Net device and Socket implement the 'receive()' function defined by 'struct cflayer', just like the rest of the CAIF stack. In this way, transmit and receive of packets is handled as by the rest of the layers: the 'dn->transmit()' function is called in order to transmit data.h]hXThe IP interface and CAIF socket API are implemented on top of the CAIF Core protocol. The IP Interface and CAIF socket have an instance of ‘struct cflayer’, just like the CAIF Core protocol stack. Net device and Socket implement the ‘receive()’ function defined by ‘struct cflayer’, just like the rest of the CAIF stack. In this way, transmit and receive of packets is handled as by the rest of the layers: the ‘dn->transmit()’ function is called in order to transmit data.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hhhKhj hhubjH)}(hhh](jM)}(hConfiguration of Link Layerh]hConfiguration of Link Layer}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jLhj hhhhhKubj])}(hThe Link Layer is implemented as Linux network devices (struct net_device). Payload handling and registration is done using standard Linux mechanisms.h]hThe Link Layer is implemented as Linux network devices (struct net_device). Payload handling and registration is done using standard Linux mechanisms.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hhhKhj hhubj])}(hXThe CAIF Protocol relies on a loss-less link layer without implementing retransmission. This implies that packet drops must not happen. Therefore a flow-control mechanism is implemented where the physical interface can initiate flow stop for all CAIF Channels.h]hXThe CAIF Protocol relies on a loss-less link layer without implementing retransmission. This implies that packet drops must not happen. Therefore a flow-control mechanism is implemented where the physical interface can initiate flow stop for all CAIF Channels.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j\hhhKhj hhubeh}(h]configuration-of-link-layerah ]h"]configuration of link layerah$]h&]uh1jGhj hhhhhKubeh}(h]caif-socket-and-ip-interfaceah ]h"]caif socket and ip interfaceah$]h&]uh1jGhjIhhhhhKubeh}(h] linux-caifah ]h"] linux caifah$]h&]uh1jGhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(jLN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjI error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}(hhhhhhj jjjj*jj9j-jHj<jWjKjfjZjujijjxjjjjjjjjjjjjjjjjj jjjj)jj8j,jGj;jVjJjejYjtjhjjwjjjjjjjjjjjjjjjjj jjj j(jj7j+jFj:jUjIjdjXjsjgjjvjjjjjjjjjjjjjjjjj jjj j'jj6j*jEj9jTjHjcjWjrjfjjujjjjjjjjjjjjjjjjjjjj j&jj5j)jDj8usubstitution_names}(amphߌaposhasthbrvbarj bsoljcentj*colonj9commajHcommatjWcopyjfcurrenjudarrjdegjdividejdollarjequalsjexcljfrac12jfrac14jfrac18jfrac34j frac38jfrac58j)frac78j8gtjGhalfjVhorbarjehyphenjtiexcljiquestjlaquojlarrjlcubjldquojlowbarjlparjlsqbjlsquoj ltjmicroj(middotj7nbspjFnotjUnumjdohmjsordfjordmjparajpercntjperiodjplusjplusmnjpoundjquestjquotj raquojrarrj'rcubj6rdquojEregjTrparjcrsqbjrrsquojsectjsemijshyjsoljsungjsup1jsup2jsup3jtimesjtradejuarrj&verbarj5yenjDurefnames}refids}nameids}(j# j j&j#jjjjjjjjj j j j j j u nametypes}(j# j&jjjjj j j uh}(j jIj#jjj)jjjjjjj jj j j j u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log],Documentation/networking/caif/linux_caif.rst(NNNNta decorationNhhub.