linux/net/bridge/br_device.c
<<
="v2/op/spa.22 /op/form22 /opa ="v2/o href="../linux+v3.7.7/net/bridge/br_device.c">="v2/opimg src="../.static/gfx/right.png" alt=">>">="p/spa.22="pspa. class="lxr_search">="v2="v2/opinput typ="v2/opinput typ="v2/opbutt> typSearch 22 /op/form22 p/spa.22="pspa. class="lxr_prefs"22 /opa href="+prefs?return=net/bridge/br_device.c"="v2/o onclick="return ajax_prefs();">="v2/oPrefs2 /op/a>="p/spa.22v2/o op/div22v2/o opform ac2.6.="ajax+*" method="post" onsubmit="return false;">="pinput typ=v2/o op/form22=v2/o opdiv class="headingbott>m">2 pdiv idopfile_contents"2
o o1p/a>pspa. class="comment">/*p/spa.22o o2p/a>pspa. class="comment"> *v2/o oDevice handling codep/spa.22o o3p/a>pspa. class="comment"> *v2/o oLinux ethernet bridgep/spa.22o o4p/a>pspa. class="comment"> *p/spa.22o o5p/a>pspa. class="comment"> *v2/o oAuthors:p/spa.22o o6p/a>pspa. class="comment"> *v2/o oLennert Buytenhek               <buytenh@gnu.org>p/spa.22o o7p/a>pspa. class="comment"> *p/spa.22o o8p/a>pspa. class="comment"> *v2/o oThis program is free software; you ca. redistribute it and/orp/spa.22o o9p/a>pspa. class="comment"> *v2/o omodify it under the terms of the GNU General PublicoLicensep/spa.22o 6.18a>pspa. class="comment"> *v2/o oas published by the Free Software Founda2.6.; either vers.6.p/spa.22o 11p/a>pspa. class="comment"> *v2/o o2 of the License, or (at your  v2.6.) any later vers.6..p/spa.22o 12p/a>pspa. class="comment"> */p/spa.22o 13p/a>2o 14p/a>#include <linux/kernel.hp/a>>2o 15p/a>#include <linux/netdevice.hp/a>>2o 16p/a>#include <linux/netpoll.hp/a>>2o 17p/a>#include <linux/etherdevice.hp/a>>2o 18p/a>#include <linux/ethtool.hp/a>>2o 19p/a>#include <linux/list.hp/a>>2o 20p/a>#include <linux/netfilter_bridge.hp/a>>2o 21p/a>2o 22p/a>#include <asm/uaccess.hp/a>>2o 23p/a>#include "br_private.hp/a>"2o 24p/a>2o 25p/a>pspa. class="comment">/* net device transmit always called with BH disabled */p/spa.22o 26p/a>pa href="+code=netdev_tx_t" class="sref">netdev_tx_tp/a> pa href="+code=br_dev_xmit" class="sref">br_dev_xmitp/a>(struct pa href="+code=sk_buff" class="sref">sk_buffp/a> *pa href="+code=skb" class="sref">skbp/a>, struct pa href="+code=net_device" class="sref">net_devicep/a> *pa href="+code=dev" class="sref">devp/a>)2o 27p/a>{2o 28p/a>        struct pa href="+code=net_bridge" class="sref">net_bridgep/a> *pa href="+code=br" class="sref">brp/a> = pa href="+code=netdev_priv" class="sref">netdev_privp/a>(pa href="+code=dev" class="sref">devp/a>);2o 29p/a>        const unsigned char *pa href="+code=dest" class="sref">destp/a> = pa href="+code=skb" class="sref">skbp/a>->pa href="+code=data" class="sref">datap/a>;2o 30p/a>        struct pa href="+code=net_bridge_fdb_entry" class="sref">net_bridge_fdb_entryp/a> *pa href="+code=dst" class="sref">dstp/a>;2o 31p/a>        struct pa href="+code=net_bridge_mdb_entry" class="sref">net_bridge_mdb_entryp/a> *pa href="+code=mdst" class="sref">mdstp/a>;2o 32p/a>        struct pa href="+code=br_cpu_netstats" class="sref">br_cpu_netstatsp/a> *pa href="+code=brstats" class="sref">brstatsp/a> = pa href="+code=this_cpu_ptr" class="sref">this_cpu_ptrp/a>(pa href="+code=br" class="sref">brp/a>->pa href="+code=stats" class="sref">statsp/a>);2o 33p/a>2o 34p/a>        pa href="+code=rcu_read_lock" class="sref">rcu_read_lockp/a>();2o 35p/a>#ifdef pa href="+code=CONFIG_BRIDGE_NETFILTER" class="sref">CONFIG_BRIDGE_NETFILTERp/a>2o 36p/a>        if (pa href="+code=skb" class="sref">skbp/a>->pa href="+code=nf_bridge" class="sref">nf_bridgep/a> && (pa href="+code=skb" class="sref">skbp/a>->pa href="+code=nf_bridge" class="sref">nf_bridgep/a>->pa href="+code=mask" class="sref">maskp/a> & pa href="+code=BRNF_BRIDGED_DNAT" class="sref">BRNF_BRIDGED_DNATp/a>)) {2o 37p/a>                pa href="+code=br_nf_pre_routing_finish_bridge_slow" class="sref">br_nf_pre_routing_finish_bridge_slowp/a>(pa href="+code=skb" class="sref">skbp/a>);2o 38p/a>                pa href="+code=rcu_read_unlock" class="sref">rcu_read_unlockp/a>();2o 39p/a>                return pa href="+code=NETDEV_TX_OK" class="sref">NETDEV_TX_OKp/a>;2o 40p/a>        }2o 41p/a>#endif2o 42p/a>2o 43p/a>        pa href="+code=u64_stats_update_begin" class="sref">u64_stats_update_beginp/a>(&pa href="+code=brstats" class="sref">brstatsp/a>->pa href="+code=syncp" class="sref">syncpp/a>);2o 44p/a>        pa href="+code=brstats" class="sref">brstatsp/a>->pa href="+code=tx_packets" class="sref">tx_packetsp/a>++;2o 45p/a>        pa href="+code=brstats" class="sref">brstatsp/a>->pa href="+code=tx_bytes" class="sref">tx_bytesp/a> += pa href="+code=skb" class="sref">skbp/a>->pa href="+code=len" class="sref">lenp/a>;2o 46p/a>        pa href="+code=u64_stats_update_end" class="sref">u64_stats_update_endp/a>(&pa href="+code=brstats" class="sref">brstatsp/a>->pa href="+code=syncp" class="sref">syncpp/a>);2o 47p/a>2o 48p/a>        pa href="+code=BR_INPUT_SKB_CB" class="sref">BR_INPUT_SKB_CBp/a>(pa href="+code=skb" class="sref">skbp/a>)->pa href="+code=brdev" class="sref">brdevp/a> = pa href="+code=dev" class="sref">devp/a>;2o 49p/a>2o 50p/a>        pa href="+code=skb_reset_mac_header" class="sref">skb_reset_mac_headerp/a>(pa href="+code=skb" class="sref">skbp/a>);2o 51p/a>        pa href="+code=skb_pull" class="sref">skb_pullp/a>(pa href="+code=skb" class="sref">skbp/a>, pa href="+code=ETH_HLEN" class="sref">ETH_HLENp/a>);2o 52p/a>2o 53p/a>        if (pa href="+code=is_broadcast_ether_addr" class="sref">is_broadcast_ether_addrp/a>(pa href="+code=dest" class="sref">destp/a>))2o 54p/a>                pa href="+code=br_flood_deliver" class="sref">br_flood_deliverp/a>(pa href="+code=br" class="sref">brp/a>, pa href="+code=skb" class="sref">skbp/a>);2o 55p/a>        else if (pa href="+code=is_multicast_ether_addr" class="sref">is_multicast_ether_addrp/a>(pa href="+code=dest" class="sref">destp/a>)) {2o 56p/a>                if (pa href="+code=unlikely" class="sref">unlikelyp/a>(pa href="+code=netpoll_tx_running" class="sref">netpoll_tx_runningp/a>(pa href="+code=dev" class="sref">devp/a>))) {2o 57p/a>                        pa href="+code=br_flood_deliver" class="sref">br_flood_deliverp/a>(pa href="+code=br" class="sref">brp/a>, pa href="+code=skb" class="sref">skbp/a>);2o 58p/a>                        goto pa href="+code=out" class="sref">outp/a>;2o 59p/a>                }2o 60p/a>                if (pa href="+code=br_multicast_rcv" class="sref">br_multicast_rcvp/a>(pa href="+code=br" class="sref">brp/a>, pa href="+code=NULL" class="sref">NULLp/a>, pa href="+code=skb" class="sref">skbp/a>)) {2o 61p/a>                        pa href="+code=kfree_skb" class="sref">kfree_skbp/a>(pa href="+code=skb" class="sref">skbp/a>);2o 62p/a>                        goto pa href="+code=out" class="sref">outp/a>;2o 63p/a>                }2o 64p/a>2o 65p/a>                pa href="+code=mdst" class="sref">mdstp/a> = pa href="+code=br_mdb_get" class="sref">br_mdb_getp/a>(pa href="+code=br" class="sref">brp/a>, pa href="+code=skb" class="sref">skbp/a>);2o 66p/a>                if (pa href="+code=mdst" class="sref">mdstp/a> || pa href="+code=BR_INPUT_SKB_CB_MROUTERS_ONLY" class="sref">BR_INPUT_SKB_CB_MROUTERS_ONLYp/a>(pa href="+code=skb" class="sref">skbp/a>))2o 67p/a>                        pa href="+code=br_multicast_deliver" class="sref">br_multicast_deliverp/a>(pa href="+code=mdst" class="sref">mdstp/a>, pa href="+code=skb" class="sref">skbp/a>);2o 68p/a>                else2o 69p/a>                        pa href="+code=br_flood_deliver" class="sref">br_flood_deliverp/a>(pa href="+code=br" class="sref">brp/a>, pa href="+code=skb" class="sref">skbp/a>);2o 70p/a>        } else if ((pa href="+code=dst" class="sref">dstp/a> = pa href="+code=__br_fdb_get" class="sref">__br_fdb_getp/a>(pa href="+code=br" class="sref">brp/a>, pa href="+code=dest" class="sref">destp/a>)) != pa href="+code=NULL" class="sref">NULLp/a>)2o 71p/a>                pa href="+code=br_deliver" class="sref">br_deliverp/a>(pa href="+code=dst" class="sref">dstp/a>->pa href="+code=dst" class="sref">dstp/a>, pa href="+code=skb" class="sref">skbp/a>);2o 72p/a>        else2o 73p/a>                pa href="+code=br_flood_deliver" class="sref">br_flood_deliverp/a>(pa href="+code=br" class="sref">brp/a>, pa href="+code=skb" class="sref">skbp/a>);2o 74p/a>2o 75p/a>pa href="+code=out" class="sref">outp/a>:2o 76p/a>        pa href="+code=rcu_read_unlock" class="sref">rcu_read_unlockp/a>();2o 77p/a>        return pa href="+code=NETDEV_TX_OK" class="sref">NETDEV_TX_OKp/a>;2o 78p/a>}2o 79p/a>2o 80p/a>static int pa href="+code=br_dev_init" class="sref">br_dev_initp/a>(struct pa href="+code=net_device" class="sref">net_devicep/a> *pa href="+code=dev" class="sref">devp/a>)2o 81p/a>{2o 82p/a>        struct pa href="+code=net_bridge" class="sref">net_bridgep/a> *pa href="+code=br" class="sref">brp/a> = pa href="+code=netdev_priv" class="sref">netdev_privp/a>(pa href="+code=dev" class="sref">devp/a>);2o 83p/a>2o 84p/a>        pa href="+code=br" class="sref">brp/a>->pa href="+code=stats" class="sref">statsp/a> = pa href="+code=alloc_percpu" class="sref">alloc_percpup/a>(struct pa href="+code=br_cpu_netstats" class="sref">br_cpu_netstatsp/a>);2o 85p/a>        if (!pa href="+code=br" class="sref">brp/a>->pa href="+code=stats" class="sref">statsp/a>)2o 86p/a>                return -pa href="+code=ENOMEM" class="sref">ENOMEMp/a>;2o 87p/a>2o 88p/a>        return 0;2o 89p/a>}2o 90p/a>2o 91p/a>static int pa href="+code=br_dev_open" class="sref">br_dev_openp/a>(struct pa href="+code=net_device" class="sref">net_devicep/a> *pa href="+code=dev" class="sref">devp/a>)2o 92p/a>{2o 93p/a>        struct pa href="+code=net_bridge" class="sref">net_bridgep/a> *pa href="+code=br" class="sref">brp/a> = pa href="+code=netdev_priv" class="sref">netdev_privp/a>(pa href="+code=dev" class="sref">devp/a>);2o 94p/a>2o 95p/a>        pa href="+code=netdev_update_features" class="sref">netdev_update_featuresp/a>(pa href="+code=dev" class="sref">devp/a>);2o 96p/a>        pa href="+code=netif_start_queue" class="sref">netif_start_queuep/a>(pa href="+code=dev" class="sref">devp/a>);2o 97p/a>        pa href="+code=br_stp_enable_bridge" class="sref">br_stp_enable_bridgep/a>(pa href="+code=br" class="sref">brp/a>);2o 98p/a>        pa href="+code=br_multicast_open" class="sref">br_multicast_openp/a>(pa href="+code=br" class="sref">brp/a>);2o 99p/a>2o100p/a>        return 0;2o101p/a>}2o102p/a>2o103p/a>static void pa href="+code=br_dev_set_multicast_list" class="sref">br_dev_set_multicast_listp/a>(struct pa href="+code=net_device" class="sref">net_devicep/a> *pa href="+code=dev" class="sref">devp/a>)2o104p/a>{2o105p/a>}2o106p/a>2o107p/a>static int pa href="+code=br_dev_stop" class="sref">br_dev_stopp/a>(struct pa href="+code=net_device" class="sref">net_devicep/a> *pa href="+code=dev" class="sref">devp/a>)2o108p/a>{2o109p/a>        struct pa href="+code=net_bridge" class="sref">net_bridgep/a> *pa href="+code=br" class="sref">brp/a> = pa href="+code=netdev_priv" class="sref">netdev_privp/a>(pa href="+code=dev" class="sref">devp/a>);2o110p/a>2o111p/a>        pa href="+code=br_stp_disable_bridge" class="sref">br_stp_disable_bridgep/a>(pa href="+code=br" class="sref">brp/a>);2o112p/a>        pa href="+code=br_multicast_stop" class="sref">br_multicast_stopp/a>(pa href="+code=br" class="sref">brp/a>);2o113p/a>2o114p/a>        pa href="+code=netif_stop_queue" class="sref">netif_stop_queuep/a>(pa href="+code=dev" class="sref">devp/a>);2o115p/a>2o116p/a>        return 0;2o117p/a>}2o118p/a>2o119p/a>static struct pa href="+code=rtnl_link_stats64" class="sref">rtnl_link_stats64p/a> *pa href="+code=br_get_stats64" class="sref">br_get_stats64p/a>(struct pa href="+code=net_device" class="sref">net_devicep/a> *pa href="+code=dev" class="sref">devp/a>,2o120p/a>                                                struct pa href="+code=rtnl_link_stats64" class="sref">rtnl_link_stats64p/a> *pa href="+code=stats" class="sref">statsp/a>)2o121p/a>{2o122p/a>        struct pa href="+code=net_bridge" class="sref">net_bridgep/a> *pa href="+code=br" class="sref">brp/a> = pa href="+code=netdev_priv" class="sref">netdev_privp/a>(pa href="+code=dev" class="sref">devp/a>);2o123p/a>        struct pa href="+code=br_cpu_netstats" class="sref">br_cpu_netstatsp/a> pa href="+code=tmp" class="sref">tmpp/a>, pa href="+code=sum" class="sref">sump/a> = dopL123" class="line" namo123p/a>        struct pa href="+code=br_cpu_netstats" class="sref">br_cpu_netstatsp/a> pa href="+code=tmp" class="sref">tmpp/a>, pa href="+code=sum" class="sref">sump/a> = dopL123" class="line" 3Oge/br_device.c#L118" idopL118" class="lif="+c               r_212 net/bridge/brL30">o 30class="line" namt;pa hrss="line" 3Oge/br_device.c#L118" idop117">o117=netdev_tx_t" class="sre1f">ne12ice.c#L118" idopL118" class="line" namskb12href="+code=br_stp_enable_brfor_each_possipa h=br" class="sref">for_each_possipa h=bref="+code=tmp" class=br" class="sref">t;pa hr/bridge/br_device.c#L62" idopL62" cla1 class="s1ref">brp/a> = pa href="+1code=12device.c#L68" idopL68L30">o 30class="line" nam+code=net_bridge" rL65" idopL65" class="line" namo 1pa href="1+code=dev" class="sref">1devp/12class="sref">brp/a>, nambrp/a>->pa href="+code=stats" class="sref">statsp/a>);2statsphref="netdopL65" class="line" namo 1p=net_deviidge/br_device.c#L30" id1opL3012" idopL70" class="line" namt;pa hr/idopL65" class="line" namo 1 idopL31"1 class="line" namo 3113idopL121" class="linedobridge/br_device.c#L62" idopL62" cla12" idopL312" class="line" namo 13             goto pa href="+code=out" class=ep/a>+code=net_bridge" rL65" or_cpu_netstats" cef="net/brfetch_e=brs_bh+code=net_bridgef="net/brfetch_e=brs_bh   pac#L48" idopL48" class" class="sref">statsphref="net   pa href="+code=BR_INPUT_SKB_CB" class="sref">BR_INPUT_SKB_CBp/a>(pa href="+code=sk1ref">this1_cpu_ptrp/a>(pa href="+c1ode=b1" class="sref"goto pa href="+code=out" class=memcp">o 57p/a>      memcp"   pac#L48" idopL48" clasass="sref">tmpp/a>, pa href="+code=sum" cls" class="sref">statsphref="net, sizeofa href="+code=neass="sref">tmpp/a>, pa hr)R_INPUT_SKB_CBp/a>(pa href="+code=sk1rnet/bridgee/br_device.c#L15" idopL1p/a> 3t" class="sref">mdstp/ while" class="line" namf="net/brfetch_dopry_bh+code=net_bridgef="net/brfetch_dopL123"ridgef="net/brd,rids]r_each_possipa h=bref="+code=tmp" ce" class="line" namf="net/brfetch();2brp/a>, pa href="+copu_netstats" class="sref".cp"   pac#L48" ilass="sref">lenp/a>;2t.cp"   pac#L48" ilass="sref">lenp/a>;2br_mdb_getp/a>(pa href="+code=br" pu_netstats" class="sref".cp"   pac#L48" ilapL45">o 45p/a>        pa href="+codebridge/br_device.c#idopL48" clasass="sref">t.cp"   pac#L48" ilapL45">o 45p/a>        pa href="+code"+code=tmp" ce" class="line" namf="ne 3Oge/br_ode=nf_bridge" class="sr1ef">n13ce.c#L87" idopL87" clref="+code=br" pu_netstats" class="sref".cp"   pac#L48" rlass="sref">lenp/a>;2t.cp"   pac#L48" rlass="sref">lenp/a>;2for_ class="sref">br_nf_pre_1routi1g_finish_bridge_slowp/a>(pa href="+copu_netstats" class="sref".cp"   pac#L48" rlapL45">o 45p/a>        ra href="+codebridge/br_device.c#idopL48" clasass="sref">t.cp"   pac#L48" rlapL45">o 45p/a>        ra href="+code"+code=tmp" ce" class="line" namf="nee.c#L68" d_unlockp/a>();2NET1DEV_TX_OKp/a>;2o 41p/a>#end1if2skbp/a>);2lenp/a>;2lenp/a>;2o 42p/a>2o 45p/a>        pa href="+codeb"netdopL65" classpu_netstats" class="sref".cp"   pac#L48" ilapL45">o 45p/a>        pa href="+code"+code=tmp" ce" class="line" namf="n namo 43p/a>        pa hr1ef="+14ss="sref">brp/a>);2lenp/a>;2lenp/a>;2o 45p/a>        ra href="+codeb"netdopL65" classpu_netstats" class="sref".cp"   pac#L48" rlapL45">o 45p/a>        ra href="+code"+code=tmp" ce" class="line" namf="nt;pa href1="+code=tx_packets" clas1s="sr14de=netdev_update_features" class="sref"1t;pa href1="+code=tx_bytes" class=1"sref1>tx_bytesp/a> idopL78" class="line" ltstats" cperef="net/bridge/b"+code=tmp" ce" class="line" namf="nt 3Oge/br_update_endp/a>(&pa h1ref="1code=bbr_device.c#L119" idopL119" class="l namo 48p/a>        pa hr1ef="+1ode=BR_INPUT_SKB_CB" class="sref">BR_INP1UT_SKB_CB1p/a>(pa href="+code=skb"1 clas1="srefass="sref">net_devicep/a> *pachan32" t  pa href="+code*pachan32" t p/a>,2o120p/a>                      ref">net_devicep/a> new" t  pa href="+codenew" t idge/br_device.c#L122" idopL122" class=" namo 50p/a>        pa hr1ef="+1ode=skt;pa hr/idopL65" class="line" nam(pa href="1+code15"+code=dst" class="sref">dstp/a>;2netdev_privp/a>(pa href="+code=dev" class="sref">devp/a>);2o123p/a>        struct pa href="+code=br_cpu_netstats" class="srepa href="1+code=skb" class="sref">1skbp/1>, pa href="+cref">BR_INPUT_SKB_Cnew" t  pa href="+codenew" t idgenclud 68="+code=skb" class=new" t  pa href="+codenew" t idgenc hrp/a>);2o113p/a>2o 53p/a>        if (p1a hre15BR_INPUT_SKB_CB" clasass="line" namo INVA                 INVA ge/b"+code=tmp" ce" class="line" namf="nsref">is_1broadcast_ether_addrp/a>1(pa h15f="+code=dev" class="sref">devp/a>);2br_flo1ood_deliverp/a>(pa href=1ss="sref"a f">br_flo1ood_deliverp/a>(pa href=1ss=8" na9tdopL65"4lass="line" namfsref">skbp/a>);2X5f">skbp/a>-&dge/br_device.c#L38" idopL38" class="lbripa href="+code=is_multic1ast_e15           r_212 net/bridge/brL30">o 30c        i1f (pa href="+code=unlike1ly" c15lass="fref">CONFIG_BRIDGE_NETFILTERp/a>2o 36p/a>        1         1       pa href="+code=br1_floo1_deliver" clasalled with BH disabled */rememb2o110p/a>2skbp/a>);2skge/br_device.c#L14" idopL14" class="line" na>outp/a>;12brp/a>);2mdstp/ whi3012" idopL70" class="line" namo 72p/a>RTAX_">sopL72" class="lRTAX_">s" namo 72p/a>w" t  pa href="+codenew" t idge/br="+code=is_multic1ast_e15           rmo 60p/1a>   1      br_device.c#L43" idopL43" class="line" n1ref">br_m1ulticast_rcvp/a>(pa href1="+co16ode=br_stp_disable_bridge" class="sref">">kfree_s1kbp/a>(pa href="+code=sk1b" cl1ss="sref">skbpbridge/br_device.c#L118" idopL118" class="li>outp/a>;12o 64p/1a>2devp/a>);2o 65p/a>               1 pa h16o5p/a>pspa. class="comment"r_dAllow cla" id mac s="less tospa. validlass="comms="less.kge/br_device.c#L14" idopL14" class="line" napa href="1+code=br_mdb_get" class=1"sref1>br_mds="sref">net_devicep/a> *pach" class=s="lessa href="+code*pa/i" class=s="lessa>,2o120p/a>                      ref+codemo120p/L48" clasass="srpge/br_device.c#L122" idopL122" class=" n> || pa h1ref="+code=BR_INPUT_SKB_1CB_MR1UTERS_pa hr/idopL65" class="line" nambr_multicast_deliver1p/a>(1a href="+code=ss="sref">dstp/a>;2netdev_privp/a>(pa href="+code=dev" class="sref">devp/a>);2o123p/a>        struct pa href="+code=br_cpu_netstats" class="srepapL69" cla1ss="line" namo 619p/a>16">brp/a> = pa href="+code=netdev_prsock/bridge/br_device.csock/bri href="+code=dev" cla/bridge/br_device.c/bri hrefetdopL65" class="l48" clasass="srpge/b"+code=br_cpu_netstats" class="srepapm(pa 1href=16a href="net/bridge/br_device.c#L101" iss= pa href1="+code=__br_fdb_get" cl1ass="1ref">__br_fdb_/bridge/br_device.c#is_validef="net/bridge/br_device.c#L5validef="net/brie" namo123p/bridge/br_device.c/bri hreetch_dopry_bh+code=nea_>        struct pa ea_>   ge//br_device.c#L122" idopL122" class=" nliverp/a>1(pa href="+code=dst" cla1ss="s1ef">dstp/a>->pa hres="line" namo INADDRNOTAVAI               INADDRNOTAVAI ge/b"+code=br_cpu_netstats" class="srepaass="line1" namo 73p/a>   1     17="+code=br_dev_set_multicast_list" class>br_flood1_deliverp/a>(pa href="+c1ode=b17+code=brstats" class="srefltsp" ta hrrnet/bridgee/br_desp" ta hrrnet" class="sref">mdstp/ whi3012" idopL70" class="line" namo 77p/a>     a href="="+code=br_cpu_netstats" class="srepaamo 75p/a>pa href="+code=1out" 174f">__br_fdb_/bridge/br_device.c#f="net/bri_equaf">ETH_HLENp/a>)f="net/bri_equafe" namo123p/a>        struct pa hrefdge/br_device.c#L72" ss=/bridge/br_device.c ss=/bri" namo 72p/a>/bridge/br_device.c/bri hreetch_dopry_bh+code=nea_>        struct pa ea_>   ge//br;pa hr/idopL65" class="line" nam(pa href="+code=br" pu/a>        struct pa hrefdge/br_device.c#L72"/bri_   ign_">(pa href="+code=sk1ref">this1mo123p/a>        struct pa hrefdge/br_device.c#L72" ss=/bridge/br_device.c ss=/bri" namo 72p/a>/bridge/br_device.c/bri hreetch_dopry_bh+code=nea_>        struct pa ea_>   ge//="line" namo A2p/a>2;2o113p/a>2o 72p/a>/bridge/br_device.c/bri hreetch_dopry_bh+code=nea_>        struct pa ea_>   ge//bvice.c#L53" idopL53" class="line" n1EL69" cla1">o 79p/a>2o113p/a>2o 72p/a>/bridge/br_device.c/bri hreetch_dopry_bh+code=nea_>        struct pa ea_>   ge//bvice.c#L53" idopL53" class="line" n1Emo 80p/a>static int pa h1ref="17." class="sre_device.c#L119" idopL119" class="l nitp/a>(st1ruct pa href="+code=net_1devic18" class="sref">skbp/a>);2o 82p/a>        struct1 pa h18pa href="+code=ETH_HLEN" cltsp" t pa hrrnet/bridgee/br_desp" t pa hrrnet" class="sref">mdstp/ whi3012" idopL70" class="line" namo 77p/a>     a href="="+code=br_cpu_netstats" class="srepaidgep/a> 1*pa href="+code=br" clas1s="sr18="+code=br_dev_set_multicast_list" classamo 84p/a>        pa href1="+co18+code=brstatsbridge/br_device.c#L118" idopL118" class="licode=stat1s" class="sref">statsp/a1> = p1 href=_device.c#L119" idopL119" class="l nibr_devic1=stats" class="sref">sta1tsp/a18pa href="+code=unlike1ly" c15lass="fref"NOMEMp/a>1;2,2o120p/a>                      refa href="net/bridge/br_lt;o120p/info"+code=syncp" cinfoe" nr_device.c#L122" idopL122" class=" namo 88p/a>        return 10;2net_br19" class=1"line" namo 89p/1a>}2<18="sref">brp/a>);2o113p/ainfo"+code=syncp" cinfoe" ndge/br_device.c#L72" r"sref">skbp/a>);2o 90p/a>2brp/a>);2o113p/ainfo"+code=syncp" cinfoe" ndge/br_device.c#L72"sresioce.c#L99" idopL9sresiocge//mo 72p/a>BR_VERSIO/a>2o 91p/a>static int pa h1ref="19" class="sref">skbp/a>);2o113p/ainfo"+code=syncp" cinfoe" ndge/br_device.c#L72"fw_sresioce.c#L99" idopL9fw_sresiocge//mo113p/ainfo"+code=syncp" cinfoe" ndge/br_device.c#L72"bus_info"+code=syncp" cdus_infoge//mo 93p/a>        struct1 pa h19c#L63_device.c#L119" idopL119" class="l nidgep/a> 1*pa href="+code=br" clas1s="sr19"+code=dev" class="sref">devp/a>);2o 95p/a>        pa href1="+co1e=netd href="f="net/bridge/br_devics="line"+code=sk_buff" class="srs="line"+ca hre(pa href="+code=skfix/bridge/br_device.c#L96"=skfix/bridge/ba>,2o120p/a>                      ree=dev" class="sref">devp/a>);2(pa href1="+co1e=dev" class="sref">devp/a>);2,2r_device.c#L122" idopL122" class=" nstart_que1uep/a>(pa href="+code=de1v" cl19TERS_pa hr/idopL65" class="line" nam(pa href="+c1ode=b19 href="+code=ss="sref">dstp/a>;2netdev_privp/a>(pa href="+code=dev" class="sref">devp/a>);2o123p/a>        struct pa href="+code=br_cpu_netstats" class="srepaticast_op1enp/a>(pa href="+code=br1" cla19ef="+code=rtnl_link_stats64" class="sref namo100p/a>        retu1rn 0;199"sref">brp/aopL78" class="line" lt=skf="line"+recomput="sref">netdev_p=skf="line"+recomput= namo113p/a>2o 72p/a>bridge/br_device.c#L96"bridge/ba>,2rr *pa href="+code=dest" class="sref"pL101" cl2ss="line" namo121p/a>22o102p/a>2o 93p/a>        struct2pa hr2f="+coe/br_device.c#L36" idopL36" c   _POLL_pL3TROLLmo 36p/a>          _POLL_pL3TROLLm(st2uct pa href="+code=net_device" classpL57"contrL57ref">skbp/a>);2,2o120p/19" clf">skbp/a>);2o105p/a>}2o106p/a>2o107p/a>static int 2a hre2="+code=br_dev_stop" class="sref">br_dev2stopp/a>(2truct pa href="+code=net2devic2" class="sref+code=net_device" classndopL57"cleanuce.c#L113" idopL113ndopL57"cleanuca>,2o120p/a>                      rr_device.c#L109" idopL109" class="l2n8opp/a>(2tnp/a>(pa href="+code=br2uct p2 href="+code=net_bridge" class="sref">net2bridgep/a2 *pa href="+code=br" cla2s="sr2f">brp/a> = pa href="+code=netdev_priv" class="sref">netdev_privp/a>(pa href="+code=dev" class="sref">devp/a>);2o110p/a>2o111p/a>        pa 2ref="21code=dst" class="sref">dstp/a>;2brp/a>);2o110pl48" clasass="srpge/b, ass="sref">mdstp/ whi3012" idopL70" class="line" nam *pa href="+codpLidep/a>ge//mo 72p/a>p/a> *pa href="+codp/a>ge//r_device.c#L109" idopL109" class="l2e" namo114p/a>        pa 2ref="21 class="sref">brp/a>, pa href="+code=skndopL57"" classe.c#L113" idopL113ndopL57"" classe" namo110pl48" clasass="srpge/br_device.c#L111" idopL111" class="li2ee" nam(pa href="+code=dev2 clas21href=_device.c#L119" idopL119" class="l 2e" namo116p/a>        ret2rn 0;2o127p/a>21.c#L8 href="">net_devicep/a> *pachndopL57"spL7ce.c#L113" idopL113ndopL57"spL7ca>,2o120p/a>                      refa href="net/bridge/br_ndopL57"info"+code=syncp" cndopL57"infoe" namo120p/ni"+code=syncp" cni   ree=dev" class="sref">devp/a>);2o118p/a>2o119p/a>static stru2t pa 21href="+code=net_bridge" class="sref">net2">rtnl_li2k_stats64p/a> *pa href="2code=21">brp/a> = pa href="+code=netdev_priv" class="sref">netdev_privp/a>(pa href="+code=dev" class="sref">devp/a>);2o110p/a>2dstp/a>;2o122p/a>        st2uct p22pa href="+cref>net_devicep/a> *pers="sref">devp/a>ers2br_cpu_n2tstatsp/a> pa href="+cod2=tmp"22+code=brstats" class="srefltevp/_o110pl48" clasass="srpge/b, ass="sref">mdstp/ whi3012" idopL70" class="line" nam *pa href="+codpLidep/a>ge//mo 72p/a>p/a> *pa href="+codp/a>ge//r;pa hr/idopL65" class="line" namt2pp/a>, pa href="+code=su2" cla22 class="sref">brp/a>,/bridge/br_device.c#l48" clasass="srpge/bdge/br_device.c#L72" ss                     rr_device.c#L109" idopL109" class="l2r_212 net2bridge/brL30">o 30class=2line"22br_mdb_getp/a>(pa hreeeeeeeeecontinuer_device.c#L118" idopL118" class="l2bL117" cl2vice.c#L118" idop117">o127=net22.c#L87" idopL87" clref="+code=br" puers="sref">devp/a>ers2 *pachndopL57"lass="e.c#L113" idopL113ndopL57"lass="e" namo110pl48" clasass="srpge/b, (pa href="+codegfpode=sk_buff" clgfpge//rr_device.c#L118" idopL118" class="l2be" namf">BR_INPUT_SKB_Cneers="sref">devp/a>ers2o 30class="lin2" nam2opep/a>+code=net_bridgggggggggnamo 63p/a> faif">ETH_HLENp/a>)faifge/b"+code=br_cpu_netstats" class="srep2n>rtnl_li2);2o 1 id2pL31"1 class="line" nam<2pL31"2>o 311pL63">o 63p/a>        pa href="+code=rcu_read_unlock" class="sref">rcu_read2"sref">st2tsphref="net   pa href="2code=2R_INPUT_SKB_CBopL78" class="line" lters="sref">devp/a>ers2sta2sphref="net, sizeofa hre2="+co23"+code=dev" class="sref">devp/a>);2o 63p/a> faif">ETH_HLENp/a>)faifge/b_read_unlock" class="sref">rcu_read2"_212 net2DGE_NETFILTERp/a>2devp/a>);assndopL57"cleanuce.c#L113" idopL113ndopL57"cleanuca>,2o110p/a>2n132e.c#L87" idopLnamo 63p/a>                }2for_ 2lass="sref">br_nf_pre_1r2uti1g23ge/br_device.c#L119" idopL119" class="li2.c#L68" d2unlockp/a>();2NET1D2V_TX_OKp/a>;2net_devicep/a> *pachndopL57"lass="e.c#L113" idopL113ndopL57"lass="e" nass="sref">dstp/a>;2o 41p/a>#end1i22o 42p/a>2o120p/npode=sk_buff" clnpge/b"+code=br_cpu_netstats" class="srep2amo 43p/a>        pa hr1e2="+142s="sref">brp/af>net_devicep/a> *pers="sref">devp/a>ers2devp/a>);2devp/a>);2 *pkzidge/ode=sk_buff" clkzidge/e" nas memcp="+code=dev" clal48" clasass="srpge/bdge/br_device.c#L72"tpode=sk_buff" clnpge/b), (pa href="+codegfpode=sk_buff" clgfpge//rr_device.c#L118" idopL118" class="l2pa href1=2+code=tx_bytes" class=1"2ref1>24=dev" class="sref">devp/a>);ers="sref">devp/a>ers2o 87p/a>2(&pa h1r2f="1c24.c#L87" idopL/bridge/br_device.c#tpode=sk_buff" clnpge/b)ice.c#L88" idopL88" class="line" n23f">for_ 2>o 48p/a>        pa hr1e2="+1o24ass=br" class="sref">namo 63p/a>                }2(pa href="+code=skb"1 2las1=24ef="+code=rtnl_link_stats64" class="sre2amo 50p/a>        pa hr1e2="+1o249"sref">brp/a>);2devp/a>ers2 *p_hndopL57"spL7ce.c#L113" idopL_3ndopL57"spL7ca>,2__br_fdb_/briR_INPUT_SKB_Cneers="sref">devp/a>ers21s2bp/1>25f">dstp/a>->pa href="+code=dst" ckfre"e.c#L113" idopLkfre"a>,2o 63p/a>                }2is_1b2oadcast_ether_addrp/a>1(2a h1525+code=brstats_device.c#L119" idopL119" class="li2>br_flo1o2d_deliverp/a>(pa href=1s2="sre25=netdev_update_features" class="sref"1t2r_212 net2bridge/brL30">o 30c     2  i1f25=dev" class="sref">devp/a>);l48" clasass="srpge/bdge/br_device.c#L72"tpode=sk_buff" clnpge/bhref="net/bridge/brpode=sk_buff" clnpge/b"+code=br_cpu_netstats" class="srep2>CONFIG_B2IDGE_NETFILTERp/a>2br_dev2asalled w2th BH disabled */rememb22a hre2TU.0">pL63">o 63p/a>        pa href="+code=rcu_read_unlock" class="sref">rcu_read2>outp/a>;22devp/a>ers2o 60p/2a>   25br_device.c#L91" idopL91" class="line" n2ref">br_m2ulticast_rcvp/a>(pa href2="+co26ode=br_stp_disable_bridge" class="sref"2">kfree_s2kbp/a>(pa href="+code=sk2b" cl2ss="sr+code=net_device" classndopL57"" classe.c#L113" idopL113ndopL57"" classe" nass="sref">dstp/a>;2outp/a>;22net_br24" class=2"line" namo 64p/2a>2brp/a> = pa href="+code=netdev_priv"pL57"+code=syncp" cndopL57e" namo120p/npode=sk_buff" clnpge/bfetdopL65" class="l48" clasass="srpge/bdge/br_device.c#L72"tpode=sk_buff" clnpge/b"+code=br_cpu_netstats" class="srep2amo 65p/a>               2 pa h26=netdev_update_features" class="sref"1t2pa href="2+code=br_mdb_get" class=2"sref262 || pa h2ref="+code=BR_INPUT_SKB_2CB_MR26.c#L87" idopL87" class="lin"+code=br_cpu_netstats" class="srep2asalled w2ef">br_multicast_deliver2p/a>(26=BR_INPUT_SKB_CB" class="sref">BR_INP1U2pL69" cla2ss="line" namo 629p/a>26="sref">brp/a>);2__br_fdb_t_devicep/a> *p_hndopL57"fre"_rcue.c#L113" idopL_3ndopL57"fre"_rcua>,2o 73p/a>   2     27="+code=br_dev_set_multicast_list" clas2>br_flood2_deliverp/a>(pa href="+c2ode=b27+codebr_device.c#L43" idopL43" class="line" n2amo 75p/a>pa href="+code=2out" 27=netdev_update_features" class="sref"1t2/br_devic2e.c#L76" idopL76" class=2"line27br_mds="sref">net_devicep/a> *pachadd_slavse.c#L113" idopL113add_slavse" nass="sref">dstp/a>;2o120p/a>                      refa href="net/bridge/br_ndofce.c#L120" idopL120" class="line" namo120p/slavs_a>                slavs_a> ge/b)ice.c#L88" idopL88" class="line" n2a || pa h2a>();2br_dev2EV_TX_OKp2/a>;2net_br2EL69" cla2">o 79p/a>2brp/a> = pa href="+code=netdev_priv" class="sref">netdev_privp/a>(pa href="+code=dev" class="sref">devp/a>);2o110p/a>2(st2ruct pa href="+code=net_2devic28" class="srefopL78" class="line" lt=skadd_ife.c#L113" idopL113add_ife" namo110p>2o 72p/a>slavs_a>                slavs_a> ge/b)_device.c#L111" idopL111" class="li2namo 82p/a>        struct2 pa h28ge/br_device.c#L103" idopL103" class="li2idgep/a> 2*pa href="+code=br" clas2s="sr28="+code=br_dev_set_multicast_list" clas2amo 84p/a>        pa href2="+co283r_mds="sref">net_devicep/a> *pachdel_slavse.c#L113" idopL113del_slavse" nass="sref">dstp/a>;2o120p/a>                      refa href="net/bridge/br_ndofce.c#L120" idopL120" class="line" namo120p/slavs_a>                slavs_a> ge/b)ice.c#L88" idopL88" class="line"as2amstatsp/a2> = p28dge/br_device.c#L106" idopL106" class="l2ibr_devic2=stats" class="sref">sta2tsp/a285>brp/a> = pa href="+code=netdev_priv" class="sref">netdev_privp/a>(pa href="+code=dev" class="sref">devp/a>);2o110p/a>2br_dev2amo 88p/a>        return 20;2o110p>2o 72p/a>slavs_a>                slavs_a> ge/b)_device.c#L111" idopL111" class="li2nL69" cla2"line" namo 89p/2a>}2<28="sre_device.c#L103" idopL103" class="li2imo 90p/a>2o 91p/a>static int pa h2ref="29" clas="srefe" rL65" idopL65" class="linlt;,2ee=dev" class="sref">devp/a>);2 2">o 93p/a>        struct2 pa h292a href="+codp"   pac#L48" rlsref   7">o 77p/a>     sref   7a href="+coret_devicep/a> *plt;o 77p/a>     lt;,2ee=dev" class="sref">devp/a>);2 pa href="+code=tmp" clas2amo 95p/a>        pa href2="+co29=netdev_update_features" class="sref"1t2abr_devic2ate_featuresp/a>(pa href2="+co295 clas="srefe" rL65" idopL65" class="linclass="lin_opbr_device.c#L96"class="lin_opba hre(pa href="+codece. class=opbr_device.c#L96"ce. class=opb2 *pachass=opece.c#L99" idopL9achass=opeca>,2ee=dev" class="sref">devp/a>);2(pa href="+c2ode=b29 href="+code=p"   pac#L48" rlndo=clase.c#L99" idopL9ndo=clasc#L87" idopL87" clasret_devicep/a> *pachass=clase.c#L99" idopL9achass=clasa>,2ee=dev" class="sref">devp/a>);2(pa href="+code=br2" cla298href="+code=p"   pac#L48" rlndo=inids]r_each_possiphdo=inidc#L87" idopL87" clasret_devicep/a> *pachass=inids]r_each_possipachass=inida>,2ee=dev" class="sref">devp/a>);2o100p/a>        retu2rn 0;299"sref">brp/ap"   pac#L48" rlndo=clart_xmids]r_each_possiphdo=clart_xmidc#L87" idopL87ret_devicep/a> *pachass=xmids]r_each_possipachass=xmida>,2ee=dev" class="sref">devp/a>);2o131p/a>300"sref">brp/ap"   pac#L48" rlndo= *pa href="+code=dev" clasndo= *pa href="c#L87" idopL8ret_devicep/a> *pachgeta href="+code=dev" clasachgeta href="a>,2ee=dev" class="sref">devp/a>);2,2ee=dev" class="sref">devp/a>);2o 93p/a>        struct3pa hr302a href="+codp"   pac#L48" rlhdo=c clrx_m" ra href="+code*phdo=c clrx_m" rc#L87" idopL8ret_devicep/a> *pachass=c claulsreasdep/a> *pa href="+codachass=c claulsreasdep/a>a>,2ee=dev" class="sref">devp/a>);2(st303a href="+codp"   pac#L48" rlhdo=an32" t  pa href="+code*phdo=an32" t  pc#L87" idopL87ret_devicep/a> *pachan32" t  pa href="+code*pachan32" t p/a>,2ee=dev" class="sref">devp/a>);2        pa href3net/b304a href="+codp"   pac#L48" rlhdo=do=ioct7"+code=syncp" cndo=do=ioct7c#L87" idopL87" ret_devicep/a> *pachass=ioct7"+code=syncp" cachass=ioct7a>,2ee=dev" class="sref">devp/a>);2(pa href3et/br3dge/bre/br_device.c#L36" idopL36" c   _POLL_pL3TROLLmo 36p/a>          _POLL_pL3TROLLmo107p/a>static int 3a hre306a href="+codp"   pac#L48" rlndo=ndopL57"spL7ce.c#L113" idopLndo=ndopL57"spL7ca href="+coret_devicep/a> *pbchndopL57"spL7ce.c#L113" idopL113ndopL57"spL7ca>,2ee=dev" class="sref">devp/a>);2(pa href="+c3devic30 href="+code=p"   pac#L48" rlndo=ndopL57"cleanuce.c#L113" idopLndo=ndopL57"cleanuca href="+ret_devicep/a> *pachndopL57"cleanuce.c#L113" idopL113ndopL57"cleanuca>,2ee=dev" class="sref">devp/a>);2(pa href="+code=br3uct p308href="+code=p"   pac#L48" rlndo=pL57"contrL57ref">skbp/a>);2skbp/a>);2,2ee=dev" class="sref">devp/a>);2o100p/a>        retu3s="sr30     br_device.c#L43" idopL43" class="line" n3e" namo111p/a>        pa 3ref="310"sref">brp/ap"   pac#L48" rlndo=add_slavse.c#L113" idopLndo=add_slavsc#L87" idopL87"ret_devicep/a> *pachadd_slavse.c#L113" idopL113add_slavse" nee=dev" class="sref">devp/a>);2(pa href=3+code31pa href="+codp"   pac#L48" rlhdo=del_slavse.c#L113" idopLhdo=del_slavsc#L87" idopL87"ret_devicep/a> *pachdel_slavse.c#L113" idopL113del_slavse" nee=dev" class="sref">devp/a>);2(pa href="+code=b3" cla312a href="+codp"   pac#L48" rlhdo=fix/bridge/br_device.c#L96"hdo=fix/bridge/ba href="+codret_devicep/a> *pachfix/bridge/br_device.c#L96"=skfix/bridge/ba>,2ee=dev" class="sref">devp/a>);2o114p/a>        pa 3ref="313a href="+codp"   pac#L48" rlhdo=f="+addr_device.c#L96"hdo=f="+addc#L87" idopL87" cret_devicep/a> *pachf="+addr_device.c#L96"achf="+adda>,2ee=dev" class="sref">devp/a>);2(pa href="+code=dev3 clas314a href="+codp"   pac#L48" rlhdo=f="+delr_device.c#L96"hdo=f="+delc#L87" idopL87" cret_devicep/a> *pachf="+delet="sref">netdev_p=skf="+delet=a>,2ee=dev" class="sref">devp/a>);2o116p/a>        ret3rn 0;315a href="+codp"   pac#L48" rlhdo=f="+dupL48" clasass="srhdo=f="+dupLc#L87" idopL87" ret_devicep/a> *pachf="+dupL48" clasass="srachf="+dupLa>,2ee=dev" class="sref">devp/a>);2o137p/a>31.c#L8etstatsp/a> pa href="+code=tmp" clas3ne" namo118p/a>2BR_INP1U3e8opp/a>(3119">o119p/a>static stru3t pa 31refass="sref+code=net_device" classass=fre"e.c#L113" idopLassass=fre"e" nass="sref">dstp/a>;2o120p/a>                      r)ice.c#L88" idopL88" class="line"as3">rtnl_li3k_stats64p/a> *pa href="3code=31=skt;pa hr/idopL65" class="line" namdstp/a>;2netdev_privp/a>(pa href="+code=dev" class="sref">devp/a>);2o110p/a>2o122p/a>        st3uct p32ge/brdevice.c#L119" idopL119" class="l 3bridgep/a3 *pa href="+code=br" cla3s="sr32="sref">brp/a>);2o110p>2 pa href="+cod3=tmp"32+code=brstats" class="srefltfre"_ classa href="+code*pfre"_ classe" namo110p/a>2, pa href="+code=su3" cla32href=_device.c#L119" idopL119" class="l 3r_212 net3bridge/brL30">o 30class=3line"32a href="net/bridge/br_device.c#L117" id3bL117" cl3vice.c#L118" idop117">o137=net32.c#L8 href="ss="sref">dstp/a>;2devp/a>);2(3opL68L30">o 30class="lin3" nam3opep/aetstatsp/a> pa href="+code=tmp" clas3n>rtnl_li3);2dstp/a>;2o120p/a>                      r)ice.c#L88" idopL88" class="line"as35">o 1 id3pL31"1 class="line" nam<3pL31"3>o 311r_device.c#L106" idopL106" class="l3"sref">st3tsphref="net   pa href="3code=3R_INPUT_SKB_CBss="sref">dstp/a>;2netdev_privp/a>(pa href="+code=dev" class="sref">devp/a>);2o110p/a>2sta3sphref="net, sizeofa hre3="+co33"+code=dev" class="sref">devp/a>);2devp/a>);2o 77p/a>     lt;_hwt/bri_rahdome" namo110p/a>2devp/a>);f="netspL7ce.c#L113" idopLf="netspL7ce" namo110p/a>2n1333"+code=br_dev_stop" class="sref">br_dev3ef">for_ 3lass="sref">br_nf_pre_1r3uti1g337dev" class="sref">devp/a>);/a>2mdstp/ whi3. class=opbr_device.c#L96"ce. class=opb2brp/a>);2brp/a>);2o110p/a>2mdstp/ whi3.lt;o 41p/a>#end1i32__br_fdb_t_devicep/a> *pS  _NETDEV_DEVTYPEe.c#L113" idopLS  _NETDEV_DEVTYPEe" namo110p/a>2mdstp/ whi3.">o 1 id3opL42">o 42p/a>2        struct pa hrefdge/br_device.c#L72"tx_queue_lece.c#L99" idopL9tx_queue_lec2brp/a>);2devp/a>);2devp/a>);2,2href="net/bridge/bNETIF_F_SGr_device.c#L96"NETIF_F_SGa>,2h|ef="net/bridge/bNETIF_F_FRAGLISTr_device.c#L96"NETIF_F_FRAGLISTa>,2h|ef="net/bridge/bNETIF_F_HIGHDMAr_device.c#L96"NETIF_F_HIGHDMAa>,2h|e=dev" class="sref">devp/a>);234=dev" class="""""""""""""""""f="net/bridge/bNETIF_F_GSO_MASKr_device.c#L96"NETIF_F_GSO_MASKa>,2h|ef="net/bridge/bNETIF_F_HW_CSU2devp/a>);2(&pa h1r3f="1c34.c#L87" idopL""""""""""""""""f="net/bridge/bNETIF_F_NETNS_LOCA               INETIF_F_NETNS_LOCA a>,2h|ef="net/bridge/bNETIF_F_HW_VLAN_TXfor_ 3>o 48p/a>        pa hr1e3="+1o347dev" class="sref">devp/a>);/a>2,2href="net/bridge/bNETIF_F_SGr_device.c#L96"NETIF_F_SGa>,2h|ef="net/bridge/bNETIF_F_FRAGLISTr_device.c#L96"NETIF_F_FRAGLISTa>,2h|ef="net/bridge/bNETIF_F_HIGHDMAr_device.c#L96"NETIF_F_HIGHDMAa>,2h|e=dev" class="sref">devp/a>);2(3a>(pa href="+code=skb"1 3las1=34pep/a>+code=net_bridggggggggg"""f="net/bridge/bNETIF_F_GSO_MASKr_device.c#L96"NETIF_F_GSO_MASKa>,2h|ef="net/bridge/bNETIF_F_HW_CSU2devp/a>);2rtnl_li3>o 50p/a>        pa hr1e3="+1o349"sref">brp/aet_bridggggggggg"""f="net/bridge/bNETIF_F_HW_VLAN_TX1s3bp/1>35pa href="+code=ETH_HLEN" clt>2brp/a>);2mdstp/ whi3012" idopL70" class="line" namo 77p/a>     a href="="+code=br_cpu_netstats" class="srep3ef">is_1b3oadcast_ether_addrp/a>1(3a h1535+code=brstats" class="srefltINIT_LIST_HEADe.c#L113" idopLINIT_LIST_HEADe" naass="sref">mdstp/ whi3012" idopL70" class="line" nam *pa href="+codpLidep/a>ge//="+code=br_cpu_netstats" class="srep3ea href1=3d_deliverp/a>(pa href=1s3="sre35"sref">devp/a>);2mdstp/ whi3012" idopL70" class="line" namo 77p/a>     hash_pL77ge//="+code=br_cpu_netstats" class="srep3e_212 net3bridge/brL30">o 30c     3  i1f35a href="net/bridge/br_device.c#L117" id3>CONFIG_B3IDGE_NETFILTERp/a>22devp/a>);>2o 60p/3a>   359"sref">brp/a>);2o110p>2mdstp/ whi3.group_/briessa href="+code*pa/igroup_/briessge/b, sref">mdstp/ whETH_ALE/a>2br_m3ulticast_rcvp/a>(pa href3="+co36ode=br_stp_disable_bridge" class="sref"3">kfree_s3kbp/a>(pa href="+code=sk3b" cl36pa href="+code=ETH_HLEN" clt>2brp/a>);2o 77p/a>     sroup_fwd_mas7ge/bhref="net/bridge/bBR_GROUPFWD_DEFAULTr_device.c#L96"BR_GROUPFWD_DEFAULTge/b_device.c#L111" idopL111" class="li3>f">is_1b3"line" namo 64p/3a>2devp/a>);2o 65p/a>               3 pa h36"sref">devp/a>);2devp/a>);asnetdev_p="nes=rmax_as=2netdev_pmax_as=2netdev_pHZge//_device.c#L111" idopL111" class="li3>CONFIG_B3ref="+code=BR_INPUT_SKB_3CB_MR366a href="+code=ETH_HLEN" clt>2netdev_pHZge//_device.c#L111" idopL111" class="li3>salled w3ef">br_multicast_deliver3p/a>(367dev" class="sref">devp/a>);>2netdev_pHZge//_device.c#L111" idopL111" class="li3>8opp/a>(3ss="line" namo 639p/a>36="sref">brp/a>);2netdev_pHZge//_device.c#L111" idopL111" class="li3>m(pa 3href=36a href="net/bridge/br_device.c#L101" is3= pa href3="+code=__br_fdb_get" cl3ass="3ref">__br_fdb_t_devicep/a> *pce. clfilter_rtss="=inids]r_each_possipach clfilter_rtss="=inide" namo110p>22_L112ti+cr=inids]r_each_possipachL112ti+cr=inide" namo110p>2o 73p/a>   3     37="sref">brp/a>);2o110p>2is_1b3_deliverp/a>(pa href="+c3ode=b37+code_device.c#L119" idopL119" class="l 3amo 75p/a>pa href="+code=3out" 37=netd


pafooder"> The original LXR software by the evice.c#Lhttp://sourceforge.119"projects/lxr">LXR communidyge/b, this experi+cntal version by evice.c#Lmailto:lxr@ hrux.no">lxr@ hrux.noge//p
pasubfooder"> lxr. hrux.no kindly hosted by evice.c#Lhttp://www.redpill- hrpro.no">Redpill Lhrpro ASge/b, provider of Lhruxfe" rulsrng and operations serlasss since;1995.