1. 09 Jul, 2016 24 commits
    • Jon Mason's avatar
      net: ethernet: bgmac: Add platform device support · f6a95a24
      Jon Mason authored
      The bcma portion of the driver has been split off into a bcma specific
      driver.  This has been mirrored for the platform driver.  The last
      references to the bcma core struct have been changed into a generic
      function call.  These function calls are wrappers to either the original
      bcma code or new platform functions that access the same areas via MMIO.
      This necessitated adding function pointers for both platform and bcma to
      hide which backend is being used from the generic bgmac code.
      Signed-off-by: default avatarJon Mason <jon.mason@broadcom.com>
      Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
      Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Tested-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f6a95a24
    • Jon Mason's avatar
      net: ethernet: bgmac: convert to feature flags · db791eb2
      Jon Mason authored
      The bgmac driver is using the bcma provides device ID and revision, as
      well as the SoC ID and package, to determine which features are
      necessary to enable, reset, etc in the driver.   In anticipation of
      removing the bcma requirement for this driver, these must be changed to
      not reference that struct.  In place of that, each "feature" has been
      given a flag, and the flags are enabled for their respective device and
      SoC.
      Signed-off-by: default avatarJon Mason <jon.mason@broadcom.com>
      Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
      Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Tested-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      db791eb2
    • Jon Mason's avatar
      net: ethernet: bgmac: move BCMA MDIO Phy code into a separate file · 55954f3b
      Jon Mason authored
      Move the BCMA MDIO phy into a separate file, as it is very tightly
      coupled with the BCMA bus.  This will help with the upcoming BCMA
      removal from the bgmac driver.  Optimally, this should be moved into
      phy drivers, but it is too tightly coupled with the bgmac driver to
      effectively move it without more changes to the driver.
      
      Note: the phy_reset was intentionally removed, as the mdio phy subsystem
      automatically resets the phy if a reset function pointer is present.  In
      addition to the moving of the driver, this reset function is added.
      Signed-off-by: default avatarJon Mason <jon.mason@broadcom.com>
      Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
      Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Tested-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      55954f3b
    • Jon Mason's avatar
      net: ethernet: bgmac: add dma_dev pointer · a0b68486
      Jon Mason authored
      The dma buffer allocation, etc references a dma_dev device pointer from
      the bcma core.  In anticipation of removing the bcma requirement for
      this driver, these must be changed to not reference that struct.  Add a
      dma_dev device pointer to the bgmac stuct and reference that instead.
      Signed-off-by: default avatarJon Mason <jon.mason@broadcom.com>
      Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
      Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Tested-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a0b68486
    • Jon Mason's avatar
      net: ethernet: bgmac: change bgmac_* prints to dev_* prints · d00a8281
      Jon Mason authored
      The bgmac_* print wrappers call dev_* prints with the dev pointer from
      the bcma core.  In anticipation of removing the bcma requirement for
      this driver, these must be changed to not reference that struct.  So,
      simply change all of the bgmac_* prints to their dev_* counterparts.  In
      some cases netdev_* prints are more appropriate, so change those as
      well.
      Signed-off-by: default avatarJon Mason <jon.mason@broadcom.com>
      Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
      Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Tested-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d00a8281
    • Jesper Dangaard Brouer's avatar
      net: tracepoint napi:napi_poll add work and budget · 1db19db7
      Jesper Dangaard Brouer authored
      An important information for the napi_poll tracepoint is knowing
      the work done (packets processed) by the napi_poll() call. Add
      both the work done and budget, as they are related.
      
      Handle trace_napi_poll() param change in dropwatch/drop_monitor
      and in python perf script netdev-times.py in backward compat way,
      as python fortunately supports optional parameter handling.
      Signed-off-by: default avatarJesper Dangaard Brouer <brouer@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1db19db7
    • David S. Miller's avatar
      Merge branch 'r8152-next' · 89141e1c
      David S. Miller authored
      Hayes Wang says:
      
      ====================
      r8152: remove the redundant code
      
      Remove the unnacessary code.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      89141e1c
    • hayeswang's avatar
      r8152: remove cancel_delayed_work_sync in rtl8152_set_speed · c23d86ae
      hayeswang authored
      There is no conflict between the work_queue function and
      rtl8152_set_speed(), so we don't have to cancel the delayed work in
      rtl8152_set_speed().
      Signed-off-by: default avatarHayes Wang <hayeswang@realtek.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c23d86ae
    • hayeswang's avatar
      r8152: remove a netif_carrier_off in rtl8152_open function · c79262f3
      hayeswang authored
      After commit 90186af4 ("r8152: fix lockup when runtime PM is enabled"),
      the autoresume wouldn't start the device before rtl8152_open() is finished.
      Therefore, we don't have to reset the linking status before and after
      autoresume. That is, one of netif_carrier_off() in rtl8152_open() could be
      removed.
      Signed-off-by: default avatarHayes Wang <hayeswang@realtek.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c79262f3
    • hayeswang's avatar
      r8152: remove rtl_phy_reset function · b1648066
      hayeswang authored
      In rtl_hw_phy_work_func_t(), the flag of PHY_RESET is set in
      rtl_ops.hw_phy_cfg() and cleared in rtl8152_set_speed(). Therefore,
      the rtl_phy_reset() is never run and is unnecessary.
      Signed-off-by: default avatarHayes Wang <hayeswang@realtek.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b1648066
    • David S. Miller's avatar
      Merge branch 'mpls-in-ipv4-and-udp' · fb577316
      David S. Miller authored
      Simon Horman says:
      
      ====================
      net: support MPLS in IPv4 and UDP
      
      This short series provides support for MPLS in IPv4 (RFC4023), and by
      virtue of FOU, MPLS in UDP (RFC7510).
      
      The changes are as follows:
      1. Teach tunnel4.c about AF_MPLS, it already understands AF_INET and
         AF_INET6
      2. Enhance IPIP and SIT to handle MPLS. Both already handle IPv4.
         SIT also already handles IPv6.
      3. Trivially enhance MPLS to allow routes over SIT and IPIP tunnels.
      
      A corresponding patch set for iproute2 has also been provided.
      
      Changes since v1
      * Correct inverted IPIP protocol logic in SIT patch
      * Provide usage example below
      
      Sample configuration follows:
      
      * The following creates a tunnel and routes MPLS packets whose outermost
        label is 100 over it. The forwarded packets will have the outermost label
        stack entry, 100, removed and two label stack entries added, the
        outermost having label 200 and the next having label 300.
      
        The local end-point for the tunnel is 10.0.99.192 and the remote
        endpoint is 10.0.99.193.
      
        The local address for encapsulated packets is 10.0.98.192 and the
        remote address is 10.0.98.193.
      
        # Create an MPLS over IPv4 tunnel using the IPIP driver
        ip link add name tun1 type ipip remote 10.0.99.193 local 10.0.99.192 \
      	ttl 225 mode mplsip
      
        # Bring the tunnel up and an add an IPv4 address and route
        ip link set up dev tun1
        ip addr add 10.0.98.192/24 dev tun1
      
        # Set MPLS route
        # Allow MPLS forwarding of packets recieved on eth0
        echo 1 > /proc/sys/net/mpls/conf/eth0/input
        # Larger than label to be routed (100)
        echo 101 > /proc/sys/net/mpls/platform_labels
        ip -f mpls route add 100 as 200/300 via inet 10.0.98.193
      
      * For FOU (in this case MPLS over UDP) a tunnel may created using:
      
        # Packets recieved on UDP port 6635 are MPLS over UDP (IP proto 137)
        ip fou add port 6635 ipproto 137
        # Create the tunnel netdev
        ip link add name tun1 type ipip remote 10.0.99.193 local 10.0.99.192 \
      	ttl 225 mode mplsip encap fou encap-sport auto encap-dport 6635
      
        IPv4 address, link and route, and MPLS routing commands are as per
        the MPLS over IPv4 example
      
      * To use the SIT driver instead of the IPIP driver "ipip" may be substituted
        for "sit" in the above examples.
      
      * To create a tunnel that forwards and receives all supported
        inner-protocols "mplsip" may be substituted for "any" in the above
        examples.
      
        For the IPIP driver this configures both IPv4 and MPLS over IPv4.
        For the SIT driver this configures IPv6, IPv4 and MPLS over IPv4.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      fb577316
    • Simon Horman's avatar
      mpls: allow routes on ipip and sit devices · 407f31be
      Simon Horman authored
      Allow MPLS routes on IPIP and SIT devices now that they
      support forwarding MPLS packets.
      Signed-off-by: default avatarSimon Horman <simon.horman@netronome.com>
      Reviewed-by: default avatarDinan Gunawardena <dinan.gunawardena@netronome.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      407f31be
    • Simon Horman's avatar
      ipip: support MPLS over IPv4 · 1b69e7e6
      Simon Horman authored
      Extend the IPIP driver to support MPLS over IPv4. The implementation is an
      extension of existing support for IPv4 over IPv4 and is based of multiple
      inner-protocol support for the SIT driver.
      Signed-off-by: default avatarSimon Horman <simon.horman@netronome.com>
      Reviewed-by: default avatarDinan Gunawardena <dinan.gunawardena@netronome.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1b69e7e6
    • Simon Horman's avatar
      sit: support MPLS over IPv4 · 49dbe7ae
      Simon Horman authored
      Extend the SIT driver to support MPLS over IPv4. This implementation
      extends existing support for IPv6 over IPv4 and IPv4 over IPv4.
      Signed-off-by: default avatarSimon Horman <simon.horman@netronome.com>
      Reviewed-by: default avatarDinan Gunawardena <dinan.gunawardena@netronome.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      49dbe7ae
    • Simon Horman's avatar
      tunnels: support MPLS over IPv4 tunnels · 8afe97e5
      Simon Horman authored
      Extend tunnel support to MPLS over IPv4.  The implementation extends the
      existing differentiation between IPIP and IPv6 over IPv4 to also cover MPLS
      over IPv4.
      Signed-off-by: default avatarSimon Horman <simon.horman@netronome.com>
      Reviewed-by: default avatarDinan Gunawardena <dinan.gunawardena@netronome.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8afe97e5
    • Nikolay Aleksandrov's avatar
      net: bridge: extend MLD/IGMP query stats · a65056ec
      Nikolay Aleksandrov authored
      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.1Suggested-by: default avatarLinus Lüssing <linus.luessing@c0d3.blue>
      Signed-off-by: default avatarNikolay Aleksandrov <nikolay@cumulusnetworks.com>
      Acked-by: default avatarStephen Hemminger <stephen@networkplumber.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a65056ec
    • Marcelo Ricardo Leitner's avatar
      sctp: fix panic when sending auth chunks · f1533cce
      Marcelo Ricardo Leitner authored
      When we introduced GSO support, if using auth the auth chunk was being
      left queued on the packet even after the final segment was generated.
      Later on sctp_transmit_packet it calls sctp_packet_reset, which zeroed
      the packet len while not accounting for this left-over. This caused more
      space to be used the next packet due to the chunk still being queued,
      but space which wasn't allocated as its size wasn't accounted.
      
      The fix is to only queue it back when we know that we are going to
      generate another segment.
      
      Fixes: 90017acc ("sctp: Add GSO support")
      Signed-off-by: default avatarMarcelo Ricardo Leitner <marcelo.leitner@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f1533cce
    • Dan Carpenter's avatar
      bnxt: fix a condition · 09a7636a
      Dan Carpenter authored
      This code generates as static checker warning because htons(ETH_P_IPV6)
      is always true.  From the context it looks like the && was intended to
      be !=.
      
      Fixes: 94758f8d ('bnxt_en: Add GRO logic for BCM5731X chips.')
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Acked-by: default avatarMichael Chan <michael.chan@broadcom.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      09a7636a
    • Alexei Starovoitov's avatar
      bpf: introduce bpf_get_current_task() helper · 606274c5
      Alexei Starovoitov authored
      over time there were multiple requests to access different data
      structures and fields of task_struct current, so finally add
      the helper to access 'current' as-is. Tracing bpf programs will do
      the rest of walking the pointers via bpf_probe_read().
      Note that current can be null and bpf program has to deal it with,
      but even dumb passing null into bpf_probe_read() is still safe.
      Suggested-by: default avatarBrendan Gregg <brendan.d.gregg@gmail.com>
      Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
      Acked-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      606274c5
    • Vivien Didelot's avatar
      net: dsa: initialize the routing table · d390238c
      Vivien Didelot authored
      The routing table of every switch in a tree is currently initialized to
      all zeros. This is an issue since 0 is a valid port number.
      
      Add a DSA_RTABLE_NONE=-1 constant to initialize the signed values of the
      routing table pointing to other switches.
      
      This fixes the device mapping of the mv88e6xxx driver where the port
      pointing to the switch itself and to non-existent switches was wrongly
      configured to be 0. It is now set to the expected 0xf value.
      Signed-off-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d390238c
    • Craig Gallek's avatar
      tun: Don't assume type tun in tun_device_event · 86dfb4ac
      Craig Gallek authored
      The referenced change added a netlink notifier for processing
      device queue size events.  These events are fired for all devices
      but the registered callback assumed they only occurred for tun
      devices.  This fix adds a check (borrowed from macvtap.c) to discard
      non-tun device events.
      
      For reference, this fixes the following splat:
      [   71.505935] BUG: unable to handle kernel NULL pointer dereference at 0000000000000010
      [   71.513870] IP: [<ffffffff8153c1a0>] tun_device_event+0x110/0x340
      [   71.519906] PGD 3f41f56067 PUD 3f264b7067 PMD 0
      [   71.524497] Oops: 0002 [#1] SMP DEBUG_PAGEALLOC
      [   71.529374] gsmi: Log Shutdown Reason 0x03
      [   71.533417] Modules linked in:[   71.533826] mlx4_en: eth1: Link Up
      
      [   71.539616]  bonding w1_therm wire cdc_acm ehci_pci ehci_hcd mlx4_en ib_uverbs mlx4_ib ib_core mlx4_core
      [   71.549282] CPU: 12 PID: 7915 Comm: set.ixion-haswe Not tainted 4.7.0-dbx-DEV #8
      [   71.556586] Hardware name: Intel Grantley,Wellsburg/Ixion_IT_15, BIOS 2.58.0 05/03/2016
      [   71.564495] task: ffff887f00bb20c0 ti: ffff887f00798000 task.ti: ffff887f00798000
      [   71.571894] RIP: 0010:[<ffffffff8153c1a0>]  [<ffffffff8153c1a0>] tun_device_event+0x110/0x340
      [   71.580327] RSP: 0018:ffff887f0079bbd8  EFLAGS: 00010202
      [   71.585576] RAX: fffffffffffffae8 RBX: ffff887ef6d03378 RCX: 0000000000000000
      [   71.592624] RDX: 0000000000000000 RSI: 0000000000000028 RDI: 0000000000000000
      [   71.599675] RBP: ffff887f0079bc48 R08: 0000000000000000 R09: 0000000000000001
      [   71.606730] R10: 0000000000000004 R11: 0000000000000000 R12: 0000000000000010
      [   71.613780] R13: 0000000000000000 R14: 0000000000000001 R15: ffff887f0079bd00
      [   71.620832] FS:  00007f5cdc581700(0000) GS:ffff883f7f700000(0000) knlGS:0000000000000000
      [   71.628826] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [   71.634500] CR2: 0000000000000010 CR3: 0000003f3eb62000 CR4: 00000000001406e0
      [   71.641549] Stack:
      [   71.643533]  ffff887f0079bc08 0000000000000246 000000000000001e ffff887ef6d00000
      [   71.650871]  ffff887f0079bd00 0000000000000000 0000000000000000 ffffffff00000000
      [   71.658210]  ffff887f0079bc48 ffffffff81d24070 00000000fffffff9 ffffffff81cec7a0
      [   71.665549] Call Trace:
      [   71.667975]  [<ffffffff810eeb0d>] notifier_call_chain+0x5d/0x80
      [   71.673823]  [<ffffffff816365d0>] ? show_tx_maxrate+0x30/0x30
      [   71.679502]  [<ffffffff810eeb3e>] __raw_notifier_call_chain+0xe/0x10
      [   71.685778]  [<ffffffff810eeb56>] raw_notifier_call_chain+0x16/0x20
      [   71.691976]  [<ffffffff8160eb30>] call_netdevice_notifiers_info+0x40/0x70
      [   71.698681]  [<ffffffff8160ec36>] call_netdevice_notifiers+0x16/0x20
      [   71.704956]  [<ffffffff81636636>] change_tx_queue_len+0x66/0x90
      [   71.710807]  [<ffffffff816381ef>] netdev_store.isra.5+0xbf/0xd0
      [   71.716658]  [<ffffffff81638350>] tx_queue_len_store+0x50/0x60
      [   71.722431]  [<ffffffff814a6798>] dev_attr_store+0x18/0x30
      [   71.727857]  [<ffffffff812ea3ff>] sysfs_kf_write+0x4f/0x70
      [   71.733274]  [<ffffffff812e9507>] kernfs_fop_write+0x147/0x1d0
      [   71.739045]  [<ffffffff81134a4f>] ? rcu_read_lock_sched_held+0x8f/0xa0
      [   71.745499]  [<ffffffff8125a108>] __vfs_write+0x28/0x120
      [   71.750748]  [<ffffffff8111b137>] ? percpu_down_read+0x57/0x90
      [   71.756516]  [<ffffffff8125d7d8>] ? __sb_start_write+0xc8/0xe0
      [   71.762278]  [<ffffffff8125d7d8>] ? __sb_start_write+0xc8/0xe0
      [   71.768038]  [<ffffffff8125bd5e>] vfs_write+0xbe/0x1b0
      [   71.773113]  [<ffffffff8125c092>] SyS_write+0x52/0xa0
      [   71.778110]  [<ffffffff817528e5>] entry_SYSCALL_64_fastpath+0x18/0xa8
      [   71.784472] Code: 45 31 f6 48 8b 93 78 33 00 00 48 81 c3 78 33 00 00 48 39 d3 48 8d 82 e8 fa ff ff 74 25 48 8d b0 40 05 00 00 49 63 d6 41 83 c6 01 <49> 89 34 d4 48 8b 90 18 05 00 00 48 39 d3 48 8d 82 e8 fa ff ff
      [   71.803655] RIP  [<ffffffff8153c1a0>] tun_device_event+0x110/0x340
      [   71.809769]  RSP <ffff887f0079bbd8>
      [   71.813213] CR2: 0000000000000010
      [   71.816512] ---[ end trace 4db6449606319f73 ]---
      
      Fixes: 1576d986 ("tun: switch to use skb array for tx")
      Signed-off-by: default avatarCraig Gallek <kraig@google.com>
      Acked-by: default avatarJason Wang <jasowang@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      86dfb4ac
    • David S. Miller's avatar
      Merge tag 'rxrpc-rewrite-20160706' of... · cc3baecb
      David S. Miller authored
      Merge tag 'rxrpc-rewrite-20160706' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs
      
      David Howells says:
      
      ====================
      rxrpc: Improve conn/call lookup and fix call number generation [ver #3]
      
      I've fixed a couple of patch descriptions and excised the patch that
      duplicated the connections list for reconsideration at a later date.
      
      For reference, the excised patch is sitting on the rxrpc-experimental
      branch of my git tree, based on top of the rxrpc-rewrite branch.  Diffing
      it against yesterday's tag shows no differences.
      
      Would you prefer the patch set to be emailed afresh instead of a git-pull
      request?
      
      David
      ---
      Here's the next part of the AF_RXRPC rewrite.  The two main purposes of
      this set are to fix the call number handling and to make use of RCU when
      looking up the connection or call to pass a received packet to.
      
      Important changes in this set include:
      
       (1) Avoidance of placing stack data into SG lists in rxkad so that kernel
           stacks can become vmalloc'd (Herbert Xu).
      
       (2) Calls cease pinning the connection they used as soon as possible,
           which allows the connection to be discarded sooner and allows the call
           channel on that connection to be reused earlier.
      
       (3) Make each call channel on a connection have a separate and independent
           call number space rather than having a shared number space for the
           connection.  Call numbers should increment monotonically per channel
           on the client, and the server should ignore a call with a lower call
           number for that channel than the latest it has seen.  The RESPONSE
           packet sets the minimum values of each call ID counter on a
           connection.
      
       (4) Look up calls by indexing the channel array on a connection rather
           than by keeping calls in an rbtree on that connection.  Also look up
           calls using the channel array rather than using a hashtable.
      
           The call hashtable can then be removed.
      
       (5) Call terminal statuses are cached in the channel array for the last
           call.  It is assumed that if we the server have seen call N, then the
           client no longer cares about call N-1 on the same channel.
      
           This will allow retransmission of the terminal status in future
           without the need to keep the rxrpc_call struct around.
      
       (6) Peer lookups are moved out of common connection handling code and into
           service connection handling code as client connections (a) must point
           to a peer before they can be used and (b) are looked up by a
           machine-unique connection ID directly, so we only need to look up the
           peer first if we're going to deal with a service call.
      
       (7) The reference count on a connection is held elevated by 1 whilst it is
           alive (ie. idle unused connections have a refcount of 1).  The reaper
           will attempt to change the refcount from 1->0 and skip if this cannot
           be done, whilst look ups only increment the refcount if it's non-zero.
      
           This makes the implementation of RCU lookups easier as we don't have
           to get a ref on the connection or a lock on the connection list to
           prevent a connection being reaped whilst we're contemplating queueing
           a packet that initiates a new service call upon it.
      
           If we need to get a connection, but there's a dead connection in the
           tree, we use rb_replace_node() to replace the dead one with a new one.
      
       (8) Use a seqlock to validate the walk over the service connection rbtree
           attached to a peer when it's being walked in RCU mode.
      
       (9) Make the incoming call/connection packet handling code use RCU mode
           and locks and make it only take a reference if the call/connection
           gets queued on a workqueue.
      
      The intention is that the next set will introduce the connection lifetime
      management and capacity limits to prevent clients from overloading the
      server.
      
      There are some fixes too:
      
       (1) Verifying that a packet coming in to a client connection came from the
           expected source.
      
       (2) Fix handling of connection failure in client call creation where we
           don't reinitialise the list linkage block and a second attempt to
           unlink the failed connection oopses and also we don't set the state
           correctly, which causes an assertion failure.
      
       (3) New service calls were being added to the socket's accept queue under
           the wrong lock.
      
      Changes:
      
       (V2) In rxrpc_find_service_conn_rcu() initialised the sequence number to 0.
      
            Fixed the RCU handling in conn_service.c by introducing and using
            rb_replace_node_rcu() as an RCU-safe alternative in
            rxrpc_publish_service_conn().
      
            Modified and used rcu_dereference_raw() to avoid RCU sparse warnings
            in rxrpc_find_service_conn_rcu().
      
            Added in some missing RCU dereference wrappers.  It seems to be
            necessary to turn on CONFIG_PROVE_RCU_REPEATEDLY as well as
            CONFIG_SPARSE_RCU_POINTER to get the static __rcu annotation checking
            to happen.
      
            Fixed some other sparse warnings, including a missing ntohs() in
            jumbo packet processing.
      
       (V3) Fixed some commit descriptions.
      
            Excised the patch that duplicated the connection list to separate out
            the procfs list for reconsideration at a later date.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      cc3baecb
    • K. Y. Srinivasan's avatar
      netvsc: Use the new in-place consumption APIs in the rx path · 99a50bb1
      K. Y. Srinivasan authored
      Use the new APIs for eliminating a copy on the receive path. These new APIs also
      help in minimizing the number of memory barriers we end up issuing (in the
      ringbuffer code) since we can better control when we want to expose the ring
      state to the host.
      
      The patch is being resent to address earlier email issues.
      Signed-off-by: default avatarK. Y. Srinivasan <kys@microsoft.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      99a50bb1
    • Florian Westphal's avatar
      hfsc: reduce hfsc_sched to 14 cachelines · bba7eb5d
      Florian Westphal authored
      hfsc_sched is huge (size: 920, cachelines: 15), but we can get it to 14
      cachelines by placing level after filter_cnt (covering 4 byte hole) and
      reducing period/nactive/flags to u32 (period is just a counter,
      incremented when class becomes active -- 2**32 is plenty for this
      purpose, also, long is only 32bit wide on 32bit platforms anyway).
      
      cl_vtperiod is exported to userspace via tc_hfsc_stats, but its period
      member is already u32, so no precision is lost there either.
      
      Cc: Michal Soltys <soltys@ziu.info>
      Signed-off-by: default avatarFlorian Westphal <fw@strlen.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bba7eb5d
  2. 07 Jul, 2016 2 commits
  3. 06 Jul, 2016 14 commits
    • David S. Miller's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 30d0844b
      David S. Miller authored
      Conflicts:
      	drivers/net/ethernet/mellanox/mlx5/core/en.h
      	drivers/net/ethernet/mellanox/mlx5/core/en_main.c
      	drivers/net/usb/r8152.c
      
      All three conflicts were overlapping changes.
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      30d0844b
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · bc867651
      Linus Torvalds authored
      Pull networking fixes from David Miller:
      
       1) All users of AF_PACKET's fanout feature want a symmetric packet
          header hash for load balancing purposes, so give it to them.
      
       2) Fix vlan state synchronization in e1000e, from Jarod Wilson.
      
       3) Use correct socket pointer in ip_skb_dst_mtu(), from Shmulik
          Ladkani.
      
       4) mlx5 bug fixes from Mohamad Haj Yahia, Daniel Jurgens, Matthew
          Finlay, Rana Shahout, and Shaker Daibes.  Mostly to do with
          operation timeouts and PCI error handling.
      
       5) Fix checksum handling in mirred packet action, from WANG Cong.
      
       6) Set skb->dev correctly when transmitting in !protect_frames case of
          macsec driver, from Daniel Borkmann.
      
       7) Fix MTU calculation in geneve driver, from Haishuang Yan.
      
       8) Missing netif_napi_del() in unregister path of qeth driver, from
          Ursula Braun.
      
       9) Handle malformed route netlink messages in decnet properly, from
          Vergard Nossum.
      
      10) Memory leak of percpu data in ipv6 routing code, from Martin KaFai
          Lau.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (41 commits)
        ipv6: Fix mem leak in rt6i_pcpu
        net: fix decnet rtnexthop parsing
        cxgb4: update latest firmware version supported
        net/mlx5: Avoid setting unused var when modifying vport node GUID
        bonding: fix enslavement slave link notifications
        r8152: fix runtime function for RTL8152
        qeth: delete napi struct when removing a qeth device
        Revert "fsl/fman: fix error handling"
        fsl/fman: fix error handling
        cdc_ncm: workaround for EM7455 "silent" data interface
        RDS: fix rds_tcp_init() error path
        geneve: fix max_mtu setting
        net: phy: dp83867: Fix initialization of PHYCR register
        enc28j60: Fix race condition in enc28j60 driver
        net: stmmac: Fix null-function call in ISR on stmmac1000
        tipc: fix nl compat regression for link statistics
        net: bcmsysport: Device stats are unsigned long
        macsec: set actual real device for xmit when !protect_frames
        net_sched: fix mirrored packets checksum
        packet: Use symmetric hash for PACKET_FANOUT_HASH.
        ...
      bc867651
    • David S. Miller's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf-next · ae3e4562
      David S. Miller authored
      Pablo Neira Ayuso says:
      
      ====================
      Netfilter updates for net-next
      
      The following patchset contains Netfilter updates for net-next,
      they are:
      
      1) Don't use userspace datatypes in bridge netfilter code, from
         Tobin Harding.
      
      2) Iterate only once over the expectation table when removing the
         helper module, instead of once per-netns, from Florian Westphal.
      
      3) Extra sanitization in xt_hook_ops_alloc() to return error in case
         we ever pass zero hooks, xt_hook_ops_alloc():
      
      4) Handle NFPROTO_INET from the logging core infrastructure, from
         Liping Zhang.
      
      5) Autoload loggers when TRACE target is used from rules, this doesn't
         change the behaviour in case the user already selected nfnetlink_log
         as preferred way to print tracing logs, also from Liping Zhang.
      
      6) Conntrack slabs with SLAB_HWCACHE_ALIGN to allow rearranging fields
         by cache lines, increases the size of entries in 11% per entry.
         From Florian Westphal.
      
      7) Skip zone comparison if CONFIG_NF_CONNTRACK_ZONES=n, from Florian.
      
      8) Remove useless defensive check in nf_logger_find_get() from Shivani
         Bhardwaj.
      
      9) Remove zone extension as place it in the conntrack object, this is
         always include in the hashing and we expect more intensive use of
         zones since containers are in place. Also from Florian Westphal.
      
      10) Owner match now works from any namespace, from Eric Bierdeman.
      
      11) Make sure we only reply with TCP reset to TCP traffic from
          nf_reject_ipv4, patch from Liping Zhang.
      
      12) Introduce --nflog-size to indicate amount of network packet bytes
          that are copied to userspace via log message, from Vishwanath Pai.
          This obsoletes --nflog-range that has never worked, it was designed
          to achieve this but it has never worked.
      
      13) Introduce generic macros for nf_tables object generation masks.
      
      14) Use generation mask in table, chain and set objects in nf_tables.
          This allows fixes interferences with ongoing preparation phase of
          the commit protocol and object listings going on at the same time.
          This update is introduced in three patches, one per object.
      
      15) Check if the object is active in the next generation for element
          deactivation in the rbtree implementation, given that deactivation
          happens from the commit phase path we have to observe the future
          status of the object.
      
      16) Support for deletion of just added elements in the hash set type.
      
      17) Allow to resize hashtable from /proc entry, not only from the
          obscure /sys entry that maps to the module parameter, from Florian
          Westphal.
      
      18) Get rid of NFT_BASECHAIN_DISABLED, this code is not exercised
          anymore since we tear down the ruleset whenever the netdevice
          goes away.
      
      19) Support for matching inverted set lookups, from Arturo Borrero.
      
      20) Simplify the iptables_mangle_hook() by removing a superfluous
          extra branch.
      
      21) Introduce ether_addr_equal_masked() and use it from the netfilter
          codebase, from Joe Perches.
      
      22) Remove references to "Use netfilter MARK value as routing key"
          from the Netfilter Kconfig description given that this toggle
          doesn't exists already for 10 years, from Moritz Sichert.
      
      23) Introduce generic NF_INVF() and use it from the xtables codebase,
          from Joe Perches.
      
      24) Setting logger to NONE via /proc was not working unless explicit
          nul-termination was included in the string. This fixes seems to
          leave the former behaviour there, so we don't break backward.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ae3e4562
    • Linus Torvalds's avatar
      Merge tag 'sound-4.7-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · 4cdbbbd1
      Linus Torvalds authored
      Pull sound fixes from Takashi Iwai:
       "Here are a collection of small fixes: at this time, we've got a
        slightly high amount, but all small and trivial fixes, and nothing
        scary can be seen there"
      
      * tag 'sound-4.7-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (21 commits)
        ALSA: hda/realtek: Add Lenovo L460 to docking unit fixup
        ALSA: timer: Fix negative queue usage by racy accesses
        ASoC: rt5645: fix reg-2f default value.
        ASoC: fsl_ssi: Fix number of words per frame for I2S-slave mode
        ALSA: au88x0: Fix calculation in vortex_wtdma_bufshift()
        ALSA: hda - Add PCI ID for Kabylake-H
        ALSA: echoaudio: Fix memory allocation
        ASoC: Intel: atom: fix missing breaks that would cause the wrong operation to execute
        ALSA: hda - fix read before array start
        ASoC: cx20442: set tty->receiver_room in v253_open
        ASoC: ak4613: Enable cache usage to fix crashes on resume
        ASoC: wm8940: Enable cache usage to fix crashes on resume
        ASoC: Intel: Skylake: Initialize module list for Broxton
        ASoC: wm5102: Correct supported channels on trace compressed DAI
        ASoC: wm5110: Add missing route from OUT3R to SYSCLK
        ASoC: rt5670: fix HP Playback Volume control
        ASoC: hdmi-codec: select CONFIG_HDMI
        ASoC: davinci-mcasp: Fix dra7 DMA offset when using CFG port
        ASoC: hdac_hdmi: Fix potential NULL dereference
        ASoC: ak4613: Remove owner assignment from platform_driver
        ...
      4cdbbbd1
    • Linus Torvalds's avatar
      Merge tag 'chrome-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/olof/chrome-platform · 4d0a279c
      Linus Torvalds authored
      Pull chrome platform fix from Olof Johansson:
       "A single fix this time, closing a window where ioctl args are fetched
        twice"
      
      * tag 'chrome-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/olof/chrome-platform:
        platform/chrome: cros_ec_dev - double fetch bug in ioctl
      4d0a279c
    • Masashi Honma's avatar
      cfg80211: Add mesh peer AID setting API · 7d27a0ba
      Masashi Honma authored
      Previously, mesh power management functionality works only with kernel
      MPM. Because user space MPM did not report mesh peer AID to kernel,
      the kernel could not identify the bit in TIM element. So this patch
      adds mesh peer AID setting API.
      Signed-off-by: default avatarMasashi Honma <masashi.honma@gmail.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      7d27a0ba
    • Johannes Berg's avatar
      mac80211: parse wide bandwidth channel switch IE with workaround · 92b3a28a
      Johannes Berg authored
      Continuing the workaround implemented in commit 23665aaf
      ("mac80211: Interoperability workaround for 80+80 and 160 MHz channels")
      use the same code to parse the Wide Bandwidth Channel Switch element
      by converting to VHT Operation element since the spec also just refers
      to that for parsing semantics, particularly with the workaround.
      
      While at it, remove some dead code - the IEEE80211_STA_DISABLE_40MHZ
      flag can never be set at this point since it's checked earlier and the
      wide_bw_chansw_ie pointer is set to NULL if it's set.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      92b3a28a
    • Johannes Berg's avatar
      mac80211: report failure to start (partial) scan as scan abort · 7d10f6b1
      Johannes Berg authored
      Rather than reporting the scan as having completed, report it as
      being aborted.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      7d10f6b1
    • Avraham Stern's avatar
      mac80211: Add support for beacon report radio measurement · 7947d3e0
      Avraham Stern authored
      Add the following to support beacon report radio measurement
      with the measurement mode field set to passive or active:
      1. Propagate the required scan duration to the device
      2. Report the scan start time (in terms of TSF)
      3. Report each BSS's detection time (also in terms of TSF)
      
      TSF times refer to the BSS that the interface that requested the
      scan is connected to.
      Signed-off-by: default avatarAssaf Krauss <assaf.krauss@intel.com>
      Signed-off-by: default avatarAvraham Stern <avraham.stern@intel.com>
      [changed ath9k/10k, at76c59x-usb, iwlegacy, wl1251 and wlcore to match
      the new API]
      Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      7947d3e0
    • Avraham Stern's avatar
      nl80211: support beacon report scanning · 1d76250b
      Avraham Stern authored
      Beacon report radio measurement requires reporting observed BSSs
      on the channels specified in the beacon request. If the measurement
      mode is set to passive or active, it requires actually performing a
      scan (passive or active, accordingly), and reporting the time that
      the scan was started and the time each beacon/probe was received
      (both in terms of TSF of the BSS of the requesting AP). If the
      request mode is table, this information is optional.
      In addition, the radio measurement request specifies the channel
      dwell time for the measurement.
      
      In order to use scan for beacon report when the mode is active or
      passive, add a parameter to scan request that specifies the
      channel dwell time, and add scan start time and beacon received time
      to scan results information.
      
      Supporting beacon report is required for Multi Band Operation (MBO).
      Signed-off-by: default avatarAssaf Krauss <assaf.krauss@intel.com>
      Signed-off-by: default avatarDavid Spinadel <david.spinadel@intel.com>
      Signed-off-by: default avatarAvraham Stern <avraham.stern@intel.com>
      Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      1d76250b
    • Johannes Berg's avatar
      mac80211_hwsim: use signed net namespace ID · f1724b02
      Johannes Berg authored
      The API expects a pointer to a signed int so we should not use an
      unsigned int for it.
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      f1724b02
    • Ilan Peer's avatar
      mac80211_hwsim: Add radar bandwidths to the P2P Device combination · f7736f50
      Ilan Peer authored
      Add radar_detect_widths to the interface combination that allows
      concurrent P2P Device dedicated interface and AP interfaces, to enable
      testing of radar detection when P2P Device interface is used.
      
      Clear the radar_detect_widths in case of multi channel contexts
      as this is not currently supported.
      
      As radar_detect_widths are now supported in all combinations,
      remove the hwsim_if_dfs_limits definition since it is no longer
      needed.
      Signed-off-by: default avatarIlan Peer <ilan.peer@intel.com>
      Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      f7736f50
    • Aviya Erenfeld's avatar
      nl80211: Add API to support VHT MU-MIMO air sniffer · c6e6a0c8
      Aviya Erenfeld authored
      add API to support VHT MU-MIMO air sniffer.
      in MU-MIMO there are parallel frames on the air while the HW
      has only one RX.
      add the capability to sniff one of the MU-MIMO parallel frames by
      giving the sniffer additional information so it'll know which
      of the parallel frames it shall follow.
      
      Add attribute - NL80211_ATTR_MU_MIMO_GROUP_DATA - for getting
      a MU-MIMO groupID in order to monitor packets from that group
      using VHT MU-MIMO.
      And add attribute -NL80211_ATTR_MU_MIMO_FOLLOW_ADDR - for passing
      MAC address to monitor mode.
      that option will be used by VHT MU-MIMO air sniffer to follow a
      station according to it's MAC address using VHT MU-MIMO.
      Signed-off-by: default avatarAviya Erenfeld <aviya.erenfeld@intel.com>
      Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      c6e6a0c8
    • Johannes Berg's avatar
      mac80211: agg-rx: refuse ADDBA Request with timeout update · f89e07d4
      Johannes Berg authored
      The current implementation of handling ADDBA Request while a session
      is already active with the peer is wrong - in case the peer is using
      the existing session's dialog token this should be treated as update
      to the session, which can update the timeout value.
      
      We don't really have a good way of supporting that, so reject, but
      implement the required behaviour in the spec of "Even if the updated
      ADDBA Request frame is not accepted, the original Block ACK setup
      remains active." (802.11-2012 10.5.4)
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      f89e07d4