linux/net/caif/chnl_net.c
<<
> > p/spa pspa class="lxr_search"> > ="+search" method="post" onsubmit="return do_search(this);"> > > > Search > p/spa > ="ajax+*" method="post" onsubmit="return false;"> pinput typ"v4hidden" nam"v4ajax_lookup" idv4ajax_lookup" lue="v4"> >
pdiv idv4file_contents"
o o1p/a>pspa
 class="comment">/*p/spa
  o o2p/a>pspa
 class="comment"> * Copyright (C) ST-Ericss vaAB 20o o3p/a>pspa
 class="comment"> * Authors:
o o4p/a>pspa
 class="comment"> *              Daniel Martenss va/ Daniel.Martenss v@stericss v.comopspa
  o o5p/a>pspa
 class="comment"> * License terms:
GNU General Public License (GPL) versn va2opspa
  o o6p/a>pspa
 class="comment"> */opspa
  o o7p/a> o o8p/a>#defineopa href="+code=pr_fmt" class="sref">pr_fmtp/a>(pa href="+code=fmt" class="sref">fmtp/a>)opa href="+code=KBUILD_MODNAME" class="sref">KBUILD_MODNAMEp/a> pspa
 class="string">":%s(): "opspa
 opa href="+code=fmt" class="sref">fmtp/a>,opa href="+code=__func__" class="sref">__func__p/a> o o9p/a> o #include <oa href="include/linux/fs.h" class="fref">linux/fs.hopa>> o 11opa>#include <oa href="include/linux/hardirq.h" class="fref">linux/hardirq.hopa>> o 12opa>#include <oa href="include/linux/init.h" class="fref">linux/init.hopa>> o 13opa>#include <oa href="include/linux/module.h" class="fref">linux/module.hopa>> o 14opa>#include <oa href="include/linux/netdevice.h" class="fref">linux/netdevice.hopa>> o 15opa>#include <oa href="include/linux/if_ether.h" class="fref">linux/if_ether.hopa>> o 16opa>#include <oa href="include/linux/moduleparam.h" class="fref">linux/moduleparam.hopa>> o 17opa>#include <oa href="include/linux/ip.h" class="fref">linux/ip.hopa>> o 18opa>#include <oa href="include/linux/sched.h" class="fref">linux/sched.hopa>> o 19opa>#include <oa href="include/linux/sockios.h" class="fref">linux/sockios.hopa>> o 2/opa>#include <oa href="include/linux/caif/if_caif.h" class="fref">linux/caif/if_caif.hopa>> o 21opa>#include <oa href="include/net/rtnetlink.h" class="fref">net/rtnetlink.hopa>> o 22opa>#include <oa href="include/net/caif/caif_layer.h" class="fref">net/caif/caif_layer.hopa>> o 23opa>#include <oa href="include/net/caif/cfpkt.h" class="fref">net/caif/cfpkt.hopa>> o 24opa>#include <oa href="include/net/caif/caif_dev.h" class="fref">net/caif/caif_dev.hopa>> o 25p/a> o 26p/a>pspa
 class="comment">/* GPRS PDP connecon>
 has MTU to 1500 */opspa
  o 27p/a>#defineopa href="+code=GPRS_PDP_MTU" class="sref">GPRS_PDP_MTUp/a> 1500 o 28p/a>pspa
 class="comment">/* 5 sec. conneco timeout */opspa
  o 29p/a>#defineopa href="+code=CONNECT_TIMEOUT" class="sref">CONNECT_TIMEOUTp/a> (5 * pa href="+code=HZ" class="sref">HZp/a>) o 30p/a>#defineopa href="+code=CAIF_NET_DEFAULT_QUEUE_LEN" class="sref">CAIF_NET_DEFAULT_QUEUE_LENp/a> 500 o 31p/a>#defineopa href="+code=UNDEF_CONNID" class="sref">UNDEF_CONNIDp/a> 0xffffffff o 32p/a> o 33p/a>pspa
 class="comment">/*This list is protecoed by the rtnl lock. */opspa
  o 34opa>staticopa href="+code=LIST_HEAD" class="sref">LIST_HEADp/a>(pa href="+code=chnl_net_list" class="sref">chnl_net_listp/a>); o 35p/a> o 36p/a>pa href="+code=MODULE_LICENSE" class="sref">MODULE_LICENSEp/a>(pspa
 class="string">"GPL"opspa
 ); o 37p/a>pa href="+code=MODULE_ALIAS_RTNL_LINK" class="sref">MODULE_ALIAS_RTNL_LINKp/a>(pspa
 class="string">"caif"opspa
 ); o 38p/a> o 39p/a>enumopa href="+code=caif_states" class="sref">caif_statesp/a> { o 40p/a>        pa href="+code=CAIF_CONNECTED" class="sref">CAIF_CONNECTEDp/a>          = 1, o 41p/a>        pa href="+code=CAIF_CONNECTING" class="sref">CAIF_CONNECTINGp/a>, o 42p/a>        pa href="+code=CAIF_DISCONNECTED" class="sref">CAIF_DISCONNECTEDp/a>, o 43p/a>        pa href="+code=CAIF_SHUTDOWN" class="sref">CAIF_SHUTDOWNp/a> o 44opa>}; o 45p/a> o 46opa>struco pa href="+code=chnl_net" class="sref">chnl_netp/a> { o 47p/a>        struco pa href="+code=cflayer" class="sref">cflayerp/a> pa href="+code=chnl" class="sref">chnlp/a>; o 48p/a>        struco pa href="+code=net_device_stats" class="sref">net_device_statsp/a> pa href="+code=stats" class="sref">statsp/a>; o 49p/a>        struco pa href="+code=caif_conneco_request" class="sref">caif_conneco_requestp/a> pa href="+code=conn_req" class="sref">conn_reqp/a>; o 50p/a>        struco pa href="+code=list_head" class="sref">list_headp/a> pa href="+code=list_field" class="sref">list_fieldp/a>; o 51p/a>        struco pa href="+code=net_device" class="sref">net_devicep/a> *pa href="+code=netdev" class="sref">netdevp/a>; o 52p/a>        char pa href="+code=nam"" class="sref">nam"p/a>[256]; o 53p/a>        pa href="+code=wait_queue_head_t" class="sref">wait_queue_head_tp/a> pa href="+code=netmgmt_wq" class="sref">netmgmt_wqp/a>; o 54p/a>        pspa
 class="comment">/* Flow status to remember and control the transmissn v. */opspa
  o 55p/a>        pa href="+code=bool" class="sref">boolp/a> pa href="+code=flowenabled" class="sref">flowenabledp/a>; o 56p/a>        enumopa href="+code=caif_states" class="sref">caif_statesp/a> pa href="+code=stat"" class="sref">stat"p/a>; o 57opa>}; o 58p/a> o 59opa>staticovoid pa href="+code=robust_list_del" class="sref">robust_list_delp/a>(struco pa href="+code=list_head" class="sref">list_headp/a> *pa href="+code=delete_node" class="sref">delete_nodep/a>) o 60p/a>{ o 61p/a>        struco pa href="+code=list_head" class="sref">list_headp/a> *pa href="+code=list_node" class="sref">list_nodep/a>; o 62p/a>        struco pa href="+code=list_head" class="sref">list_headp/a> *pa href="+code=n" class="sref">np/a>; o 63p/a>        pa href="+code=ASSERT_RTNL" class="sref">ASSERT_RTNLp/a>(); o 64p/a>        pa href="+code=list_for_each_safe" class="sref">list_for_each_safep/a>(pa href="+code=list_node" class="sref">list_nodep/a>,opa href="+code=n" class="sref">np/a>, &pa href="+code=chnl_net_list" class="sref">chnl_net_listp/a>) { o 65p/a>                if (pa href="+code=list_node" class="sref">list_nodep/a> ==opa href="+code=delete_node" class="sref">delete_nodep/a>) { o 66p/a>                        pa href="+code=list_del" class="sref">list_delp/a>(pa href="+code=list_node" class="sref">list_nodep/a>); o 67p/a>                        return; o 68p/a>                } o 69p/a>        } o 70p/a>        pa href="+code=WARN_ON" class="sref">WARN_ONp/a>(1); o 71p/a>} o 72p/a> o 73opa>staticoino pa href="+code=chnl_recv_cb" class="sref">chnl_recv_cbp/a>(struco pa href="+code=cflayer" class="sref">cflayerp/a> *pa href="+code=layr" class="sref">layrp/a>, struco pa href="+code=cfpkt" class="sref">cfpktp/a> *pa href="+code=pkt" class="sref">pktp/a>) o 74p/a>{ o 75p/a>        struco pa href="+code=sk_buff" class="sref">sk_buffp/a> *pa href="+code=skb" class="sref">skbp/a>; o 76p/a>        struco pa href="+code=chnl_net" class="sref">chnl_netp/a> *pa href="+code=priv" class="sref">privp/a>; o 77p/a>        ino pa href="+code=pktlen" class="sref">pktlenp/a>; o 78p/a>        conso pa href="+code=u8" class="sref">u8p/a> *pa href="+code=ip_versn v" class="sref">ip_versn vp/a>; o 79p/a>        pa href="+code=u8" class="sref">u8p/a> pa href="+code=buf" class="sref">bufp/a>; o 80p/a> o 81p/a>        pa href="+code=priv" class="sref">privp/a> =opa href="+code=container_of" class="sref">container_ofp/a>(pa href="+code=layr" class="sref">layrp/a>, struco pa href="+code=chnl_net" class="sref">chnl_netp/a>,opa href="+code=chnl" class="sref">chnlp/a>); o 82p/a>        if (!pa href="+code=priv" class="sref">privp/a>) o 83p/a>                return -pa href="+code=EINVAL" class="sref">EINVALp/a>; o 84p/a> o 85p/a>        pa href="+code=skb" class="sref">skbp/a> =o(struco pa href="+code=sk_buff" class="sref">sk_buffp/a> *)opa href="+code=cfpkt_tonative" class="sref">cfpkt_tonativep/a>(pa href="+code=pkt" class="sref">pktp/a>); o 86p/a> o 87p/a>        pspa
 class="comment">/* Get length of CAIF packet. */opspa
  o 88p/a>        pa href="+code=pktlen" class="sref">pktlenp/a> =opa href="+code=skb" class="sref">skbp/a>->pa href="+code=len" class="sref">lenp/a>; o 89p/a> o 90p/a>        pspa
 class="comment">/* Pass some minimum informaon>
 andopspa
  o 91p/a>pspa
 class="comment">         * send the packet to the net stack.opspa
  o 92p/a>pspa
 class="comment">         */opspa
  o 93p/a>        pa href="+code=skb" class="sref">skbp/a>->pa href="+code=dev" class="sref">devp/a> =opa href="+code=priv" class="sref">privp/a>->pa href="+code=netdev" class="sref">netdevp/a>; o 94p/a> o 95p/a>        pspa
 class="comment">/* check the versn vaof IP */opspa
  o 96p/a>        pa href="+code=ip_versn v" class="sref">ip_versn vp/a> =opa href="+code=skb_header_poinoer" class="sref">skb_header_poinoerp/a>(pa href="+code=skb" class="sref">skbp/a>, 0, 1, &pa href="+code=buf" class="sref">bufp/a>); o 97p/a>        if (!pa href="+code=ip_versn v" class="sref">ip_versn vp/a>) { o 98p/a>                pa href="+code=kfree_skb" class="sref">kfree_skbp/a>(pa href="+code=skb" class="sref">skbp/a>); o 99p/a>                return -pa href="+code=EINVAL" class="sref">EINVALp/a>; o100p/a>        } o101p/a> o102p/a>        switch (*pa href="+code=ip_versn v" class="sref">ip_versn vp/a> >> 4) { o103p/a>        case 4: o104p/a>                pa href="+code=skb" class="sref">skbp/a>->pa href="+code=protocol" class="sref">protocolp/a> =opa href="+code=htons" class="sref">htonsp/a>(pa href="+code=ETH_P_IP" class="sref">ETH_P_IPp/a>); o105p/a>                break; o106p/a>        case 6: o107p/a>                pa href="+code=skb" class="sref">skbp/a>->pa href="+code=protocol" class="sref">protocolp/a> =opa href="+code=htons" class="sref">htonsp/a>(pa href="+code=ETH_P_IPV6" class="sref">ETH_P_IPV6p/a>); o108p/a>                break; o109p/a>        default: o110p/a>                pa href="+code=kfree_skb" class="sref">kfree_skbp/a>(pa href="+code=skb" class="sref">skbp/a>); o111p/a>                pa href="+code=priv" class="sref">privp/a>->pa href="+code=netdev" class="sref">netdevp/a>->pa href="+code=stats" class="sref">statsp/a>.pa href="+code=rx_errors" class="sref">rx_errorsp/a>++; o112p/a>                return -pa href="+code=EINVAL" class="sref">EINVALp/a>; o113p/a>        } o114p/a> o115p/a>        pspa
 class="comment">/* If we change the header in loop mode, the checksum is corrupted. */opspa
  o116p/a>        if (pa href="+code=priv" class="sref">privp/a>->pa href="+code=conn_req" class="sref">conn_reqp/a>.pa href="+code=protocol" class="sref">protocolp/a> ==opa href="+code=CAIFPROTO_DATAGRAM_LOOP" class="sref">CAIFPROTO_DATAGRAM_LOOPp/a>) o117p/a>                pa href="+code=skb" class="sref">skbp/a>->pa href="+code=ip_summed" class="sref">ip_summedp/a> =opa href="+code=CHECKSUM_UNNECESSARY" class="sref">CHECKSUM_UNNECESSARYp/a>; o118p/a>        else o119p/a>                pa href="+code=skb" class="sref">skbp/a>->pa href="+code=ip_summed" class="sref">ip_summedp/a> =opa href="+code=CHECKSUM_NONE" class="sref">CHECKSUM_NONEp/a>; o120p/a> o121p/a>        if (pa href="+code=in_inoerrupt" class="sref">in_inoerruptp/a>()) o122p/a>                pa href="+code=netif_rx" class="sref">netif_rxp/a>(pa href="+code=skb" class="sref">skbp/a>); o123p/a>        else o124p/a>                pa href="+code=netif_rx_ni" class="sref">netif_rx_nip/a>(pa href="+code=skb" class="sref">skbp/a>); o125p/a> o126p/a>        pspa
 class="comment">/* Update statistics. */opspa
  o127p/a>        pa href="+code=priv" class="sref">privp/a>->pa href="+code=netdev" class="sref">netdevp/a>->pa href="+code=stats" class="sref">statsp/a>.pa href="+code=rx_packets" class="sref">rx_packetsp/a>++; o128p/a>        pa href="+code=priv" class="sref">privp/a>->pa href="+code=netdev" class="sref">netdevp/a>->pa href="+code=stats" class="sref">statsp/a>.pa href="+code=rx_bytes" class="sref">rx_bytesp/a> +=opa href="+code=pktlen" class="sref">pktlenp/a>; o129p/a> o130p/a>        return 0; o131p/a>} o132p/a> o133opa>staticoino pa href="+code=delete_device" class="sref">delete_devicep/a>(struco pa href="+code=chnl_net" class="sref">chnl_netp/a> *pa href="+code=dev" class="sref">devp/a>) o134p/a>{ o135p/a>        pa href="+code=ASSERT_RTNL" class="sref">ASSERT_RTNLp/a>(); o136p/a>        if (pa href="+code=dev" class="sref">devp/a>->pa href="+code=netdev" class="sref">netdevp/a>) o137p/a>                pa href="+code=unregister_netdevice" class="sref">unregister_netdevicep/a>(pa href="+code=dev" class="sref">devp/a>->pa href="+code=netdev" class="sref">netdevp/a>); o138p/a>        return 0; o139p/a>} o140p/a> o141p/a>staticovoid pa href="+code=close_work" class="sref">close_workp/a>(struco pa href="+code=work_struco" class="sref">work_strucop/a> *pa href="+code=work" class="sref">workp/a>) o142p/a>{ o143p/a>        struco pa href="+code=chnl_net" class="sref">chnl_netp/a> *pa href="+code=dev" class="sref">devp/a> =opa href="+code=NULL" class="sref">NULLp/a>; o144p/a>        struco pa href="+code=list_head" class="sref">list_headp/a> *pa href="+code=list_node" class="sref">list_nodep/a>; o145p/a>        struco pa href="+code=list_head" class="sref">list_headp/a> *pa href="+code=_tmp" class="sref">_tmpp/a>; o146p/a> o147p/a>        pa href="+code=rtnl_lock" class="sref">rtnl_lockp/a>(); o148p/a>        pa href="+code=list_for_each_safe" class="sref">list_for_each_safep/a>(pa href="+code=list_node" class="sref">list_nodep/a>,opa href="+code=_tmp" class="sref">_tmpp/a>, &pa href="+code=chnl_net_list" class="sref">chnl_net_listp/a>) { o149p/a>                pa href="+code=dev" class="sref">devp/a> =opa href="+code=list_entry" class="sref">list_entryp/a>(pa href="+code=list_node" class="sref">list_nodep/a>,ostruco pa href="+code=chnl_net" class="sref">chnl_netp/a>,opa href="+code=list_field" class="sref">list_fieldp/a>); o150p/a>                if (pa href="+code=dev" class="sref">devp/a>->pa href="+code=stat"" class="sref">stat"p/a> ==opa href="+code=CAIF_SHUTDOWN" class="sref">CAIF_SHUTDOWNp/a>) o151p/a>                        pa href="+code=dev_close" class="sref">dev_closep/a>(pa href="+code=dev" class="sref">devp/a>->pa href="+code=netdev" class="sref">netdevp/a>); o152p/a>        } o153p/a>        pa href="+code=rtnl_unlock" class="sref">rtnl_unlockp/a>(); o154p/a>} o155p/a>staticopa href="+code=DECLARE_WORK" class="sref">DECLARE_WORKp/a>(pa href="+code=close_worker" class="sref">close_workerp/a>,opa href="+code=close_work" class="sref">close_workp/a>); o156p/a> o157opa>staticovoid pa href="+code=chnl_hold" class="sref">chnl_holdp/a>(struco pa href="+code=cflayer" class="sref">cflayerp/a> *pa href="+code=lyr" class="sref">lyrp/a>) o158p/a>{ o159p/a>        struco pa href="+code=chnl_net" class="sref">chnl_netp/a> *pa href="+code=priv" class="sref">privp/a> =opa href="+code=container_of" class="sref">container_ofp/a>(pa href="+code=lyr" class="sref">lyrp/a>, struco pa href="+code=chnl_net" class="sref">chnl_netp/a>,opa href="+code=chnl" class="sref">chnlp/a>); o160p/a>        pa href="+code=dev_hold" class="sref">dev_holdp/a>(pa href="+code=priv" class="sref">privp/a>->pa href="+code=netdev" class="sref">netdevp/a>); o161p/a>} o162p/a> o163opa>staticovoid pa href="+code=chnl_put" class="sref">chnl_putp/a>(struco pa href="+code=cflayer" class="sref">cflayerp/a> *pa href="+code=lyr" class="sref">lyrp/a>) o164p/a>{ o165p/a>        struco pa href="+code=chnl_net" class="sref">chnl_netp/a> *pa href="+code=priv" class="sref">privp/a> =opa href="+code=container_of" class="sref">container_ofp/a>(pa href="+code=lyr" class="sref">lyrp/a>, struco pa href="+code=chnl_net" class="sref">chnl_netp/a>,opa href="+code=chnl" class="sref">chnlp/a>); o166p/a>        pa href="+code=dev_put" class="sref">dev_putp/a>(pa href="+code=priv" class="sref">privp/a>->pa href="+code=netdev" class="sref">netdevp/a>); o167p/a>} o168p/a> o169opa>staticovoid pa href="+code=chnl_flowctrl_cb" class="sref">chnl_flowctrl_cbp/a>(struco pa href="+code=cflayer" class="sref">cflayerp/a> *pa href="+code=layr" class="sref">layrp/a>, enumopa href="+code=caif_ctrlcmd" class="sref">caif_ctrlcmdp/a> pa href="+code=flow" class="sref">flowp/a>, o170p/a>                                ino pa href="+code=phyid" class="sref">phyidp/a>) o171p/a>{ o172p/a>        struco pa href="+code=chnl_net" class="sref">chnl_netp/a> *pa href="+code=priv" class="sref">privp/a> =opa href="+code=container_of" class="sref">container_ofp/a>(pa href="+code=layr" class="sref">layrp/a>, struco pa href="+code=chnl_net" class="sref">chnl_netp/a>,opa href="+code=chnl" class="sref">chnlp/a>); o173p/a>        pa href="+code=pr_debug" class="sref">pr_debugp/a>(pspa
 class="string">"NET flowctrl func called flow: %s\n"opspa
 , o174p/a>                pa href="+code=flow" class="sref">flowp/a> ==opa href="+code=CAIF_CTRLCMD_FLOW_ON_IND" class="sref">CAIF_CTRLCMD_FLOW_ON_INDp/a> ? pspa
 class="string">"ON"opspa
 o: o175p/a>                pa href="+code=flow" class="sref">flowp/a> ==opa href="+code=CAIF_CTRLCMD_INIT_RSP" class="sref">CAIF_CTRLCMD_INIT_RSPp/a> ? pspa
 class="string">"INIT"opspa
 o: o176p/a>                pa href="+code=flow" class="sref">flowp/a> ==opa href="+code=CAIF_CTRLCMD_FLOW_OFF_IND" class="sref">CAIF_CTRLCMD_FLOW_OFF_INDp/a> ? pspa
 class="string">"OFF"opspa
 o: o177p/a>                pa href="+code=flow" class="sref">flowp/a> ==opa href="+code=CAIF_CTRLCMD_DEINIT_RSP" class="sref">CAIF_CTRLCMD_DEINIT_RSPp/a> ? pspa
 class="string">"CLOSE/DEINIT"opspa
 o: o178p/a>                pa href="+code=flow" class="sref">flowp/a> ==opa href="+code=CAIF_CTRLCMD_INIT_FAIL_RSP" class="sref">CAIF_CTRLCMD_INIT_FAIL_RSPp/a> ? pspa
 class="string">"OPEN_FAIL"opspa
 o: o179p/a>                pa href="+code=flow" class="sref">flowp/a> ==opa href="+code=CAIF_CTRLCMD_REMOTE_SHUTDOWN_IND" class="sref">CAIF_CTRLCMD_REMOTE_SHUTDOWN_INDp/a> ? o180p/a>                 pspa
 class="string">"REMOTE_SHUTDOWN"opspa
 o: pspa
 class="string">"UKNOWN CTRL COMMAND"opspa
 ); o181p/a> o182p/a> o183p/a> o184p/a>        switch (pa href="+code=flow" class="sref">flowp/a>) { o185p/a>        case pa href="+code=CAIF_CTRLCMD_FLOW_OFF_IND" class="sref">CAIF_CTRLCMD_FLOW_OFF_INDp/a>: o186p/a>                pa href="+code=priv" class="sref">privp/a>->pa href="+code=flowenabled" class="sref">flowenabledp/a> =opa href="+code=false" class="sref">falsep/a>; o187p/a>                pa href="+code=netif_stop_queue" class="sref">netif_stop_queuep/a>(pa href="+code=priv" class="sref">privp/a>->pa href="+code=netdev" class="sref">netdevp/a>); o18=chnl_net" class="sref">chnl_netp/a> *pa href="+code=dev" c89" idv4L1l nam"v4L186">o186p/a>                pa ht.c#L186" idv4L186" clas ==opa href="+code=CAIF_CTRLCMD_REMOTE_S185"4RLCMD4ecv_cbp/a>if/chnl_net.c#L88" idv42LCMD4ecv_cbp/a>if/chnl_ne29p/a>if/chnl_net4L132_reqp/a>;  OWN&quh2t.c#L88" idv42LCMD4ecv_cb_p/a> 2MOTE_SHUTDOWN_INDp/a> ? 2list_nod> 2MOTE_4/a>;          * send4r12s="line"kbp/a>); netif_stop_queuep/a>(pa href="+code=priv" class="sref">privp/a>->pa href="+code=netde3delp/="lineo5_131">o131p/a>}  2MOTE_SHUTDOWN_INDp/a> ? 2lis44" class="sref">4m"v4L59">o 59op+code=u8" class="sref">u8p/a> *pa hre157" idv4L157" class="line" nam"v4L157">o157opass="line" nam"v4L16f">u>o136p/a>       href="net/caif/chnl1Sf  strlp/a>(pa href="+code=priv" class="sref">privp/a>->pa href="+code=netde3delp/=class="sro pa href="+cod2Nhref="+code=phyid" class=41lass="sref">skbp/a>->1pa hr19        pa href="+code=skb" class="sref">skbp/a>->pa hreev" class1="sref">netdevp/a>; CAIF_CTRLCMD_INIT_FAIL_RSPp/a> ? pspa
 class="      * send4r12s="line"kbp/a>); o186p/a>iv" class="sref">privp/a>->pa href="+code=netde3delp/="lineo5_131">o131p/a>} skbp/a>->pa hree/caif/chnref="+code=skb" class="s1ref">1kbp/a>, 0, 1, &pa href="+code=bufpriv" tx_disaine" nam"v4L16f">upriv" tx_disainef">privp/a>->pa href="+code=flowenabled" class="sref">flowenabledp/a> =opa href="+code=false" class="sref">falsep/a>; ip_versn vp/a>) { < href="+code=net/caiul.c#L154" idv4L154" clt/caiul.c#L15"net/caif/chnl1Sf  strlp/lock" class="sref">rtnl_unlockp/a>(); falsep/a>; skbp/a>->pa hr2>skbp/a>)2 pr_debugp/a>(pspa
 class="string">"      * send4r12s="line"kbp/a>);2 99p/a>  2             return -pa 2ref="20c#L120" idv4L120" class="line" nam"vnet/caif/chnl_net.c#L185" idv4L185" class="line" nam"v4L185">o185p/a>        case pa href="+code=CAIF_CTRLtr  pa href="+code=tr  clas" class="sref">skbp/a>->pa hr2 } (pa href="+code=prpriv" >o136     pa href="+code=priv" >o136     f">privp/a>->pa href="+code=flowenabled" class="sref">flowenabledp/a> =opa href="+code=false" class="sref">falsep/a>; o102pe=skb" class="sref">skbp/a>->pa hr2>5aif/chn2_ass="sref">skbp/a>->2     20if/chnl_net.c#L183" idv4L183" class="line" namTRLCMD_FLOW_ON_IND" class="sref">CAIF_CTRLCMD_FL      * send4r12s="line"kbp/a>);2 t; pr2tocol20" class="sref">flowp/a>) { o 48plien    ne" nam{ (pa href="+code=priv" class="sref">privp/a>-&co pa href="+code=chnl_net"2p/a>        struco p class="sref">close_workerp/a>,op2p/a>        struco p vp/a>); falsep/a>; privp/a>->pa href="+code=netde3delp/="lineo5_131">o131p/a>} o 38p/a> falsep/a>; o107p/a>    2     2     pa href="+code=skss="line" nam"vnet/caif/chnl_net.c#L185" idv4L185" class="line" nam"v4L185">o185p/a>        case pa href="+code=CAIF_CTRLtr  pa href="+code=tr  clas" class="sref">skbp/a>->pa hr2 idv4L27" col" class="sref">protoc2lp/a>20">ip_versn vp/a>) { < href="+code=nepriv" >o136     pa href="+code=priv" >o136     f">privp/a>->pa href="+code=flowenabled" class="sref">flowenabledp/a> =opa href="+code=false" class="sref">falsep/a>; E2H_P_I2V6p/a>); o157opass="line" nam"v4L16f">u>o136p/a>       href="net/caif/chnl1Sf  strlp/a>(pa href="+code=priv" class="sref">privp/a>->pa href="+code=netde3delp/=class="sro pa href="+cod2Nhref="+code=phyi2L109" cla2s="line" nam"v4L109">o102p/a> 2      default: skbp/a>->pa hr2ass="line2 nam"v4L111">o111p/a>   2     2      pa href=de=htons" class="sref">htonsp/a>(pa hre2ef="+code2stats" class="sref">stat2p/a>.21tif_stop_queuep/a>(pae=skb" class="sref">skbp/a>->pa hr2acaif/chn2 href="net/caif/chnl_net2c#L1121ne" nam"v4L106" idv4L166" class="line" nam"v42112p/a>  2             return -pa 2ref="2code=E6" idv4L166" class="line" nam"v421t; o155p/a>staticopa href=2        i2 (pa href="+code=priv" c2ass="21ORKp/a>(pa hode=WARN_ON" class="srefa h5" crt_xmiet/caif/chnl_net.c#L148" " crt_xmie idv4L167" class="line" namstruco pa href="+code=cfpkt" class="sref">cfpktp/a> *pa href="+code=pkt" claif/chnl_net.c#L172" idvn#L50" idv4L50" class="line" nam"v4L50">o 50p/a>        .c#L132" idv4L132" class="line" nam"v4L132">o132p/a> o157o2lass="sre2">skbp/a>->pa href="+2ode=i21ass="sref">chnl_holdp/a>(struco pa href="+code=cflayer" class="sref">cflayerp/a> *pa href="+code=lyr" class="sref"" class="sref">skbp/a>->pa hr2et/caif/c2nl_net.c#L119" idv4L119"2class22et/caif/chnl_net.c#L49" idv4L49" clo 72p/a> workp/a>) sk2p/a>->pa hrede=WARN_ON" class=v4L87">o 87p/a>        pspa
 class="comment">/* Get lengt2KSUM_NONE2/a>; o 87p/a>   restonm"v4">w-1pa
 class="comment">/* Get lengt2Kf="+code2=in_inoerrupt" class="sr2f">in2inoerruptp/a>(buffp/a> *)opa href="+code=cfour s="setifdataass="sref">netif_rx_nip/a>(pa href="+code=2" idv4L122" class="line" nam"v4L122">o122p/a>          ayerp/a> *pa href="+code=lyr" class="sref"">workp/a>) privp/a>->pa h.c#L132" idv4L132" class="pa
 class="comment">/* Get lengt2K12p/a>  2s="line" nam"v4L123">o122p/a> 2      else o124p/a>    st_entryp/a>(pa hreif/chnl_net.c#L87" idv4L87" class="line" nam"v4L87">o 87p/a>        psL100"+code=priv" class="sref">privp/a>->pa href="+code=netdev" class="sref">netdevp/a>->pa href="+code=stats" clamturef">netdevp/a>mtucaif/chnl_net.c#L182" idv4L182" class=2kb" class2"sref">skbp/a>); ); or.f">priss="sref">flowp/a> ==opa hSize" cl id exceeded MTUet" class="sref"pa
 class="comment">/* Get lengt2Kt.c#L1172"line" nam"v4L127">o127p2a>   22bp/a>, 0, 1, &pa href="+code=buf" class="sref">bufp/a>); o 97p/a>        if 2 pa href=2+code=priv" class="sref"2privp22 class="sref">list_for_each_safep/a>(pa href="+code=list_nodeef="+code=stats" class="sref">statsp/a>.pa href="+code=rx_packetst class="sref">skbp/a>);tnetd2vp/a>->pa href="+code2stats236p/a>); o153p/fETDEV_TX_Om  pspa
 class="comment">/* Get lengt2"sref">rx2bytesp/a> +=opa href="+c2de=pk23/a>->pa hr6" idv4L166" class="line" nam"v42net/caif/2hnl_net.c#L129" idv4L1292 clas2="line" nam"v4L129">o129p/a>     st_entainer_of" class="sref">container_ofp/a>(pdv4L185" class="line" nam"v4L185">o185p/a>        case pa hre/chnl_net.c#L182" idv4L182" class=2ef="net/c2if/chnl_net.c#L133" idv42133" 23re157" idv4L157" class="line" nam"v4ass="sref">container_ofp/a>(pa href="+code=layr" class="sref">ldroppss=9">o 89s"+cod" cfet" class="sref"pa
 class="comment">/* Get lengt2ino pa hr2f="+code=delete_device" 2lass=2374">o174p/a>                pa href=" class="sref">bufp/a>); o 97p/a>        if 2ass="sref2>devp/a>) flowp/a>) { statsp/a>.pa href="+code=rx_packetst cdropp185">o185p/a>    t cdropp18"net/caif/chnl_net.c#L111" idv4L111" c2rb" class2="+code=ASSERT_RTNL" cla2s="sr2f">ASSERT_RTNLp/a>(); 37p/a> orkp/a>) o153p/fETDEV_TX_Om  pspa
 class="comment">/* Get lengt2"t.c#L1172c#L137" idv4L137" class=2line"2nam"v4L137">o16" idv4L166" class="line" nam"v42npa href=2device" class="sref">unr2giste23>->pa href="+code=netdev" class="2s="sref">2evp/a>->pa href="+cod2=netd240o124p/a>    st_echnl1Sf  strlp/a>(pa href="+code=priv" class="sref">privp/a>-&cv4L115">o115p/a>        pspa
 class="comment">/* If we change the header in loop mode, the checksum is corrupted. */opspa
  o116p/a2net/caif/2hnl_net.c#L138" idv4L1382 clas24     default: rtnl_unlip_hd="net/caif/chnl_net.c#L97" idv4L97" class="lineef="+code=stats" clasadd="sref">rtnl_unlsadd=>,op2p/a>        struip_hd="sref">rtnl_unlip_hd="net/caif/chnl_net.c#L97" idv4L97" class="lineef="+code=stats" cladadd="sref">rtnl_unldadd=>,ope" nam"v4L97">o 97p/a>        if 2"net/caif2chnl_net.c#L141" idv4L142" cla24"line" nam"v4L129">o129p/a> (buffp/a> *)opa href="+codStore" riginal SKBfpkt_toass="sref">netif_rx_nip/a>(pa href="+code=242">o142p2a>{ o 87p/a>        psL> o 87p/a>        pspa
 class="comment">/* Get lengt2opa href=2+code=NULL" class="sref"2NULLp24     else 24a href="+code=container_of" 4L73" class="line" nam"v4">workp/a>) o 3SHR_OUT>,op2p(etdevsref">EINVALp/a>; #L97" idv4L97" class="line" nam"v4L97">o 97p/a>        if 2et.c#L1452 idv4L145" class="line" 2am"v42145">o nam"v4L97">o 97p/a>        if 2et.c#L1172ref">_tmpp/a>; o 89pdownv4L89="net/ss="sref">netif_rx_nip/a>(pa href="+code=24pa href=2 href="+code=list_for_ea2h_saf24ss="sref">pktlenp/a>; o 87p/a>   restonm"v4">wchnl1Sf  strlp/a>(pa href="+code=priv" class="sref">privp/a>-&co pa href="+code=chnl_net"s="comment">/* IdL87">o 87p/a>   dn class="sref">privp/a>-&transmiet/caif/chnl_nettransmief">privp/a>->pa href="+code=flowenabled" class="sref">flowenableco pa href="+code=chnl_net"s="comment">/* IdL87">o 87p/a>   dn cla2p/a>        stru84">o 84p/a>     st_echnl1Sf  strlp/reston87">o 87p/a>   restonm"v4/chnl_net.c#L182" idv4L182" class=2="net/cai2/chnl_net.c#L150" idv4L120" cl2ss="line" nam"v4L150">a>) { statsp/a>.pa href="+code=rx_packetst cdropp185">o185p/a>    t cdropp18"net/caif/chnl_net.c#L111" idv4L111" c2href="net2caif/chnl_net.c#L151" id24L15125c#L120" idv4L120" cla37p/a> orkp/a>) o153p/fETDEV_TX_Om  pspa
 class="comment">/* Get lengt2         2 pa href="+code=dev_clos2" cla25 href="+code=rx_errors" class="sref">rx_error2etdevp/a>2; 2">o152p/a2        } EINVALp/a>; netif_rx_nip/a>(pa href="+code=2if/chnl_n2t.c#L155" idv4L155" clas2="lin25a href="+code=container_of" cla href="+code=list_nodeef="+code=stats" class="sref">statsp/a>.pa href="+code=rx_packetst c Update statistics. */tpspa
  D2CLARE2545">o145p/a>        struco pcla href="+code=list_nodeef="+code=stats" class="sref">statsp/a>.pa href="+code=rx_packetst class="sref">rx_packetsp/a>++; o 87p/a>        pspa
 class="comment">/* Get lengt2/a> dev_putp/a>(pa href=2a>statico2oid pa href="+code=chnl_2old" 2lass="sref">ch37p/a> orkp/a>) o153p/fETDEV_TX_Om  pspa
 class="comment">/* Get lengt2ref="+cod2=priv" class="sref">priv2/a> =2pa hrerx_errors" class="sref">rx_error2">chnlp/a2); o160p/2>        pa href="+code=2ev_ho2d" claa>(pa hode=WARN_ON" class="srefa h5op4L87">o 87p/a>   "srefa h5op4L idv4L167" class="line" namn#L50" idv4L50" class="line" nam"v4L50">o 50p/a>        .c#L132" idv4L132" class="line" nam"v4L132">o132p/a> privp/a>-2gt;pa2href="hnl_net.c#L182" idv4L182" class=22p/a>                                 ino pa href="+code=phyid" class="sref">phyidp/a>) stati2ovoid pa href="+code=chn2_put"2class="sref">cede=WARN_ON" class=reston87">o 87p/a>   restonm"v4">w-1pa
 class="comment">/* Get lengt2ref="+cod2=priv" class="sref">priv2/a> =2pa href="+codeede=WARN_ON" class=vlifindeo120p/a>         stru"v4Lroom120p/a>         strutailroom120p/a>         strumturef">netdevp/a>mtucaifpa
 class="comment">/* Get lengt2rcode=DEC2a>); o 50p/a>        ll.c#L132" idv4L132"ll.c#caifpa
 class="comment">/* Get lengt2ra>         pa href="+cod2=dev_26/chnl_net.c#L146" idv4L146" o pa href="+code=chnl_net" class="sref">chnl_netp/a> *pa href="+code=dev" c2+code=pri2" class="sref">privp/a>-2gt;pa26ss="sref">pktlenp/a>; workp/a>) privp/a>->pa h.c#L132" idv4L132" class="pa
 class="comment">/* Get lengt2b" class=2sref">chnl_flowctrl_cbp/2>(str270o124p/a>    st_entainer_of" class="sref">container_ofp/a>(p/chnl_net.c#L182" idv4L182" class=2if_ctrlcm2" class="sref">caif_ctrl2mdp/a27     default: container_ofp/a>(pa href="+code=layr" class="sref">l"srefa h5op4L: no s="set" class="sref"pa
 class="comment">/* Get lengt2p/a>,  ass="sref">privp/NODEVf">container_of/NODEVcaifpa
 class="comment">/* Get lengt2f="+code=2riv" class="sref">privp/2> =op27 href="+code=rx_errors" class="sref">rx_error2nl" class2"sref">chnlp/a>); 2et.c#L1742 idv4L174" class="line" 2am"v42174">o174p/a> st_echnl1Sf  strlp/a>(pa href="+code=priv" class="sref">privp/a>-&tde3delp/="lineo5_131">o131p/a!>} o 3" classINGa>(p/chnl_net.c#L182" idv4L182" class=2ief="+cod2175" idv4L175" class="li2e" na2"v4L175">o175p/a>                pa hiv" class="sref">privp/a>->pa href="+code=netde3delp/="lineo5_131">o131p/a>} o 3" classINGa>(ppa
 class="comment">/* Get lengt2fcode=DEC2v4L176" class="line" nam2v4L172">o176p/a>                pa href="+creston87">o 87p/a>   restonm"v4">wchnl1Sf  strlp/>o 48ponnect8plien                 o 48ponnect8plien f">privp/a>->pa h.c#/a>                .c#/a> f">privp/a>->pa h.c#L132" idv4L132" class=""sref">rtnl_lockp/a>()a>(pa href="+code=priv" class="sref">privp/a>-&cv4L115">o115p/a>        pspa
 clas">chnl_netp/a>,opa href="+code=c27" idv4L127" class="line" nam"v4L127">o127p/a>                pppppppppppppppppppppppppppppppppcaif/chnl1Sf  strlp/a>(pa href="+code=priv" class="sref">privp/a>-&co pa href="+code=chnl_net"2pcaif/chnl1Sf  strlp/vlifindeo120p/a> chnl_netp/a>,opa href="+code=c27code=pri2class="line" nam"v4L178"2o178p2a>                pa hppppppppppppppppppppppppppppppppcaif/chnl1Sf  strlp/"v4Lroom120p/a>  /* Get lengt2
 o: o 87p/a>   restonm"v4a!>}0/chnl_net.c#L182" idv4L182" class=2LCMD_REMO2E_SHUTDOWN_INDp/a> ? o150p/a>>>>>>>>>="net/caif/chnl_ns="sref">container_ofp/a>(pa href="+code=layr" class="sref">lerr: " class="srefnl_net.c#L182" idv4L182" class=2L/a>, o180p/a>    2     28c#L120" idv4L120" cla"v4L150">o150p/a>>>>>>>>>=ss="sref">flowp/a> ==opa hrase p to   ne" na and op4L nam"v4," class="srefnl_net.c#L182" idv4L182" class=2L="+code=2"opspa
 o: pspa
 cl2ss="s28tif_stop_queuep/a>(pa"v4L150">o150p/a>>>>>>>>>=ss="sref">flowp/a> ==opa h Err:chnl_det" class="sref">chnl_netp/a>,opa href="+code=c2pspa
 ); 2a href="net/caif/chnl_ne2.c#L128re157" idv4L157" clas"v4L150">o150p/a>>>>>>>>>="net/caif/chnlreston87">o 87p/a>   restonm"v4/pa
 class="comment">/* Get lengt2
t.c#L1742v4L182">o182p/a> o174p/a>                         goto ="net/caif/chnl href87">o 87p/a>    hrefa>(ppa
 class="comment">/* Get lengt2184p/a>  2     switch (pa href="+c2de=fl2w" class="sref">flowp/rx_errors" class="sref">rx_error2o nam"v4L97">o 97p/a>        if 2t/caif/ch2l_net.c#L187" idv4L187" 2lass=2line" nam"v4L187">o187 50p/a>        ll.c#L132" idv4L132"ll.c#caif">wchnl1Sf  strlp/.c#/g h5by_indeo120p/a> privp/a>->pa h.c#/a>                .c#/a> f">privp/a>->pa h.c#L132" idv4L132" class=""schnl1Sf  strlp/vlifindeo120p/a> /* Get lengt2
code=pri2eue" class="sref">netif_2top_q28>->pa href="+code=netdev" class="2#L188" id24L188" class="line" nam"24L1882>o18=chnl_net" class="st_echnl1Sf  strlp/ll.c#L132" idv4L132"ll.c#caif">yidp/a>) if/chnl_ne292/a>if2chnl_net4L132_reqp/a>;87">o187 50p/a>        _ns="sref">container_ofp/a>(pa href="+code=layr" class="sref">lno >    face?et" class="sref"pa
 class="comment">/* Get lengt2#L88" idv22LCMD4ecv_cb_p/a> 2MOTE_2HUTDO29c#L120" idv4L120" cla"v4L150"WARN_ON" class=reston87">o 87p/a>   restonm"v4">w-ss="sref">privp/NODEVf">container_of/NODEVcaifpa
 class="comment">/* Get lengt22etif_stop_queuep/a>(pa        goto ="net/caif/chnl href87">o 87p/a>    hrefa>(ppa
 class="comment">/* Get lengt2>o 59op+c2de=u8" class="sref">u8p/2> *pa2hre157" idv4L157" clasrx_errors" class="sref">rx_error2" class=42lass="sref">skbp/a>->2pa hr29     else netdevp/a>; flowp/a>) {  wchnl1Sf  strlp/tailroom120p/a>         ll.c#L132" idv4L132"ll.c#caifef="+code=stats" claneeded_tailroom120p/a> /* Get lengt2>a href="296p/a>        pa href="+2code=296" class="line" nam"v4L186">o186p/a>(pa href="+code=list_nodeef="+code=stats" clahardm"v4Ler_v4L87">o 87p/a>   hardm"v4Ler_v4Lcaif">wchnl1Sf  strlp/"v4Lroom120p/a>         ll.c#L132" idv4L132"ll.c#caifef="+code=stats" clahardm"v4Ler_v4L87">o 87p/a>   hardm"v4Ler_v4Lcaif"+a
 class="comment">/* Get lengt2>/caif/ch2ref="+code=skb" class="s2ref">2kbp/a>, 0, 1, &pa e" nam"v4L186">o186p/a>ll.c#L132" idv4L132"ll.c#caifef="+code=stats" claneeded_tailroom120p/a> /* Get lengt2>code=pri2="+code=ip_versn v" clas2s="sr29>->pa href="+code=netdev" class="3   pa hre3="+code=kfree_skb" class3"sref30o18=chnl_net" class="lass="sref">EINVALp/a>; s="srefnl_net.c#L182" idv4L182" class=3>skbp/a>)3 EINVALp/a> &pa e" nam"v* MTU, "v4L-room etc is not know before"we have as="srefnl_net.c#L182" idv4L182" class=3>2kbp/a>)3 LCMD4ecv_cb_p/a> 2MOTE_3ref="30c#L12lass="sref">EINVALp/a> &pa e" nam"v* ">o  b_pk ef="n nam"v4 availse p. MTUa hrculation mays="srefnl_net.c#L182" idv4L182" class=3>3kbp/a>)3 t/caif/chnl_ne" class="31" id30tif_slass="sref">EINVALp/a> &pa e" nam"v* ov hride > itial "sre configuration.s="srefnl_net.c#L182" idv4L182" class=3>4kbp/a>)3 e=u8" class="sref">u8p/3ass="3ine" nlass="sref">EINVALp/a> &pa e" nam"v* MTU is m> imum" clcurrLp/ mtu, b_pk ef="n mtu plusss="srefnl_net.c#L182" idv4L182" class=3>5kbp/a>)3 ass="sref">skbp/a>->3     30if/chlass="sref">EINVALp/a> &pa e" nam"v* ">o  "v4L and tail, and PDP GPRS contexts max MTU.s="srefnl_net.c#L182" idv4L182" class=3>6kbp/a>)3 "sref">netdevp/a>; EINVALp/a> &pa e" nam"v*="sref">netif_rx_nip/a>(pa href="+code=3/caif/cai3de=ETH_P_IP" class="sref3>ETH_3_IPp/a>); netdevp/a>mtucaif">wchnl1Sf  strlp/m> _n87">o 87p/a>   m> _nhref=>  "schnl1Sf  strlp/(pa href="+code=list_nodeef="+code=stats" clamturef">netdevp/a>mtucaif"schnl1Sf  strlp/vl.c#L132" idv4L132"ll.c#caifef="+code=stats" clamturef">netdevp/a>mtucaif"-_echnl1Sf  strlp/"v4Lroom120p/a>         tailroom120p/a> /* Get lengt3/s="line"3nam"v4L107">o107p/a>    3     3     pa href="+code=skss="line" nam"vmturef">netdevp/a>mtucaif">wchnl1Sf  strlp/m> _n87">o 87p/a>   m> _nhref=>  "schnl1Sf  strlp/GPRS_PDP_MTU87">o 87p/a>   GPRS_PDP_MTU cla2p/a>        strumturef">netdevp/a>mtucaif"pa
 class="comment">/* Get lengt3/9="line"3n"+code=ip_versn v" clas3lp/a>30">ip_versn vp/a>) { < href="+code=ne.c#/set_mturef">netdevp/a>.c#/set_mtuf">privp/a>->pa h.c#L132" idv4L132" class=2p/a>        strumturef">netdevp/a>mtucaif"pa
 class="comment">/* Get lengt3="+code=E3H_P_IPV6" class="sref">E3H_P_I3V6p/a>); container_ofp/a>(pa href="+code=lyr"vl.c#L132" idv4L132"ll.c#caif"pa
 class="comment">/* Get lengt3=skbp/a>)3s="line" nam"v4L109">o103p/a> 31t/caif/chnl_net.c#L180" idv4L180" cl3ass="line3 nam"v4L111">o111p/a>   3     31c#L120" idv4L120" clast_echnl1Sf  strlp/mturef">netdevp/a>mtucaif"< 100/chnl_net.c#L182" idv4L182" class=3ef="+code3stats" class="sref">stat3p/a>.31tif_stop_queuep/a>(paef="net/caif/chnl_net.civ >or.c#L128" idv4L128v >or.f">priss="sref">flowp/a> ==opa h">o  I    face MTU too small (chnl_d)et" class="sref"p/a>        strumturef">netdevp/a>mtucaif"pa
 class="comment">/* Get lengt3=4kbp/a>)3 href="net/caif/chnl_net3c#L1131re157" idv4L157" clas"v4L150"WARN_ON" class=reston87">o 87p/a>   restonm"v4">w-ss="sref">privp/NODEVf">container_of/NODEVcaifpa
 class="comment">/* Get lengt3112p/a>  3             return -pa 3ref="3174">o174p/a>                 goto ="net/caif/chnl href87">o 87p/a>    hrefa>(ppa
 class="comment">/* Get lengt31t; flowp/rx_errors" class="sref">rx_error3        i3 (pa href="+code=priv" c3ass="31IPp/a>); rx_error3 s="line"3 idv4L117" class="line" 3am"v431t" class="sref">dev_putp/a>(pa href=3lass="sre3">skbp/a>->pa href="+3ode=i31ss="sref">pktlenp/a>; devp/a>->pa hr class="sref">EINVALp/a>; -&g dup/a> ponnect waitv*="sref">netif_rx_nip/a>(pa href="+code=3et/caif/c3nl_net.c#L119" idv4L119"3class32et/canetif_rx_nip/a>(pa href="+code=3eskbp/a>)3ef="+code=skb" class="sr3f">sk3p/a>->pa hr    pa href="+creston87">o 87p/a>   restonm"v4">wchnl1Sf  strlp/wait_even  >       href=_timeo="sref">containerwait_even  >       href=_timeo="(pa href="+code=lyr"a>(pa href="+code=priv" class="sref">privp/a>->pa href="+code=netde3delp/=class="sr">chnl_netp/a>,opa href="+code=c3KSUM_NONE3/a>; o150p/a>>>>>>>>>f="net/caif/chnl_net.civ(pa href="+code=priv" class="sref">privp/a>-&tde3delp/="lineo5_131">o131p/a!>} o 3" classINGa>(p">chnl_netp/a>,opa href="+code=c3Kf="+code3=in_inoerrupt" class="sr3f">in32tif_stop_queuep/a>(pa"v4L150">o150p/a>>>>>>>>>f="net/caif/chnl_net.c" class_TIMEOUTline" nam"v4L38" class_TIMEOUTcaif"pa
 class="comment">/* Get lengt3" idv4L123" class="line" nam"v4L123">o1232 idv4L112" class="line" nam"v4L112">3K12p/a>  3s="line" nam"v4L123">o123p/a> 325s="sref">pktlenp/a>; devp>->pa href="+code=netdev" class="sref">3c#L124" i3v4L124" class="line" nam3v4L1232 nam"v4L155">o155p/a>staticopa href=3kb" class3"sref">skbp/a>); ); o 87p/a>   restonm"v4a=>w-ss="sref">privp/RESTARTSYSf">container_of/RESTARTSYSL142/chnl_net.c#L182" idv4L182" class=3Kt.c#L1173"line" nam"v4L127">o127p3a>   32bp/a>, 0, 1, &pa href="+code=buf_ns="sref">container_ofp/a>(pa href="+code=layr" class="sref">lwait_even  >       href= woken by a signalet" class="sref"pa
 class="comment">/* Get lengt3 pa href=3+code=priv" class="sref"3privp32 class="sref">list_for_each_safep/a>reston87">o 87p/a>   restonm"v4">w-ss="sref">privp/RESTARTSYSf">container_of/RESTARTSYSL142pa
 class="comment">/* Get lengt3ref">netd3vp/a>->pa href="+code3stats336p/a>); o 87p/a>    hrefa>(ppa
 class="comment">/* Get lengt3"sref">rx3bytesp/a> +=opa href="+c3de=pk33/a>->pa hr6" idv4L166" class="line" nam"v43net/caif/3hnl_net.c#L129" idv4L1293 clas3="line" nam"v4L129">o129p/a>     st_echnl1Sf  strlp/reston87">o 87p/a>   restonm"v4a=>w0/chnl_net.c#L182" idv4L182" class=3ef="net/c3if/chnl_net.c#L133" idv43133" 33re157" idv4L157" class="line" nam"v4ass="sref">container_ofp/a>(pa href="+code=layr" class="sref">lponnect timeo="et" class="sref"pa
 class="comment">/* Get lengt3ino pa hr3f="+code=delete_device" 3lass=3374">o174p/a>                pa href= o 48disponnect8plien                 o 48disponnect8plien f">privp/a>->pa h.c#/a>                .c#/a> f">privp/a>->pa h.c#L132" idv4L132" class=""scaif/chnl1Sf  strlp/a>(pa href="+code=priv" class="sref">privp/a>-&co pa href="+code=chnl_net""pa
 class="comment">/* Get lengt3i#L124" i3>devp/a>) flowp/a>) { privp/a>->pa href="+code=netde3delp/="lineo5_131">o131p/a>}  2MOTE_SHUTDOWN_INDp/a> ? 2lis44" class="sref">4m"v4L593rb" class3="+code=ASSERT_RTNL" cla3s="sr3f">ASSERT_RTNLp/a>(); s="line" nam"v4ass="sref">container_ofp/a>(pa href="+code=layr" class="sref">l1">o1 disponnectedet" class="sref"pa
 class="comment">/* Get lengt3it.c#L1173c#L137" idv4L137" class=3line"33bp/a>, 0, 1, &pa href="+code=bufreston87">o 87p/a>   restonm"v4">w-ss="sref">privp/TIMEDOUTline" nam"v4L38/TIMEDOUTp/a> ? 2lis44" class="sref">4m"v4L593rpa href=3device" class="sref">unr3giste33 class="sref">list_fogoto ="net/caif/chnl href87">o 87p/a>    hrefa>(ppa
 class="comment">/* Get lengt3s="sref">3evp/a>->pa href="+cod3=netd340o124p/a>    6" idv4L166" class="line" nam"v43net/caif/3hnl_net.c#L138" idv4L1383 clas34t/caif/chnl_net.c#L180" idv4L180" cl3"net/caif3chnl_net.c#L141" idv4L143" cla342o124p/a>    st_echnl1Sf  strlp/iv(pa href="+code=priv" class="sref">privp/a>-&tde3delp/="lineo5_131">o131p/a!>} o 38p/a> (pa href="+code=privs="sref">container_ofp/a>(pa href="+code=layr" class="sref">lponnect failedet" class="sref"pa
 class="comment">/* Get lengt342">o142p3a>{ o 87p/a>   restonm"v4">w-ss="sref">privp/8p/aREFUS="line" nam"v4L38/8p/aREFUS="a>(ppa
 class="comment">/* Get lengt3sno pa hr3+code=NULL" class="sref"3NULLp3474">o174p/a>         goto ="net/caif/chnl href87">o 87p/a>    hrefa>(ppa
 class="comment">/* Get lengt3s#L124" i3+code=list_node" class="3ref">34a href="+code6" idv4L166" class="line" nam"v43nb" class3 idv4L145" class="line" 3am"v43445">o145p/a>        struco pivs="sref">container_ofp/a>(pa href="+code=layr" class="sref">l">o  N=fals"v4 ponnectedet" class="sref"pa
 class="comment">/* Get lengt3et.c#L1173ref">_tmpp/a>; /* Get lengt3epa href=3 href="+code=list_for_ea3h_saf34>->pa href="+code=netdev" class="3ass="sref3>devp/a> =opa href="+cod3=list350o124="net/caif/chnl href87">o 87p/a>    hrefa>(ps" class="sref">htonsp/a>(pa hre3="net/cai3/chnl_net.c#L150" idv4L130" cl35/a>->pa hr    pa href="+c o 48disponnect8plien                 o 48disponnect8plien f">privp/a>->pa h.c#/a>                .c#/a> f">privp/a>->pa h.c#L132" idv4L132" class=""scaif/chnl1Sf  strlp/a>(pa href="+code=priv" class="sref">privp/a>-&co pa href="+code=chnl_net""pa
 clas="sref">htonsp/a>(pa hre3=net/caif3caif/chnl_net.c#L151" id34L15135c#L120" idv4La>) { privp/a>->pa href="+code=netde3delp/="lineo5_131">o131p/a>}  2MOTE_SHUTDOWN_INDp/a> ? 2lis44" class="sref">4m"v4L593         3 pa href="+code=dev_clos3" cla35 href="+code=s="line" nam"v4ass="sref">container_ofp/a>(pa href="+code=layr" class="sref">l1">o1 disponnectedet" class="sref"pa
 class="comment">/* Get lengt3etdevp/a>3; o 87p/a>   restonm"v4pa
 class="comment">/* Get lengt3eno pa hr3        } D3CLARE3545">o nam"v4L97">o 97p/a>        if 3/a> (pa hode=WARN_ON" class="srefa h5" o"+code=rtnl_lock"srefa h5" o"href=L167" class="line" namn#L50" idv4L50" class="line" nam"v4L50">o 50p/a>        .c#L132" idv4L132" class="line" nam"v4L132">o132p/a> statico3oid pa href="+code=chnl_3old" 3lass="hnl_net.c#L182" idv4L182" class=3ref="+cod3=priv" class="sref">priv3/a> =36et/caif/chnl_net.c#L49" idv4L49" clo70p/a>                                ino pa href="+code=phyid" class="sref">ppa
 class="comment">/* Get lengt3">chnlp/a3); o160p/3>        pa href="+code=3ev_ho36c#L120" idv4La>) { chnl_netp/a> *pa href="+code=dev" c3+code=pri3" class="sref">privp/a>-3gt;pa36 href="+code=s="line" nam"v4as="+code=lyr" class="sref"">workp/a>) privp/a>->pa h.c#L132" idv4L132" class="pa
 class="comment">/* Get lengt32p/a> ) { privp/a>->pa href="+code=netde3delp/="lineo5_131">o131p/a>}  2MOTE_SHUTDOWN_INDp/a> ? 2lis44" class="sref">4m"v4L593opa>stati3ovoid pa href="+code=chn3_put"365s="sref">pktlenp/a>; privp/a>->pa h.c#/a>                .c#/a> f">privp/a>->pa h.c#L132" idv4L132" class=""scaif/chnl1Sf  strlp/a>(pa href="+code=priv" class="sref">privp/a>-&co pa href="+code=chnl_net""pa
 cla44" class="sref">4m"v4L593of/chnl_n3=priv" class="sref">priv3/a> =3pa href="+code37p/a> 0pa
 class="comment">/* Get lengt3rcode=DEC3a>);          pa href="+cod3=dev_36t" class="sref">dev_putp/a>(pa href=3+code=pri3" class="sref">privp/a>-3gt;pa36ss="sa>(pa hode=WARN_ON" class="srefa h5> it+code=rtnl_lock"srefa h5> ithref=L167" class="line" namn#L50" idv4L50" class="line" nam"v4L50">o 50p/a>        .c#L132" idv4L132" class="line" nam"v4L132">o132p/a> chnl_flowctrl_cbp/3>(str370o124hnl_net.c#L182" idv4L182" class=3if_ctrlcm3" class="sref">caif_ctrl3mdp/a37     default:net.c#L49" idv4L49" clo70p/a>                                ino pa href="+code=phyid" class="sref">ppa
 class="comment">/* Get lengt3p/a>, ) { chnl_netp/a> *pa href="+code=dev" c3f="+code=3riv" class="sref">privp/3> =op37 href="+code=s="line" nam"v4as="+code=lyr" class="sref"">workp/a>) privp/a>->pa h.c#L132" idv4L132" class="pa
 class="comment">/* Get lengt3nl" class3"sref">chnlp/a>); ) { (pa href="+code=priv" class="sref">privp/a>-&g(p"/a>) { (p"/sizeofhref="+code=lyr"a>(pa href="+code=priv" class="sref">privp/a>-&g(p""pa
 class="comment">/* Get lengt3et.c#L1743 idv4L174" class="line" 3am"v43174">o174p/a> 37p/a> 0pa
 class="comment">/* Get lengt3ief="+cod3175" idv4L175" class="li3e" na37a hre6" idv4L166" class="line" nam"v43fcode=DEC3v4L176" class="line" nam3v4L173745">o nam"v4L97">o 97p/a>        if 37" idv4L137" class="line" nam"v4L137">o137t" cla>(pa hetdevWARN_ON" class="srefa h5un> it+code=rtnl_lock"srefa h5un> ithref=L167" class="line" namn#L50" idv4L50" class="line" nam"v4L50">o 50p/a>        .c#L132" idv4L132" class="line" nam"v4L132">o132p/a>                                 ino pa href="+code=phyid" class="sref">ppa
 class="comment">/* Get lengt3LCMD_REMO3E_SHUTDOWN_INDp/a> ? chnl_netp/a> *pa href="+code=dev" c3L/a>, o180p/a>    3     38c#L120" idv4La>) { privp/a>-&">workp/a>) privp/a>->pa h.c#L132" idv4L132" class="pa
 class="comment">/* Get lengt3L="+code=3"opspa
 o: pspa
 cl3ss="s38 href="+code=s="line" nam"v4robust_lis" napa href="+code=crobust_lis" napf">prcaif/chnl1Sf  strlp/a>(pa href="+code=priv" class="sref">privp/a>-&lis" fieass="sref">close_lis" fieasass="pa
 class="comment">/* Get lengt3Ll" class3a href="net/caif/chnl_ne3.c#L138re1576" idv4L166" class="line" nam"v43
t.c#L1743v4L182">o182p/a> (pa hponst143" class="line" nam"vn#L50" idv_op="sref">rx_packen#L50" idv_op=href=orkp/a>) rx_packen#Lals_op=a>-&">whnl_net.c#L182" idv4L182" class=3
code=DEC3et/caif/chnl_net.c#L186"3idv4L3845">o145p/a> +code=rx_packetsndo5op4L87">o 87p/a>   ndo5op4La>-&">workp/a>) o 87p/a>   "srefa h5op4L idv">chnl_netp/a>,opa href="+code=c3t/caif/ch3l_net.c#L187" idv4L187" 3lass=3line" nam"v4L1+code=rx_packetsndo5" o"+code=rtnl_lockndo5" o"a>-&">workp/a>) chnl_netp/a>,opa href="+code=c3tcode=pri3eue" class="sref">netif_3top_q389ne" nam"v4L1+code=rx_packetsndo5> it+code=rtnl_lockndo5> ita>-&">workp/a>)  it+code=rtnl_lock"srefa h5> ithref">chnl_netp/a>,opa href="+code=c3#L188" id34L188" class="line" nam"34L1883>o18=chnl_net"+code=rx_packetsndo5un> it+code=rtnl_lockndo5un> ita>-&">workp/a>)  it+code=rtnl_lock"srefa h5un> ithref">chnl_netp/a>,opa href="+code=c3#CMD_REMO3D4ecv_cbp/a>if/chnl_ne293/a>if3chnl_net4L132_+code=rx_packetsndo5" crt_xmiet/caif/chnl_netndo5" crt_xmiea>-&">workp/a>) chnl_netp/a>,opa href="+code=c3#/a>,  2MOTE_3HUTDO39c#L12}pa
 class="comment">/* Get lengt33etif_sa
 class="comment">/* Get lengt3u8p/3> *pa3hre157a>(pa hetdevWARN_ON" class="srefa h5de43" clef87">o 87p/a>   "srefa h5de43" clefhref=L167" class="line" namn#L50" idv4L50" class="line" nam"v4L50">o 50p/a>        .c#L132" idv4L132" class="line" nam"v4L132">o132p/a> skbp/a>->3pa hr39     hnl_net.c#L182" idv4L182" class=3ev" class3="sref">netdevp/a>;                                 ino pa href="+code=phyid" class="sref">phyidp/a>) privp/a>->pa h.c#L132" idv4L132" class="pa
 class="comment">/* Get lengt3>a href="396p/a>        pa href="+3code=3945">o145p/a>        struco p o 48prcaif/chnl1Sf  strlp/a>(pa href="+code=priv" class="sref">privp/a>-&co pa href="+code=chnl_net""pa
 cla44" class="sref">4m"v4L593>/caif/ch3ref="+code=skb" class="s3ref">39/chnl_net.c#L146" idv4L146" netdevp/a>privp/a>->pa h.c#L132" idv4L132" class="pa
 class="comment">/* Get lengt3>code=pri3="+code=ip_versn v" clas3s="sr39>->6" idv4L166" class="line" nam"v44   pa hre4="+code=kfree_skb" class4"sref40et/canetif_rx_nip/a>(pa href="+code=4>skbp/a>)4 o 50p/a>        .c#L132" idv4L132" class="line" nam"v4L132">o132p/a> 2kbp/a>)4 LCMD4ecv_cb_p/a> 2MOTE_4ref="40c#L12hnl_net.c#L182" idv4L182" class=4>3kbp/a>)4 t/caif/chnl_ne" class="41" id403 class="sref43" class="line" nam"v170p/a>                                ino pa href="+code=phyid" class="sref">ppa
 class="comment">/* Get lengt4>4kbp/a>)4 e=u8" class="sref">u8p/4ass="40#L143" idv4L1a>) { rx_packen#Lals_op=a>-&">wcaif/chnl1Sf  strlp/nefals_op="sref">rx_packen#Lals_op=a>-&pa
 class="comment">/* Get lengt4>5kbp/a>)4 ass="sref">skbp/a>->4     405s="sref">pktlenp/a>; o 87p/a>   de43" clefhref">workp/a>) o 87p/a>   "srefa h5de43" clefhrefpa
 class="comment">/* Get lengt4>6kbp/a>)4 "sref">netdevp/a>; rx_packeflag= href|>workp/a>) /* Get lengt4>7kbp/a>)4 6p/a>        pa href="+4>ETH_4045">o145p/a>        struco pcla href="+code=list_nodeef="+code=stats" claflag="sref">rx_packeflag= href|>workp/a>) /* Get lengt4>8kbp/a>)4 ef="+code=skb" class="s4     40/chnl_net.c#L146" idv4L146" (pa href="+code=list_nodeef="+code=stats" clamturef">netdevp/a>mtucaif">workp/a>) o 87p/a>   GPRS_PDP_MTU clapa
 class="comment">/* Get lengt4>9kbp/a>)4 "+code=ip_versn v" clas4lp/a>40ss="sref">pktlenp/a>; o 87p/a>   tx_queue_v4L31p/a>} /* Get lengt4="+code=E4H_P_IPV6" class="sref">E4H_P_I41et/canetif_rx_nip/a>(pa href="+code=4=skbp/a>)4s="line" nam"v4L109">o104p/a> 41/a>->pa hr    pa href="+c+code=phyid" class="sref">phyidp/a>) privp/a>->pa h.c#L132" idv4L132" class="pa
 class="comment">/* Get lengt4ass="line4 nam"v4L111">o111p/a>   4     41c#L120" idv4La>) { privp/a>->pa href="+code=neco pa href="+code=chnl_net"+code=rx_packetsrecet/caif/chnl_net.c#recet/chref">workp/a>) /* Get lengt4=3kbp/a>)4stats" class="sref">stat4p/a>.41 href="+code=s="line" nam"v4as="+code=lyr" class="sref"gt;pa href="+code=neco pa href="+code=chnl_net"+code=rx_packetsctrlcmss="sref">close_ctrlcmshref">workp/a>) /* Get lengt4=4kbp/a>)4 href="net/caif/chnl_net4c#L1141#L143" idv4L1a>) { privp/a>->pa href="+code=nenss="sref">netdevp/a>nss="sf">p">wchnl1Sf  strlp/.c#L132" idv4L132" class=pa
 class="comment">/* Get lengt4=5kbp/a>)4             return -pa 4ref="415s="sref">pktlenp/a>; (pa href="+code=priv" class="sref">privp/a>-&cv4L115">o115p/a>        pspa
 class="comment">/* If we change the header in loop mode, }  2MOTE_net.c#L116" iass=pa
 class="comment">/* Get lengt4=6kbp/a>)4L114" idv4L114" class="l4ne" n41a href="+code=container_of" a>(pa href="+code=priv" class="sref">privp/a>-&cv4L115">o115p/a>        pspa
 class="comment">/* Ib_pk "eleclef87">o 87p/a>   b_pk "eleclef31p/a>} /* Get lengt4=7kbp/a>)4 (pa href="+code=priv" c4ass="4145">o145p/a>        struco piv(pa href="+code=priv" class="sref">privp/a>-&cv4L115">o115p/a>        pspa
 class="comment">/* If iorityelp/="lineo5_13f iority31p/a>} /* Get lengt4=8kbp/a>)4 idv4L117" class="line" 4am"v441/chnl_net.c#L1uffp/a> *)opa href="+codInsert illegal valuev*="sref">netif_rx_nip/a>(pa href="+code=4lass="sre4">skbp/a>->pa href="+4ode=i41ss="sref">pktlenp/a>; privp/a>-&cv4L115">o115p/a>        pspa
 class="comment">/* Isockaddf87">o 87p/a>   sockaddfclass="comment">/* Iuref">netdevp/a>uclass="comment">/* Idgm120p/a> close_connection_is31p/a>} /* Get lengt4et/caif/c4nl_net.c#L119" idv4L119"4class420s="sref">pktlenp/a>; privp/a>-&+codease pss="sref">close_+codease ps31p/a>} /* Get lengt4eskbp/a>)4ef="+code=skb" class="sr4f">sk42t/caif/chnl_net.c#L180" idv4L180" cl4KSUM_NONE4/a>; ) { prcaif/chnl1Sf  strlp/a>(pa href="+code=priv" class="sref">privp/a>-&nt;pa href="+code=netde3delp/=class="sr"pa
 class="comment">/* Get lengt4Kf="+code4=in_inoerrupt" class="sr4f">in42tif_s6" idv4L166" class="line" nam"v44" idv4L124" class="line" nam"v4L124">o1242 idv4L112" class="line" nam"v4L112">4K12p/a>  4s="line" nam"v4L123">o124p/a> 42     else (pa hode=WARN_ON" class=ip o 48fill_info+code=rtnl_lockip o 48fill_infohref=L167" class="line" namsk_buff87">o 87p/a>   sk_buff        ino pa href="sk97" idv4L97" clask9 idv"hponst143" class="line" nam"vn#L50" idv4L50" class="line" nam"v4L50">o 50p/a>        .c#L132" idv4L132" class="line" nam"v4L132">o132p/a> skbp/a>); o127p4a>   42bp/a>, 0, 1, 43" class="line" nam"v170p/a>                                ino pa href="+code=phyid" class="sref">ppa
 class="comment">/* Get lengt4 pa href=4+code=priv" class="sref"4privp42ss="sref">pktlenp/a>; netdevp/a>ubp/a>,="comment">/* Iboo"+code=rtnl_lockboo"f">ppa
 class="comment">/* Get lengt4ref">netd4vp/a>->pa href="+code4stats430s="sref">pktlenp/a>; ) privp/a>->pa h.c#L132" idv4L132" class="pa
 class="comment">/* Get lengt4"sref">rx4bytesp/a> +=opa href="+c4de=pk43/a>->pa hrst_echnl1Sf  strlp/nlap/a>_uhnl_net.c#L" claselap/a>_uhnf">privp/a>->pa hsk97" idv4L97" clask9 idv"horkp/a>)  2IFLA_MOTE_IPV438p/aI2 idv"a
 class="comment">/* Get lengt4"SUM_NONE4hnl_net.c#L129" idv4L1294 clas43c#L120" idv4L120" cla"v4L150"WARN_ON" class=iv(pa href="+code=priv" class="sref">privp/a>-&cv4L115">o115p/a>        pspa
 class="comment">/* Isockaddf87">o 87p/a>   sockaddfclass="comment">/* Iuref">netdevp/a>uclass="comment">/* Idgm120p/a> close_connection_is31p/) ||a
 class="comment">/* Get lengt4"f="+code4hnl_net.c#L130" idv4L1304 clas43tif_stop_queuep/achnl1Sf  strlp/nlap/a>_uhnl_net.c#L" claselap/a>_uhnf">privp/a>->pa hsk97" idv4L97" clask9 idv"horkp/a>)  2IFLA_MOTE_IPV638p/aI2 idv"a
 class="comment">/* Get lengt4" idv4L124if/chnl_net.c#L133" idv44133" 43re157" idv4L157" clas"v4L150"WARN_ON" class=iv(pa href="+code=priv" class="sref">privp/a>-&cv4L115">o115p/a>        pspa
 class="comment">/* Isockaddf87">o 87p/a>   sockaddfclass="comment">/* Iuref">netdevp/a>uclass="comment">/* Idgm120p/a> close_connection_is31p/)"line" nam"v4L132">o132p/a> o174p/a>         goto ="net/caif/chnlelap/a>_failurv4L50" class="linlap/a>_failurvf">ppa
 class="comment">/* Get lengt4r#L124" i4>devp/a>) phyidp/a>) (pa href="+code=priv" class="sref">privp/a>-&cv4L115">o115p/a>        pspa
 class="comment">/* If we change the header in loop mode,  } ppa
 class="comment">/* Get lengt4rb" class4="+code=ASSERT_RTNL" cla4s="sr43IPp/a>); _u8ref">netdevp/a>elap/a>_u8f">privp/a>->pa hsk97" idv4L97" clask9 idv"horkp/a>)  2IFLA_MOTE_LOO BACK idv"horkp/a>) p)"line" nam"v4L132">o132p/a> , 0, 1, &pa goto ="net/caif/chnlelap/a>_failurv4L50" class="linlap/a>_failurvf">ppa
 class="comment">/* Get lengt4rpa href=4device" class="sref">unr4giste43 class="sref"37p/a> 0pa
 class="comment">/* Get lengt4s="sref">4evp/a>->pa href="+cod4=netd440o124="net/caif/chnlelap/a>_failurv4L50" class="linlap/a>_failurvf">ps" class="sref">htonsp/a>(pa hre4net/caif/4hnl_net.c#L138" idv4L1384 clas441class="sref"37p/a> -ss="sref">privp/MSGSIZE4L50" class="li/MSGSIZEf">ppa
 class="comment">/* Get lengt4"net/caif4chnl_net.c#L141" idv4L144" cla44"line" nam"v4L129">o129p/a> o142p4a>{ 4sno pa hr4+code=NULL" class="sref"4NULLp4474">oa>(pa hetdevWARN_ON" class="o 4848"b_pk parm="sref">rx_packe"o 4848"b_pk parm=href=L167" class="line" namnlattf87">o 87p/a>   nlattfL50">o 50p/a>        .ata120p/a> /* Get lengt4s#L124" i4+code=list_node" class="4ref">44a href="+codeeeeeeeeeeeeeeeeeeeeeeeee43" class="line" nam"v1a 48ponnect8a
 ues                 o 48ponnect8a
 ues L50">o 50p/a>        cv4L115">o115p/a>        pspa
 clas"line" nam"v4L132">o132p/a> _tmpp/a>; list_for_each_safep/a>iv >or.c#L128" idv4L128v >or.f">priss="sref">flowp/a> ==opa hno params data foundet" class="sref"pa
 class="comment">/* Get lengt4ass="sref4>devp/a> =opa href="+cod4=list456p/a>); /* Get lengt4aet/caif/4/chnl_net.c#L150" idv4L140" cl45/a>->pa hr6" idv4L166" class="line" nam"v44=net/caif4caif/chnl_net.c#L151" id44L151452o124p/a>    st_echnl1Sf  strlp/.ata120p/a> )  2IFLA_MOTE_IPV438p/aI2 idv]"line" nam"v4L132">o132p/a> (pa href="+code=prcv4L115">o115p/a>        pspa
 clasgt;pa href="+code=netockaddf87">o 87p/a>   sockaddfclass="comment">/* Iuref">netdevp/a>uclass="comment">/* Idgm120p/a> close_connection_is31p/ =line" nam"v4L132">o132p/a> o142p4; privp/a>->pa h.ata120p/a> )  2IFLA_MOTE_IPV438p/aI2 idv]"pa
 class="comment">/* Get lengt4ano pa hr4        } )  2IFLA_MOTE_IPV638p/aI2 idv]"line" nam"v4L132">o132p/a> flowp/a>) { o115p/a>        pspa
 clasgt;pa href="+code=netockaddf87">o 87p/a>   sockaddfclass="comment">/* Iuref">netdevp/a>uclass="comment">/* Idgm120p/a> close_connection_is31p/ =line" nam"v4L132">o132p/a> D4CLARE45">ASSERT_RTNLp/a>(); "v4L150"WARN_ON" class=nlapg h5uhnl_net.c#L" claselapg h5uhnf">privp/a>->pa h.ata120p/a> )  2IFLA_MOTE_IPV638p/aI2 idv]"pa
 class="comment">/* Get lengt4at.c#L1174f="net/caif/chnl_net.c#L457" i45/chnl_net.c#Lst_eivp/a>->pa h.ata120p/a> )  2IFLA_MOTE_LOO BACK idv]/chnl_net.c#L182" idv4L182" class=4a>statico4oid pa href="+code=chnl_4old" 45 class="sref">list_fost_echnl1Sf  strlp/elapg h5u8ref">netdevp/a>elapg h5u8f">privp/a>->pa h.ata120p/a> )  2IFLA_MOTE_LOO BACK idv]/"line" nam"v4L132">o132p/a> priv4/a> =466p/a>); flowp/a>) { o115p/a>        pspa
 clasgt;pa href="+code=nef we change the header in loop mode, } ppa
 class="comment">/* Get lengt4">chnlp/a4); /* Get lengt4"net/caif4>        pa href="+code=4ev_ho46c#L120" idv4L120" cla"v4L150"WARN_ON" class=cv4L115">o115p/a>        pspa
 clasgt;pa href="+code=nef we change the header in loop mode, } ppa
 class="comment">/* Get lengt4"        4" class="sref">privp/a>-4gt;pa46 href="+code=6" idv4L166" class="line" nam"v442p/a> stati4ovoid pa href="+code=chn4_put"46     else priv4/a> =46" claa>(pa hode=WARN_ON" class=ip o 48newb_pk+code=rtnl_lockip o 48newb_pkhref=L167" class="line" namn>                           ino pa href="src/a>                src/a>  idv"h43" class="line" nam"vn#L50" idv4L50" class="line" nam"v4L50">o 50p/a>        .c#L132" idv4L132" class="a
 class="comment">/* Get lengt4rcode=DEC4a>); ASSERT_RTNLp/a>(); "v4L150"ee43" class="line" nam"vnlattf87">o 87p/a>   nlattfL50">o 50p/a>        t97" idv4L97" clatbL50"[]"e43" class="line" nam"vnlattf87">o 87p/a>   nlattfL50">o 50p/a>        .ata120p/a> o132p/a>         pa href="+cod4=dev_46t" clhnl_net.c#L182" idv4L182" class=4+code=pri4" class="sref">privp/a>-4gt;pa46 class="sref"ode=WARN_ON" class=r>                renm"v4pa
 class="comment">/* Get lengt4b" class=4sref">chnl_flowctrl_cbp/4>(str47et/caif/chnl_net.c#L49" idv4L49" clo70p/a>                                ino pa href="ent".c#L132" idv4L132"ent".c#m"v4pa
 class="comment">/* Get lengt4b>chnlp/a4" class="sref">caif_ctrl4mdp/a47/a>->pa hr    pa href="+co pa href="+code=chnl_net" class="sref">chnl_netp/a> *pa href="+code=dev" c4p/a>, ) { ) privp/a>->pa h.c#L132" idv4L132" class="pa
 class="comment">/* Get lengt4f="+code=4riv" class="sref">privp/4> =op47 href="+code=s="line" nam"v4"o 4848"b_pk parm="sref">rx_packe"o 4848"b_pk parm=href= 50p/a>        .ata120p/a> privp/a>-&cv4L115">o115p/a>        pspa
 clas"pa
 class="comment">/* Get lengt4fp/a> chnlp/a>); ) {   "ethref= 50p/a>        ent".c#L132" idv4L132"ent".c#m"v4ss="sref">privp/a>-&nss="sref">netdevp/a>nss="sf">p"horkp/a>)                 src/a>  idv"pa
 class="comment">/* Get lengt4fpa>stati4 idv4L174" class="line" 4am"v447     else                 renm"v4hyidp/a>) privp/a>->pa h.c#L132" idv4L132" class="pa
 class="comment">/* Get lengt4fcode=DEC4v4L176" class="line" nam4v4L1747IPp/a>); o132p/a> o147bp/a>, 0, 1, &pa href="+code=buf_ns>or.c#L128" idv4L128v >or.f">priss="sref">flowp/a> ==opa hals"v4 rtml registration failedet" class="sref"pa
 class="comment">/* Get lengt4bcode=pri4class="line" nam"v4L178"4o178p47 class="sref"elsea
 class="comment">/* Get lengt4
 o: ); close_lis" adsf">prcaif/chnl1Sf  strlp/ent".c#L132" idv4L132"ent".c#m"v4ss="sref">privp/a>-&lis" fieass="sref">close_lis" fieasass="scaif/chnl1Sf  strlp/esrefa h5lis"                       5lis"ass="pa
 class="comment">/* Get lengt4LCMD_REMO4E_SHUTDOWN_INDp/a> ? , o180p/a>    4     48c#L120" idv4Lauffp/a> *)opa href="+codUsehstindex as connection>, , and usehboo"back channel default.v*="sref">netif_rx_nip/a>(pa href="+code=4L="+code=4"opspa
 o: pspa
 cl4ss="s483o124p/a>    st_echnl1Sf  strlp/ent".c#L132" idv4L132"ent".c#m"v4ss="sref">privp/a>-&cv4L115">o115p/a>        pspa
 class="comment">/* Isockaddf87">o 87p/a>   sockaddfclass="comment">/* Iuref">netdevp/a>uclass="comment">/* Idgm120p/a> close_connection_is31p/,  } privp/a>-&cv4L115">o115p/a>        pspa
 class="comment">/* Isockaddf87">o 87p/a>   sockaddfclass="comment">/* Iuref">netdevp/a>uclass="comment">/* Idgm120p/a> close_connection_is31p/, tlenp/a>; /* Get lengt4
t.c#L1744v4L182">o182p/a> o174p/a>                pa href= o 4.c#L132" idv4L132"ent".c#m"v4ss="sref">privp/a>-&cv4L115">o115p/a>        pspa
 class="comment">/* If we change the header in loop mode, } ppa
 class="comment">/* Get lengt4184p/a>  4     switch (pa href="+c4de=fl48a href="+code6" idv4L166" class="line" nam"v44
code=DEC4et/caif/chnl_net.c#L186"4idv4L4845">o145p/a> 37p/a> s="line" nam"v4re                renm"v4pa
 class="comment">/* Get lengt4t/caif/ch4l_net.c#L187" idv4L187" 4lass=4line" 6" idv4L166" class="line" nam"v44
code=pri4eue" class="sref">netif_4top_q48>->pa href="+code=netdev" class="4#L188" id44L188" class="line" nam"44L1884>o18=ca>(pa hode=WARN_ON" class=ip o 48changeb_pk+code=rtnl_lockip o 48changeb_pkhref=L167" class="line" namn> 50" idv4L50" class="line" nam"v4L50">o 50p/a>        .c#L132" idv4L132" class="e43" class="line" nam"vnlattf87">o 87p/a>   nlattfL50">o 50p/a>        t97" idv4L97" clatbL50"[]";pa href="+code=netdev" class="4#CMD_REMO4D4ecv_cbp/a>if/chnl_ne294/a>if49hnl_net4L132_reqp/a>;;;;;;;;;;;;;;;;;43" class="line" nam"vnlattf87">o 87p/a>   nlattfL50">o 50p/a>        .ata120p/a> o132p/a> ,  2MOTE_4HUTDO49c#L12hnl_net.c#L182" idv4L182" class=4493 class="sref43" class="line" nam"v170p/a>                                ino pa href="ent".c#L132" idv4L132"ent".c#m"v4pa
 class="comment">/* Get lengt4u8p/4> *pa49#L143" idv4L1a>) { chnl_netp/a> *pa href="+code=dev" c4" class=44lass="sref">skbp/a>->4pa hr495s="sref">pktlenp/a>; ) privp/a>->pa h.c#L132" idv4L132" class="pa
 class="comment">/* Get lengt4ev" class4="sref">netdevp/a>; rx_packe"o 4848"b_pk parm=href= 50p/a>        .ata120p/a> privp/a>-&cv4L115">o115p/a>        pspa
 clas"pa
 class="comment">/* Get lengt4>a href="496p/a>        pa href="+4code=4945">o145p/a>        struco pe=fals_1">o18change+code=lyr" clase=fals_1">o18changef">privp/a>->pa h.c#L132" idv4L132" class="pa
 class="comment">/* Get lengt4e/caif/ch4ref="+code=skb" class="s4ref">49/chnl_net.c#L37p/a> 0pa
 class="comment">/* Get lengt4>code=pri4="+code=ip_versn v" clas4s="sr49>->6" idv4L166" class="line" nam"v45   pa hre5="+code=kfree_skb" class5"sref50et/canetif_rx_nip/a>(pa href="+code=5>skbp/a>)5 /* Isize_                size_ chnl_WARN_ON" class=ip o 48g h5size+code=rtnl_lockip o 48g h5sizef">prponst143" class="line" nam"vn#L50" idv4L50" class="line" nam"v4L50">o 50p/a>        .c#L132" idv4L132" class="line" nam"v4L132">o132p/a> 2kbp/a>)5 LCMD4ecv_cb_p/a> 2MOTE_5ref="50c#L12hnl_net.c#L182" idv4L182" class=5>3kbp/a>)5 t/caif/chnl_ne" class="51" id503 class="sref37p/a>nl_net.c#L182" idv4L182" class=5>4kbp/a>)5 e=u8" class="sref">u8p/5ass="50re157" idv4L157" classuffp/a> *)opa href="+codIFLA_MOTE_IPV438p/aI2v*="sref">netif_rx_nip/a>(pa href="+code=5>5kbp/a>)5 ass="sref">skbp/a>->5     5074">o174p/a>                pa href=elaptotal5size+code=rtnl_lockelaptotal5sizef">pr4) +netif_rx_nip/a>(pa href="+code=5>6kbp/a>)5 "sref">netdevp/a>; flowp/auffp/a> *)opa href="+codIFLA_MOTE_IPV638p/aI2v*="sref">netif_rx_nip/a>(pa href="+code=5>7kbp/a>)5 6p/a>        pa href="+5>ETH_50">ASSERT_RTNLp/a>(); s="line" nam"v4elaptotal5size+code=rtnl_lockelaptotal5sizef">pr4) +netif_rx_nip/a>(pa href="+code=5>8kbp/a>)5 ef="+code=skb" class="s5     50bp/a>, 0, 1, &pa huffp/a> *)opa href="+codIFLA_MOTE_LOO BACKv*="sref">netif_rx_nip/a>(pa href="+code=5>9kbp/a>)5 "+code=ip_versn v" clas5lp/a>50 class="sref">list_for_each_safep/a>elaptotal5size+code=rtnl_lockelaptotal5sizef">pr2) +netif_rx_nip/a>(pa href="+code=5="+code=E5H_P_IPV6" class="sref">E5H_P_I516p/a>); /* Get lengt5=skbp/a>)5s="line" nam"v4L109">o105p/a> 51/a>-&6" idv4L166" class="line" nam"v45ass="line5 nam"v4L111">o111p/a>   5     51"line" nam"v4L129">o129p/a> )5stats" class="sref">stat5p/a>.51 hrefa>(pa hponst143" class="line" nam"vnlap/olicyelp/="lineo5_13nlap/olicychnl_WARN_ON" class=ip o 48/olicyelp/="lineo5_13ip o 48/olicyL50"[WARN_ON" class=IFLA_MOTE_MAXelp/="lineo5_13IFLA_MOTE_MAXchnl_+ 1]">whnl_net.c#L182" idv4L182" class=5=4kbp/a>)5 href="net/caif/chnl_net5c#L1151#L143" idv4L1[orkp/a>)  2IFLA_MOTE_IPV438p/aI2 idv] idv4L1>wh_+code=rx_packetstype+code=rtnl_locktypem"v4hyidp/a>) pkt[orkp/a>)  2IFLA_MOTE_IPV638p/aI2 idv] idv4L1>wh_+code=rx_packetstype+code=rtnl_locktypem"v4hyidp/a>) wh_+code=rx_packetstype+code=rtnl_locktypem"v4hyidp/a>) netdevp/a>NLA_U8m"v4h};pa href="+code=netdev" class="5=7kbp/a>)5 (pa href="+code=priv" c5ass="5145">o}pa
 class="comment">/* Get lengt5=8kbp/a>)5 idv4L117" class="line" 5am"v451t" class="sref">dev_putp/a>(pa href=5lass="sre5">skbp/a>->pa href="+5ode=i51>->pa href="+code=netdev" class="5et/caif/c5nl_net.c#L119" idv4L119"5class52o18=ca>(pa h43" class="line" nam"vrtv" b_pk op="sref">rx_packertv" b_pk op=chnl_WARN_ON" class=ip o 48b_pk op="sref">rx_packeip o 48b_pk op=chnl_WARN_ON" class=_pa
ad_mostlyelp/="lineo5_13_pa
ad_mostlym"v4hyihnl_net.c#L182" idv4L182" class=5eskbp/a>)5ef="+code=skb" class="sr5f">sk52hnl_net4L132_+code=rx_packetskinss="sref">close_kinsp/a>); flowp/a> ==opa h idv" class="sref";pa href="+code=netdev" class="5KSUM_NONE5/a>; /* If iv5size+code=rtnl_lockf iv5size#L120" idv=/sizeofh43" class="line" nam"v170p/a>                            )";pa href="+code=netdev" class="5K3kbp/a>)5=in_inoerrupt" class="sr5f">in523#L120" idv4Ls="comment">/* I"etu"+code=rtnl_lock"etu"href; o12524#L120" idv4Ls="comment">/* Imaxtype+code=rtnl_lockmaxtype#L120" idv4L>workp/a>) o125p/a> 525#L120" idv4Ls="comment">/* Ifolicyelp/="lineo5_13/olicychnl_/* Inewb_pk+code=rtnl_locknewb_pkhrefskbp/a>); o145p/a> +code=rx_packetschangeb_pk+code=rtnl_lockchangeb_pkhrefhref== iARN_ON" class=ip o 48changeb_pk+code=rtnl_lockip o 48changeb_pkhref";pa href="+code=netdev" class="5K8kbp/a>)5"line" nam"v4L127">o127p5a>   52ine" nam"v4L1+code=rx_packetsg h5size+code=rtnl_lockg h5sizef">pa href== iARN_ON" class=ip o 48g h5size+code=rtnl_lockip o 48g h5sizef">p";pa href="+code=netdev" class="5Kass="sre5+code=priv" class="sref"5privp529ne" nam"v4L1+code=rx_packetsfill_info+code=rtnl_lockfill_infohref href== iARN_ON" class=ip o 48fill_info+code=rtnl_lockip o 48fill_infohref";pa href="+code=netdev" class="5ref">netd5vp/a>->pa href="+code5stats53et/canetif_rx_nip/a>(pa href="+code=5"sref">rx5bytesp/a> +=opa href="+c5de=pk53/a>-&}pa
 class="comment">/* Get lengt5"SUM_NONE5hnl_net.c#L129" idv4L1295 clas53"line" nam"v4L129">o129p/a> (pa hode=WARN_ON" class=_5> it+code=rtnl_lock_5> ita>-&"ss="line" nam"v170p/i it_module+code=rtnl_lock170p/i it_modulef">pretde"line" nam"v4L132">o132p/a> o174p/a> 37p/a> s="line" nam"v4rtv" b_pk register"sref">rx_packertv" b_pk registerf">prcaif/chnl1Sf  strlp/ip o 48b_pk op="sref">rx_packeip o 48b_pk op=chnl"pa
 class="comment">/* Get lengt5r#L124" i5>devp/a>) o nam"v4L97">o 97p/a>        if 5it.c#L1175c#L137" idv4L137" class=5line"53t" cla>(pa hetdevWARN_ON" class=__exit+code=rtnl_lock_5exita>-&"ss="line" nam"v170p/exit_module+code=rtnl_lock170p/exit_modulef">pretde"line" nam"v4L132">o132p/a> unr5giste53ass="hnl_net.c#L182" idv4L182" class=5s="sref">5evp/a>->pa href="+cod5=netd54et/caif/chnl_net.c#L49" idv4L49" clo70p/a>                                ino pa href=".c#L132" idv4L132" class=hyidp/a>) /* Get lengt5net/caif/5hnl_net.c#L138" idv4L1385 clas541class="sref"net.c#L49" idv4L49" cllis" "v4L+code=rtnl_locklis" "v4L        ino pa href="lis" nef=+code=rtnl_locklis" nef=m"v4pa
 class="comment">/* Get lengt5nSUM_NONE5chnl_net.c#L141" idv4L145" cla542class="sref"net.c#L49" idv4L49" cllis" "v4L+code=rtnl_locklis" "v4L        ino pa href="_tm"+code=rtnl_lock_tm"m"v4pa
 class="comment">/* Get lengt5nf="+code5"+code=close_work" class5"sref54 href="+code=s="line" nam"v4rtv" b_pk unregister"sref">rx_packertv" b_pk unregisterf">prcaif/chnl1Sf  strlp/ip o 48b_pk op="sref">rx_packeip o 48b_pk op=chnl"pa
 class="comment">/* Get lengt542">o142p5a>{ ) { chnl_netp/a> *pa href="+code=dev" c5sno pa hr5+code=NULL" class="sref"5NULLp545s="sref">pktlenp/a>; privp/a>->pa hlis" nef=+code=rtnl_locklis" nef=m"v4"horkp/a>) 54a href="+codeeeeeeeee  ino pa href=".c#L132" idv4L132" class=hyidp/a>) privp/a>->pa hlis" nef=+code=rtnl_locklis" nef=m"v4"hnet.c#L49" idv4L49" clo70p/a>                            "horkp/a>) close_lis" fieasass="pa
 class="comment">/* Get lengt5nb" class5 idv4L145" class="line" 5am"v454">ASSERT_RTNLp/a>(); s="line" nam"v4lis" napa href="+code=clis" napf">privp/a>->pa hlis" nef=+code=rtnl_locklis" nef=m"v4"pa
 class="comment">/* Get lengt5nt.c#L1175ref">_tmpp/a>; privp/a>->pa h.c#L132" idv4L132" class="pa
 class="comment">/* Get lengt5epa href=5 href="+code=list_for_ea5h_saf54 class="sref"6" idv4L166" class="line" nam"v45ass="sref5>devp/a> =opa href="+cod5=list550s="sref">pktlenp/a>; chnl_netp/a> *pa href="+code=dev" c5aet/caif/5/chnl_net.c#L150" idv4L150" cl55/a>-&6" idv4L166" class="line" nam"v45=net/caif5caif/chnl_net.c#L151" id54L15155"line" nam"v4L129">o129p/a> /* Imodule5> it+code=rtnl_lockmodule5> itf">privp/a>->pa h170p/i it_module+code=rtnl_lock170p/i it_modulef">pnl_netp/a> *pa href="+code=dev" c5a2">o142p5; /* Imodule5exit+code=rtnl_lockmodule5exitf">privp/a>->pa h170p/exit_module+code=rtnl_lock170p/exit_modulef">pnl_netp/a> *pa href="+code=dev" c5ano pa hr5        } 
The original LXR software by the netp/a> *http://sourceforge.pa hprojects/lxr">LXR a hrunity31p/, this experiref=al version>by netp/a> *mailto:lxr@a hux.nocklxr@a hux.no31p/.
lxr.a hux.no kinsly hosted>by netp/a> *http://www.redpill-a hpro.nockRedpill L hpro AS31p/, provider of L huxhponsulting and operations ser idvs since 1995.