31 Jan, 2019

1 commit

  • [ Upstream commit 28c1382fa28f2e2d9d0d6f25ae879b5af2ecbd03 ]

    The skb header should be set to ethernet header before using
    is_skb_forwardable. Because the ethernet header length has been
    considered in is_skb_forwardable(including dev->hard_header_len
    length).

    To reproduce the issue:
    1, add 2 ports on linux bridge br using following commands:
    $ brctl addbr br
    $ brctl addif br eth0
    $ brctl addif br eth1
    2, the MTU of eth0 and eth1 is 1500
    3, send a packet(Data 1480, UDP 8, IP 20, Ethernet 14, VLAN 4)
    from eth0 to eth1

    So the expect result is packet larger than 1500 cannot pass through
    eth0 and eth1. But currently, the packet passes through success, it
    means eth1's MTU limit doesn't take effect.

    Fixes: f6367b4660dd ("bridge: use is_skb_forwardable in forward path")
    Cc: bridge@lists.linux-foundation.org
    Cc: Nkolay Aleksandrov
    Cc: Roopa Prabhu
    Cc: Stephen Hemminger
    Signed-off-by: Yunjian Wang
    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

    Yunjian Wang
     

28 Apr, 2017

1 commit

  • Support for l2 multicast flood control was added in commit b6cb5ac8331b
    ("net: bridge: add per-port multicast flood flag"). It allows broadcast
    as it was introduced specifically for unknown multicast flood control.
    But as broadcast is a special case of multicast, this may also need to
    be disabled. For this purpose, introduce a flag to disable the flooding
    of received l2 broadcasts. This approach is backwards compatible and
    provides flexibility in filtering for the desired packet types.

    Cc: Nikolay Aleksandrov
    Signed-off-by: Mike Manning
    Reviewed-by: Nikolay Aleksandrov
    Signed-off-by: David S. Miller

    Mike Manning
     

02 Mar, 2017

1 commit

  • Even with multicast flooding turned off, IPv6 ND should still work so
    that IPv6 connectivity is provided. Allow this by continuing to flood
    multicast traffic originated by us.

    Fixes: b6cb5ac8331b ("net: bridge: add per-port multicast flood flag")
    Cc: Nikolay Aleksandrov
    Signed-off-by: Mike Manning
    Acked-by: Nikolay Aleksandrov
    Signed-off-by: David S. Miller

    Mike Manning
     

04 Feb, 2017

1 commit


26 Jan, 2017

1 commit

  • The only caller of this new function is inside of an #ifdef checking
    for CONFIG_BRIDGE_IGMP_SNOOPING, so we should move the implementation
    there too, in order to avoid this harmless warning:

    net/bridge/br_forward.c:177:13: error: 'maybe_deliver_addr' defined but not used [-Werror=unused-function]

    Fixes: 6db6f0eae605 ("bridge: multicast to unicast")
    Signed-off-by: Arnd Bergmann
    Acked-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Arnd Bergmann
     

25 Jan, 2017

1 commit

  • Implements an optional, per bridge port flag and feature to deliver
    multicast packets to any host on the according port via unicast
    individually. This is done by copying the packet per host and
    changing the multicast destination MAC to a unicast one accordingly.

    multicast-to-unicast works on top of the multicast snooping feature of
    the bridge. Which means unicast copies are only delivered to hosts which
    are interested in it and signalized this via IGMP/MLD reports
    previously.

    This feature is intended for interface types which have a more reliable
    and/or efficient way to deliver unicast packets than broadcast ones
    (e.g. wifi).

    However, it should only be enabled on interfaces where no IGMPv2/MLDv1
    report suppression takes place. This feature is disabled by default.

    The initial patch and idea is from Felix Fietkau.

    Signed-off-by: Felix Fietkau
    [linus.luessing@c0d3.blue: various bug + style fixes, commit message]
    Signed-off-by: Linus Lüssing
    Reviewed-by: Nikolay Aleksandrov
    Signed-off-by: David S. Miller

    Felix Fietkau
     

02 Sep, 2016

2 commits


27 Aug, 2016

1 commit

  • switchdev_port_fwd_mark_set() is used to set the 'offload_fwd_mark' of
    port netdevs so that packets being flooded by the device won't be
    flooded twice.

    It works by assigning a unique identifier (the ifindex of the first
    bridge port) to bridge ports sharing the same parent ID. This prevents
    packets from being flooded twice by the same switch, but will flood
    packets through bridge ports belonging to a different switch.

    This method is problematic when stacked devices are taken into account,
    such as VLANs. In such cases, a physical port netdev can have upper
    devices being members in two different bridges, thus requiring two
    different 'offload_fwd_mark's to be configured on the port netdev, which
    is impossible.

    The main problem is that packet and netdev marking is performed at the
    physical netdev level, whereas flooding occurs between bridge ports,
    which are not necessarily port netdevs.

    Instead, packet and netdev marking should really be done in the bridge
    driver with the switch driver only telling it which packets it already
    forwarded. The bridge driver will mark such packets using the mark
    assigned to the ingress bridge port and will prevent the packet from
    being forwarded through any bridge port sharing the same mark (i.e.
    having the same parent ID).

    Remove the current switchdev 'offload_fwd_mark' implementation and
    instead implement the proposed method. In addition, make rocker - the
    sole user of the mark - use the proposed method.

    Signed-off-by: Ido Schimmel
    Signed-off-by: Jiri Pirko
    Signed-off-by: David S. Miller

    Ido Schimmel
     

17 Jul, 2016

2 commits

  • Before this patch we had two flavors of most forwarding functions -
    _forward and _deliver, the difference being that the latter are used
    when the packets are locally originated. Instead of all this function
    pointer passing and code duplication, we can just pass a boolean noting
    that the packet was locally originated and use that to perform the
    necessary checks in __br_forward. This gives a minor performance
    improvement but more importantly consolidates the forwarding paths.
    Also add a kernel doc comment to explain the exported br_forward()'s
    arguments.

    Signed-off-by: Nikolay Aleksandrov
    Signed-off-by: David S. Miller

    Nikolay Aleksandrov
     
  • Currently if the packet is going to be received locally we set skb0 or
    sometimes called skb2 variables to the original skb. This can get
    confusing and also we can avoid one conditional on the fast path by
    simply using a boolean and passing it around. Thanks to Roopa for the
    name suggestion.

    Signed-off-by: Nikolay Aleksandrov
    Signed-off-by: David S. Miller

    Nikolay Aleksandrov
     

10 Jul, 2016

1 commit

  • As was suggested this patch adds support for the different versions of MLD
    and IGMP query types. Since the user visible structure is still in net-next
    we can augment it instead of adding netlink attributes.
    The distinction between the different IGMP/MLD query types is done as
    suggested in Section 7.1, RFC 3376 [1] and Section 8.1, RFC 3810 [2] based
    on query payload size and code for IGMP. Since all IGMP packets go through
    multicast_rcv() and it uses ip_mc_check_igmp/ipv6_mc_check_mld we can be
    sure that at least the ip/ipv6 header can be directly used.

    [1] https://tools.ietf.org/html/rfc3376#section-7
    [2] https://tools.ietf.org/html/rfc3810#section-8.1

    Suggested-by: Linus Lüssing
    Signed-off-by: Nikolay Aleksandrov
    Acked-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Nikolay Aleksandrov
     

30 Jun, 2016

1 commit

  • This patch adds stats support for the currently used IGMP/MLD types by the
    bridge. The stats are per-port (plus one stat per-bridge) and per-direction
    (RX/TX). The stats are exported via netlink via the new linkxstats API
    (RTM_GETSTATS). In order to minimize the performance impact, a new option
    is used to enable/disable the stats - multicast_stats_enabled, similar to
    the recent vlan stats. Also in order to avoid multiple IGMP/MLD type
    lookups and checks, we make use of the current "igmp" member of the bridge
    private skb->cb region to record the type on Rx (both host-generated and
    external packets pass by multicast_rcv()). We can do that since the igmp
    member was used as a boolean and all the valid IGMP/MLD types are positive
    values. The normal bridge fast-path is not affected at all, the only
    affected paths are the flooding ones and since we make use of the IGMP/MLD
    type, we can quickly determine if the packet should be counted using
    cache-hot data (cb's igmp member). We add counters for:
    * IGMP Queries
    * IGMP Leaves
    * IGMP v1/v2/v3 reports

    * MLD Queries
    * MLD Leaves
    * MLD v1/v2 reports

    These are invaluable when monitoring or debugging complex multicast setups
    with bridges.

    Signed-off-by: Nikolay Aleksandrov
    Signed-off-by: David S. Miller

    Nikolay Aleksandrov
     

02 Mar, 2016

1 commit

  • After commit 52bd2d62ce67 ("net: better skb->sender_cpu and skb->napi_id cohabitation")
    skb_sender_cpu_clear() becomes empty and can be removed.

    Cc: Eric Dumazet
    Signed-off-by: Cong Wang
    Signed-off-by: David S. Miller

    WANG Cong
     

30 Oct, 2015

1 commit

  • Problem Description:
    We can add fdbs pointing to the bridge with NULL ->dst but that has a
    few race conditions because br_fdb_insert() is used which first creates
    the fdb and then, after the fdb has been published/linked, sets
    "is_local" to 1 and in that time frame if a packet arrives for that fdb
    it may see it as non-local and either do a NULL ptr dereference in
    br_forward() or attach the fdb to the port where it arrived, and later
    br_fdb_insert() will make it local thus getting a wrong fdb entry.
    Call chain br_handle_frame_finish() -> br_forward():
    But in br_handle_frame_finish() in order to call br_forward() the dst
    should not be local i.e. skb != NULL, whenever the dst is
    found to be local skb is set to NULL so we can't forward it,
    and here comes the problem since it's running only
    with RCU when forwarding packets it can see the entry before "is_local"
    is set to 1 and actually try to dereference NULL.
    The main issue is that if someone sends a packet to the switch while
    it's adding the entry which points to the bridge device, it may
    dereference NULL ptr. This is needed now after we can add fdbs
    pointing to the bridge. This poses a problem for
    br_fdb_update() as well, while someone's adding a bridge fdb, but
    before it has is_local == 1, it might get moved to a port if it comes
    as a source mac and then it may get its "is_local" set to 1

    This patch changes fdb_create to take is_local and is_static as
    arguments to set these values in the fdb entry before it is added to the
    hash. Also adds null check for port in br_forward.

    Fixes: 3741873b4f73 ("bridge: allow adding of fdb entries pointing to the bridge device")
    Reported-by: Nikolay Aleksandrov
    Signed-off-by: Roopa Prabhu
    Reviewed-by: Nikolay Aleksandrov
    Acked-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Roopa Prabhu
     

13 Oct, 2015

1 commit

  • The bridge and port's vlgrp member is already used in RCU way, currently
    we rely on the fact that it cannot disappear while the port exists but
    that is error-prone and we might miss places with improper locking
    (either RCU or RTNL must be held to walk the vlan_list). So make it
    official and use RCU for vlgrp to catch offenders. Introduce proper vlgrp
    accessors and use them consistently throughout the code.

    Signed-off-by: Nikolay Aleksandrov
    Reviewed-by: Ido Schimmel
    Signed-off-by: David S. Miller

    Nikolay Aleksandrov
     

30 Sep, 2015

1 commit

  • This patch changes the bridge vlan implementation to use rhashtables
    instead of bitmaps. The main motivation behind this change is that we
    need extensible per-vlan structures (both per-port and global) so more
    advanced features can be introduced and the vlan support can be
    extended. I've tried to break this up but the moment net_port_vlans is
    changed and the whole API goes away, thus this is a larger patch.
    A few short goals of this patch are:
    - Extensible per-vlan structs stored in rhashtables and a sorted list
    - Keep user-visible behaviour (compressed vlans etc)
    - Keep fastpath ingress/egress logic the same (optimizations to come
    later)

    Here's a brief list of some of the new features we'd like to introduce:
    - per-vlan counters
    - vlan ingress/egress mapping
    - per-vlan igmp configuration
    - vlan priorities
    - avoid fdb entries replication (e.g. local fdb scaling issues)

    The structure is kept single for both global and per-port entries so to
    avoid code duplication where possible and also because we'll soon introduce
    "port0 / aka bridge as port" which should simplify things further
    (thanks to Vlad for the suggestion!).

    Now we have per-vlan global rhashtable (bridge-wide) and per-vlan port
    rhashtable, if an entry is added to a port it'll get a pointer to its
    global context so it can be quickly accessed later. There's also a
    sorted vlan list which is used for stable walks and some user-visible
    behaviour such as the vlan ranges, also for error paths.
    VLANs are stored in a "vlan group" which currently contains the
    rhashtable, sorted vlan list and the number of "real" vlan entries.
    A good side-effect of this change is that it resembles how hw keeps
    per-vlan data.
    One important note after this change is that if a VLAN is being looked up
    in the bridge's rhashtable for filtering purposes (or to check if it's an
    existing usable entry, not just a global context) then the new helper
    br_vlan_should_use() needs to be used if the vlan is found. In case the
    lookup is done only with a port's vlan group, then this check can be
    skipped.

    Things tested so far:
    - basic vlan ingress/egress
    - pvids
    - untagged vlans
    - undef CONFIG_BRIDGE_VLAN_FILTERING
    - adding/deleting vlans in different scenarios (with/without global ctx,
    while transmitting traffic, in ranges etc)
    - loading/removing the module while having/adding/deleting vlans
    - extracting bridge vlan information (user ABI), compressed requests
    - adding/deleting fdbs on vlans
    - bridge mac change, promisc mode
    - default pvid change
    - kmemleak ON during the whole time

    Signed-off-by: Nikolay Aleksandrov
    Signed-off-by: David S. Miller

    Nikolay Aleksandrov
     

18 Sep, 2015

2 commits

  • This is immediately motivated by the bridge code that chains functions that
    call into netfilter. Without passing net into the okfns the bridge code would
    need to guess about the best expression for the network namespace to process
    packets in.

    As net is frequently one of the first things computed in continuation functions
    after netfilter has done it's job passing in the desired network namespace is in
    many cases a code simplification.

    To support this change the function dst_output_okfn is introduced to
    simplify passing dst_output as an okfn. For the moment dst_output_okfn
    just silently drops the struct net.

    Signed-off-by: "Eric W. Biederman"
    Signed-off-by: David S. Miller

    Eric W. Biederman
     
  • Pass a network namespace parameter into the netfilter hooks. At the
    call site of the netfilter hooks the path a packet is taking through
    the network stack is well known which allows the network namespace to
    be easily and reliabily.

    This allows the replacement of magic code like
    "dev_net(state->in?:state->out)" that appears at the start of most
    netfilter hooks with "state->net".

    In almost all cases the network namespace passed in is derived
    from the first network device passed in, guaranteeing those
    paths will not see any changes in practice.

    The exceptions are:
    xfrm/xfrm_output.c:xfrm_output_resume() xs_net(skb_dst(skb)->xfrm)
    ipvs/ip_vs_xmit.c:ip_vs_nat_send_or_cont() ip_vs_conn_net(cp)
    ipvs/ip_vs_xmit.c:ip_vs_send_or_cont() ip_vs_conn_net(cp)
    ipv4/raw.c:raw_send_hdrinc() sock_net(sk)
    ipv6/ip6_output.c:ip6_xmit() sock_net(sk)
    ipv6/ndisc.c:ndisc_send_skb() dev_net(skb->dev) not dev_net(dst->dev)
    ipv6/raw.c:raw6_send_hdrinc() sock_net(sk)
    br_netfilter_hooks.c:br_nf_pre_routing_finish() dev_net(skb->dev) before skb->dev is set to nf_bridge->physindev

    In all cases these exceptions seem to be a better expression for the
    network namespace the packet is being processed in then the historic
    "dev_net(in?in:out)". I am documenting them in case something odd
    pops up and someone starts trying to track down what happened.

    Signed-off-by: "Eric W. Biederman"
    Signed-off-by: David S. Miller

    Eric W. Biederman
     

30 Jul, 2015

1 commit

  • There are several devices that can receive vlan tagged packets with
    CHECKSUM_PARTIAL like tap, possibly veth and xennet.
    When (multiple) vlan tagged packets with CHECKSUM_PARTIAL are forwarded
    by bridge to a device with the IP_CSUM feature, they end up with checksum
    error because before entering bridge, the network header is set to
    ETH_HLEN (not including vlan header length) in __netif_receive_skb_core(),
    get_rps_cpu(), or drivers' rx functions, and nobody fixes the pointer later.

    Since the network header is exepected to be ETH_HLEN in flow-dissection
    and hash-calculation in RPS in rx path, and since the header pointer fix
    is needed only in tx path, set the appropriate network header on forwarding
    packets.

    Signed-off-by: Toshiaki Makita
    Signed-off-by: David S. Miller

    Toshiaki Makita
     

10 Jul, 2015

1 commit

  • Commit c29390c6dfee ("xps: must clear sender_cpu before forwarding")
    fixed an issue in normal forward path, caused by sender_cpu & napi_id
    skb fields being an union.

    Bridge is another point where skb can be forwarded, so we need
    the same cure.

    Bug triggers if packet was received on a NIC using skb_mark_napi_id()

    Fixes: 2bd82484bb4c ("xps: fix xps for stacked devices")
    Signed-off-by: Eric Dumazet
    Reported-by: Bob Liu
    Tested-by: Bob Liu
    Signed-off-by: David S. Miller

    Eric Dumazet
     

08 Apr, 2015

1 commit

  • On the output paths in particular, we have to sometimes deal with two
    socket contexts. First, and usually skb->sk, is the local socket that
    generated the frame.

    And second, is potentially the socket used to control a tunneling
    socket, such as one the encapsulates using UDP.

    We do not want to disassociate skb->sk when encapsulating in order
    to fix this, because that would break socket memory accounting.

    The most extreme case where this can cause huge problems is an
    AF_PACKET socket transmitting over a vxlan device. We hit code
    paths doing checks that assume they are dealing with an ipv4
    socket, but are actually operating upon the AF_PACKET one.

    Signed-off-by: David S. Miller

    David Miller
     

10 Mar, 2015

1 commit

  • Pablo Neira Ayuso says:

    ====================
    Netfilter updates for net-next

    The following patchset contains Netfilter updates for your net-next
    tree. Basically, improvements for the packet rejection infrastructure,
    deprecation of CLUSTERIP, cleanups for nf_tables and some untangling for
    br_netfilter. More specifically they are:

    1) Send packet to reset flow if checksum is valid, from Florian Westphal.

    2) Fix nf_tables reject bridge from the input chain, also from Florian.

    3) Deprecate the CLUSTERIP target, the cluster match supersedes it in
    functionality and it's known to have problems.

    4) A couple of cleanups for nf_tables rule tracing infrastructure, from
    Patrick McHardy.

    5) Another cleanup to place transaction declarations at the bottom of
    nf_tables.h, also from Patrick.

    6) Consolidate Kconfig dependencies wrt. NF_TABLES.

    7) Limit table names to 32 bytes in nf_tables.

    8) mac header copying in bridge netfilter is already required when
    calling ip_fragment(), from Florian Westphal.

    9) move nf_bridge_update_protocol() to br_netfilter.c, also from
    Florian.

    10) Small refactor in br_netfilter in the transmission path, again from
    Florian.

    11) Move br_nf_pre_routing_finish_bridge_slow() to br_netfilter.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     

09 Mar, 2015

1 commit


06 Mar, 2015

1 commit

  • This extends the design in commit 958501163ddd ("bridge: Add support for
    IEEE 802.11 Proxy ARP") with optional set of rules that are needed to
    meet the IEEE 802.11 and Hotspot 2.0 requirements for ProxyARP. The
    previously added BR_PROXYARP behavior is left as-is and a new
    BR_PROXYARP_WIFI alternative is added so that this behavior can be
    configured from user space when required.

    In addition, this enables proxyarp functionality for unicast ARP
    requests for both BR_PROXYARP and BR_PROXYARP_WIFI since it is possible
    to use unicast as well as broadcast for these frames.

    The key differences in functionality:

    BR_PROXYARP:
    - uses the flag on the bridge port on which the request frame was
    received to determine whether to reply
    - block bridge port flooding completely on ports that enable proxy ARP

    BR_PROXYARP_WIFI:
    - uses the flag on the bridge port to which the target device of the
    request belongs
    - block bridge port flooding selectively based on whether the proxyarp
    functionality replied

    Signed-off-by: Jouni Malinen
    Signed-off-by: David S. Miller

    Jouni Malinen
     

02 Nov, 2014

1 commit


31 Oct, 2014

1 commit

  • If the packet is received via the bridge stack, this cannot reject
    packets from the IP stack.

    This adds functions to build the reject packet and send it from the
    bridge stack. Comments and assumptions on this patch:

    1) Validate the IPv4 and IPv6 headers before further processing,
    given that the packet comes from the bridge stack, we cannot assume
    they are clean. Truncated packets are dropped, we follow similar
    approach in the existing iptables match/target extensions that need
    to inspect layer 4 headers that is not available. This also includes
    packets that are directed to multicast and broadcast ethernet
    addresses.

    2) br_deliver() is exported to inject the reject packet via
    bridge localout -> postrouting. So the approach is similar to what
    we already do in the iptables reject target. The reject packet is
    sent to the bridge port from which we have received the original
    packet.

    3) The reject packet is forged based on the original packet. The TTL
    is set based on sysctl_ip_default_ttl for IPv4 and per-net
    ipv6.devconf_all hoplimit for IPv6.

    Signed-off-by: Pablo Neira Ayuso

    Pablo Neira Ayuso
     

28 Oct, 2014

1 commit

  • This feature is defined in IEEE Std 802.11-2012, 10.23.13. It allows
    the AP devices to keep track of the hardware-address-to-IP-address
    mapping of the mobile devices within the WLAN network.

    The AP will learn this mapping via observing DHCP, ARP, and NS/NA
    frames. When a request for such information is made (i.e. ARP request,
    Neighbor Solicitation), the AP will respond on behalf of the
    associated mobile device. In the process of doing so, the AP will drop
    the multicast request frame that was intended to go out to the wireless
    medium.

    It was recommended at the LKS workshop to do this implementation in
    the bridge layer. vxlan.c is already doing something very similar.
    The DHCP snooping code will be added to the userspace application
    (hostapd) per the recommendation.

    This RFC commit is only for IPv4. A similar approach in the bridge
    layer will be taken for IPv6 as well.

    Signed-off-by: Kyeyoon Park
    Signed-off-by: David S. Miller

    Kyeyoon Park
     

27 Sep, 2014

1 commit

  • Jesper reported that br_netfilter always registers the hooks since
    this is part of the bridge core. This harms performance for people that
    don't need this.

    This patch modularizes br_netfilter so it can be rmmod'ed, thus,
    the hooks can be unregistered. I think the bridge netfilter should have
    been a separated module since the beginning, Patrick agreed on that.

    Note that this is breaking compatibility for users that expect that
    bridge netfilter is going to be available after explicitly 'modprobe
    bridge' or via automatic load through brctl.

    However, the damage can be easily undone by modprobing br_netfilter.
    The bridge core also spots a message to provide a clue to people that
    didn't notice that this has been deprecated.

    On top of that, the plan is that nftables will not rely on this software
    layer, but integrate the connection tracking into the bridge layer to
    enable stateful filtering and NAT, which is was bridge netfilter users
    seem to require.

    This patch still keeps the fake_dst_ops in the bridge core, since this
    is required by when the bridge port is initialized. So we can safely
    modprobe/rmmod br_netfilter anytime.

    Signed-off-by: Pablo Neira Ayuso
    Acked-by: Florian Westphal

    Pablo Neira Ayuso
     

01 Apr, 2014

1 commit


20 Dec, 2013

1 commit


19 Dec, 2013

1 commit


11 Jun, 2013

1 commit

  • Add a flag to control flood of unicast traffic. By default, flood is
    on and the bridge will flood unicast traffic if it doesn't know
    the destination. When the flag is turned off, unicast traffic
    without an FDB will not be forwarded to the specified port.

    Signed-off-by: Vlad Yasevich
    Reviewed-by: Michael S. Tsirkin
    Signed-off-by: David S. Miller

    Vlad Yasevich
     

14 Feb, 2013

2 commits


15 Aug, 2012

1 commit

  • Although this doesn't matter actually, because netpoll_tx_running()
    doesn't use the parameter, the code will be more readable.

    For team_dev_queue_xmit() we have to move it down to avoid
    compile errors.

    Cc: David Miller
    Signed-off-by: Jiri Pirko
    Signed-off-by: Cong Wang
    Signed-off-by: David S. Miller

    Amerigo Wang
     

08 May, 2012

1 commit

  • Conflicts:
    drivers/net/ethernet/intel/e1000e/param.c
    drivers/net/wireless/iwlwifi/iwl-agn-rx.c
    drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c
    drivers/net/wireless/iwlwifi/iwl-trans.h

    Resolved the iwlwifi conflict with mainline using 3-way diff posted
    by John Linville and Stephen Rothwell. In 'net' we added a bug
    fix to make iwlwifi report a more accurate skb->truesize but this
    conflicted with RX path changes that happened meanwhile in net-next.

    In e1000e a conflict arose in the validation code for settings of
    adapter->itr. 'net-next' had more sophisticated logic so that
    logic was used.

    Signed-off-by: David S. Miller

    David S. Miller
     

24 Apr, 2012

1 commit

  • bridge: set fake_rtable's dst to NULL to avoid kernel Oops

    when bridge is deleted before tap/vif device's delete, kernel may
    encounter an oops because of NULL reference to fake_rtable's dst.
    Set fake_rtable's dst to NULL before sending packets out can solve
    this problem.

    v4 reformat, change br_drop_fake_rtable(skb) to {}

    v3 enrich commit header

    v2 introducing new flag DST_FAKE_RTABLE to dst_entry struct.

    [ Use "do { } while (0)" for nop br_drop_fake_rtable()
    implementation -DaveM ]

    Acked-by: Eric Dumazet
    Signed-off-by: Peter Huang
    Signed-off-by: David S. Miller

    Peter Huang (Peng)
     

16 Apr, 2012

1 commit


09 Dec, 2011

1 commit

  • If user has configured a MAC address that is not one of the existing
    ports of the bridge, then we need to add a special entry in the forwarding
    table. This forwarding table entry has no outgoing port so it has to be
    treated a little differently. The special entry is reported by the netlink
    interface with ifindex of bridge, but ignored by the old interface since there
    is no usable way to put it in the ABI.

    Reported-by: Koki Sanagi
    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    stephen hemminger