1. 04 Dec, 2015 3 commits
    • yzhu1's avatar
      net: bonding: remove redudant brackets · ce3ea1c7
      yzhu1 authored
      It is not necessary to use two brackets. As such, the redudant brackets
      are removed.
      
      CC: Jay Vosburgh <j.vosburgh@gmail.com>
      CC: Veaceslav Falico <vfalico@gmail.com>
      CC: Andy Gospodarek <gospo@cumulusnetworks.com>
      Signed-off-by: default avatarZhu Yanjun <yanjun.zhu@windriver.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ce3ea1c7
    • David S. Miller's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · f188b951
      David S. Miller authored
      Conflicts:
      	drivers/net/ethernet/renesas/ravb_main.c
      	kernel/bpf/syscall.c
      	net/ipv4/ipmr.c
      
      All three conflicts were cases of overlapping changes.
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f188b951
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 071f5d10
      Linus Torvalds authored
      Pull networking fixes from David Miller:
       "A lot of Thanksgiving turkey leftovers accumulated, here goes:
      
         1) Fix bluetooth l2cap_chan object leak, from Johan Hedberg.
      
         2) IDs for some new iwlwifi chips, from Oren Givon.
      
         3) Fix rtlwifi lockups on boot, from Larry Finger.
      
         4) Fix memory leak in fm10k, from Stephen Hemminger.
      
         5) We have a route leak in the ipv6 tunnel infrastructure, fix from
            Paolo Abeni.
      
         6) Fix buffer pointer handling in arm64 bpf JIT,f rom Zi Shen Lim.
      
         7) Wrong lockdep annotations in tcp md5 support, fix from Eric
            Dumazet.
      
         8) Work around some middle boxes which prevent proper handling of TCP
            Fast Open, from Yuchung Cheng.
      
         9) TCP repair can do huge kmalloc() requests, build paged SKBs
            instead.  From Eric Dumazet.
      
        10) Fix msg_controllen overflow in scm_detach_fds, from Daniel
            Borkmann.
      
        11) Fix device leaks on ipmr table destruction in ipv4 and ipv6, from
            Nikolay Aleksandrov.
      
        12) Fix use after free in epoll with AF_UNIX sockets, from Rainer
            Weikusat.
      
        13) Fix double free in VRF code, from Nikolay Aleksandrov.
      
        14) Fix skb leaks on socket receive queue in tipc, from Ying Xue.
      
        15) Fix ifup/ifdown crach in xgene driver, from Iyappan Subramanian.
      
        16) Fix clearing of persistent array maps in bpf, from Daniel
            Borkmann.
      
        17) In TCP, for the cross-SYN case, we don't initialize tp->copied_seq
            early enough.  From Eric Dumazet.
      
        18) Fix out of bounds accesses in bpf array implementation when
            updating elements, from Daniel Borkmann.
      
        19) Fill gaps in RCU protection of np->opt in ipv6 stack, from Eric
            Dumazet.
      
        20) When dumping proxy neigh entries, we have to accomodate NULL
            device pointers properly, from Konstantin Khlebnikov.
      
        21) SCTP doesn't release all ipv6 socket resources properly, fix from
            Eric Dumazet.
      
        22) Prevent underflows of sch->q.qlen for multiqueue packet
            schedulers, also from Eric Dumazet.
      
        23) Fix MAC and unicast list handling in bnxt_en driver, from Jeffrey
            Huang and Michael Chan.
      
        24) Don't actively scan radar channels, from Antonio Quartulli"
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (110 commits)
        net: phy: reset only targeted phy
        bnxt_en: Setup uc_list mac filters after resetting the chip.
        bnxt_en: enforce proper storing of MAC address
        bnxt_en: Fixed incorrect implementation of ndo_set_mac_address
        net: lpc_eth: remove irq > NR_IRQS check from probe()
        net_sched: fix qdisc_tree_decrease_qlen() races
        openvswitch: fix hangup on vxlan/gre/geneve device deletion
        ipv4: igmp: Allow removing groups from a removed interface
        ipv6: sctp: implement sctp_v6_destroy_sock()
        arm64: bpf: add 'store immediate' instruction
        ipv6: kill sk_dst_lock
        ipv6: sctp: add rcu protection around np->opt
        net/neighbour: fix crash at dumping device-agnostic proxy entries
        sctp: use GFP_USER for user-controlled kmalloc
        sctp: convert sack_needed and sack_generation to bits
        ipv6: add complete rcu protection around np->opt
        bpf: fix allocation warnings in bpf maps and integer overflow
        mvebu: dts: enable IP checksum with jumbo frames for Armada 38x on Port0
        net: mvneta: enable setting custom TX IP checksum limit
        net: mvneta: fix error path for building skb
        ...
      071f5d10
  2. 03 Dec, 2015 37 commits
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.dk/linux-block · 2873d32f
      Linus Torvalds authored
      Pull block fixes from Jens Axboe:
       "A collection of fixes from this series.  The most important here is a
        regression fix for an issue that some folks would hit in blk-merge.c,
        and the NVMe queue depth limit for the screwed up Apple "nvme"
        controller.
      
        In more detail, this pull request contains:
      
         - a set of fixes for null_blk, including a fix for a few corner cases
           where we could hang the device.  From Arianna and Paolo.
      
         - lightnvm:
              - A build improvement from Keith.
              - Update the qemu pci id detection from Matias.
              - Error handling fixes for leaks and other little fixes from
                Sudip and Wenwei.
      
         - fix from Eric where BLKRRPART would not return EBUSY for whole
           device mounts, only when partitions were mounted.
      
         - fix from Jan Kara, where EOF O_DIRECT reads would return
           negatively.
      
         - remove check for rq_mergeable() when checking limits for cloned
           requests.  The check doesn't make any sense.  It's assuming that
           since NOMERGE is set on the request that we don't have to
           recalculate limits since the request didn't change, but that's not
           true if the request has been redirected.  From Hannes.
      
         - correctly get the bio front segment value set for single segment
           bio's, fixing a BUG() in blk-merge.  From Ming"
      
      * 'for-linus' of git://git.kernel.dk/linux-block:
        nvme: temporary fix for Apple controller reset
        null_blk: change type of completion_nsec to unsigned long
        null_blk: guarantee device restart in all irq modes
        null_blk: set a separate timer for each command
        blk-merge: fix computing bio->bi_seg_front_size in case of single segment
        direct-io: Fix negative return from dio read beyond eof
        block: Always check queue limits for cloned requests
        lightnvm: missing nvm_lock acquire
        lightnvm: unconverted ppa returned in get_bb_tbl
        lightnvm: refactor and change vendor id for qemu
        lightnvm: do device max sectors boundary check first
        lightnvm: fix ioctl memory leaks
        lightnvm: free memory when gennvm register fails
        lightnvm: Simplify config when disabled
        Return EBUSY from BLKRRPART for mounted whole-dev fs
      2873d32f
    • Linus Torvalds's avatar
      Merge tag 'trace-v4.4-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace · c041f087
      Linus Torvalds authored
      Pull tracing fix from Steven Rostedt:
       "During the merge window I added a new file that is used to filter
        trace events on pids.  It filters all events where only tasks with
        their pid in that file exists.  It also handles the sched_switch and
        sched_wakeup trace events where the current task does not have its pid
        in the file, but the task either being switched to or awaken does.
      
        Unfortunately, I forgot about sched_wakeup_new and sched_waking.  Both
        of these tracepoints use the same class as the sched_wakeup
        tracepoint, and they too should be included in what gets filtered by
        the set_event_pid file"
      
      * tag 'trace-v4.4-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
        tracing: Add sched_wakeup_new and sched_waking tracepoints for pid filter
      c041f087
    • David S. Miller's avatar
      Merge tag 'mac80211-for-davem-2015-12-02' of... · e3c9b1ef
      David S. Miller authored
      Merge tag 'mac80211-for-davem-2015-12-02' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211
      
      Johannes Berg says:
      
      ====================
      A small set of fixes for 4.4:
       * fix scanning in mac80211 to not actively scan radar
         channels (from Antonio)
       * fix uninitialized variable in remain-on-channel that
         could lead to treating frame TX as remain-on-channel
         and not sending the frame at all
       * remove NL80211_FEATURE_FULL_AP_CLIENT_STATE again, it
         was broken and needs more work, we'll enable it later
       * fix call_rcu() induced use-after-reset/free in mesh
         (that was suddenly causing issues in certain tests)
       * always request block-ack window size 64 as we found
         some APs will otherwise crash (really ...)
       * fix P2P-Device teardown sequence to avoid restarting
         with uninitialized data
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e3c9b1ef
    • Jiri Pirko's avatar
      mlxsw: core: Change BUG to WARN in hwmon code · 6b20da4d
      Jiri Pirko authored
      Better to just warn the user that something really odd is going on and
      continue to run.
      Suggested-by: default avatarOr Gerlitz <gerlitz.or@gmail.com>
      Signed-off-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6b20da4d
    • Jérôme Pouiller's avatar
      net: phy: reset only targeted phy · cf18b778
      Jérôme Pouiller authored
      It is possible to address another chip on same MDIO bus. The case is
      correctly handled for media advertising. It is taken into account
      only if mii_data->phy_id == phydev->addr. However, this condition
      was missing for reset case.
      Signed-off-by: default avatarJérôme Pouiller <jezz@sysmic.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      cf18b778
    • Stephen Boyd's avatar
      stmmac: ipq806x: Return error values instead of pointers · ead87637
      Stephen Boyd authored
      Typically we return error pointers when we want to use those
      pointers in the non-error case, but this function is just
      returning error pointers or NULL for success. Change the style to
      plain int to follow normal kernel coding styles.
      
      Cc: Joachim Eastwood <manabian@gmail.com>
      Signed-off-by: default avatarStephen Boyd <sboyd@codeaurora.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ead87637
    • Jon Paul Maloy's avatar
      tipc: fix node reference count bug · dc8d1eb3
      Jon Paul Maloy authored
      Commit 5405ff6e ("tipc: convert node lock to rwlock")
      introduced a bug to the node reference counter handling. When a
      message is successfully sent in the function tipc_node_xmit(),
      we return directly after releasing the node lock, instead of
      continuing and decrementing the node reference counter as we
      should do.
      
      This commit fixes this bug.
      Signed-off-by: default avatarJon Maloy <jon.maloy@ericsson.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      dc8d1eb3
    • David S. Miller's avatar
      Merge branch 'mvneta-ethtool-autoneg' · b69e3c6f
      David S. Miller authored
      Stas Sergeev says:
      
      ====================
      mvneta: implement ethtool autonegotiation control
      
      These 2 patches add an ability to control the
      autonegotiation via ethtool. For example:
      
      ethtool -s eth0 autoneg off
      ethtool -s eth0 autoneg on
      
      This is needed if you want to connect the mvneta's MII
      to different switches or PHYs: the ones the do support
      the in-band status, and the ones that do not.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b69e3c6f
    • Stas Sergeev's avatar
      mvneta: implement ethtool autonegotiation control · 0c0744fc
      Stas Sergeev authored
      This patch allows to do
      ethtool -s eth0 autoneg off
      ethtool -s eth0 autoneg on
      to disable or enable autonegotiation at run-time.
      Without that functionality, the only way to control the autonegotiation
      is to modify the device tree.
      
      This is needed if you plan to use the same kernel with
      different ethernet switches, the ones that support the in-band
      status and the ones that not.
      
      CC: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
      CC: netdev@vger.kernel.org
      CC: linux-kernel@vger.kernel.org
      Signed-off-by: default avatarStas Sergeev <stsp@users.sourceforge.net>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0c0744fc
    • Stas Sergeev's avatar
      mvneta: consolidate autoneg enabling · aa5bc7a2
      Stas Sergeev authored
      This moves autoneg-related bit manipulations to the single place.
      
      CC: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
      CC: netdev@vger.kernel.org
      CC: linux-kernel@vger.kernel.org
      Signed-off-by: default avatarStas Sergeev <stsp@users.sourceforge.net>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      aa5bc7a2
    • Thierry Reding's avatar
      net: mv643xx: Use platform_register/unregister_drivers() · 3b5dde70
      Thierry Reding authored
      These new helpers simplify implementing multi-driver modules and
      properly handle failure to register one driver by unregistering all
      previously registered drivers.
      Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3b5dde70
    • Thierry Reding's avatar
      net: mpc52xx: Use platform_register/unregister_drivers() · 8c7d3972
      Thierry Reding authored
      These new helpers simplify implementing multi-driver modules and
      properly handle failure to register one driver by unregistering all
      previously registered drivers.
      Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8c7d3972
    • Thierry Reding's avatar
      net: bcm63xx: Use platform_register/unregister_drivers() · 0d1c744c
      Thierry Reding authored
      These new helpers simplify implementing multi-driver modules and
      properly handle failure to register one driver by unregistering all
      previously registered drivers.
      Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0d1c744c
    • Thierry Reding's avatar
      net: bfin_mac: Use platform_register/unregister_drivers() · 36b9ddd5
      Thierry Reding authored
      These new helpers simplify implementing multi-driver modules and
      properly handle failure to register one driver by unregistering all
      previously registered drivers.
      Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      36b9ddd5
    • Guillaume Nault's avatar
      pppox: use standard module auto-loading feature · 681b4d88
      Guillaume Nault authored
      * Register PF_PPPOX with pppox module rather than with pppoe,
          so that pppoe doesn't get loaded for any PF_PPPOX socket.
      
        * Register PX_PROTO_* with standard MODULE_ALIAS_NET_PF_PROTO()
          instead of using pppox's own naming scheme.
      
        * While there, add auto-loading feature for pptp.
      Signed-off-by: default avatarGuillaume Nault <g.nault@alphalink.fr>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      681b4d88
    • David S. Miller's avatar
      Merge branch 'bnxt_en-fixes' · c5ba5c8a
      David S. Miller authored
      Michael Chan says:
      
      ====================
      bnxt_en: set mac address and uc_list bug fixes.
      
      Fix ndo_set_mac_address() for PF and VF.
      Re-apply uc_list after chip reset.
      
      v2: Fix compile error if CONFIG_BNXT_SRIOV is not set.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c5ba5c8a
    • Michael Chan's avatar
      bnxt_en: Setup uc_list mac filters after resetting the chip. · b664f008
      Michael Chan authored
      Call bnxt_cfg_rx_mode() in bnxt_init_chip() to setup uc_list and
      mc_list mac address filters.  Before the patch, uc_list is not
      setup again after chip reset (such as ethtool ring size change)
      and macvlans don't work any more after that.
      
      Modify bnxt_cfg_rx_mode() to return error codes appropriately so
      that the init chip sequence can detect any failures.
      Signed-off-by: default avatarMichael Chan <mchan@broadcom.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b664f008
    • Jeffrey Huang's avatar
      bnxt_en: enforce proper storing of MAC address · bdd4347b
      Jeffrey Huang authored
      For PF, the bp->pf.mac_addr always holds the permanent MAC
      addr assigned by the HW.  For VF, the bp->vf.mac_addr always
      holds the administrator assigned VF MAC addr. The random
      generated VF MAC addr should never get stored to bp->vf.mac_addr.
      This way, when the VF wants to change the MAC address, we can tell
      if the adminstrator has already set it and disallow the VF from
      changing it.
      
      v2: Fix compile error if CONFIG_BNXT_SRIOV is not set.
      Signed-off-by: default avatarJeffrey Huang <huangjw@broadcom.com>
      Signed-off-by: default avatarMichael Chan <mchan@broadcom.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bdd4347b
    • Jeffrey Huang's avatar
      bnxt_en: Fixed incorrect implementation of ndo_set_mac_address · 1fc2cfd0
      Jeffrey Huang authored
      The existing ndo_set_mac_address only copies the new MAC addr
      and didn't set the new MAC addr to the HW. The correct way is
      to delete the existing default MAC filter from HW and add
      the new one. Because of RFS filters are also dependent on the
      default mac filter l2 context, the driver must go thru
      close_nic() to delete the default MAC and RFS filters, then
      open_nic() to set the default MAC address to HW.
      Signed-off-by: default avatarJeffrey Huang <huangjw@broadcom.com>
      Signed-off-by: default avatarMichael Chan <mchan@broadcom.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1fc2cfd0
    • David S. Miller's avatar
      Merge branch 'vsock-virtio' · c402293b
      David S. Miller authored
      Stefan Hajnoczi says:
      
      ====================
      Add virtio transport for AF_VSOCK
      
      v2:
       * Rebased onto Linux v4.4-rc2
       * vhost: Refuse to assign reserved CIDs
       * vhost: Refuse guest CID if already in use
       * vhost: Only accept correctly addressed packets (no spoofing!)
       * vhost: Support flexible rx/tx descriptor layout
       * vhost: Add missing total_tx_buf decrement
       * virtio_transport: Fix total_tx_buf accounting
       * virtio_transport: Add virtio_transport global mutex to prevent races
       * common: Notify other side of SOCK_STREAM disconnect (fixes shutdown
         semantics)
       * common: Avoid recursive mutex_lock(tx_lock) for write_space (fixes deadlock)
       * common: Define VIRTIO_VSOCK_TYPE_STREAM/DGRAM hardware interface constants
       * common: Define VIRTIO_VSOCK_SHUTDOWN_RCV/SEND hardware interface constants
       * common: Fix peer_buf_alloc inheritance on child socket
      
      This patch series adds a virtio transport for AF_VSOCK (net/vmw_vsock/).
      AF_VSOCK is designed for communication between virtual machines and
      hypervisors.  It is currently only implemented for VMware's VMCI transport.
      
      This series implements the proposed virtio-vsock device specification from
      here:
      http://comments.gmane.org/gmane.comp.emulators.virtio.devel/855
      
      Most of the work was done by Asias He and Gerd Hoffmann a while back.  I have
      picked up the series again.
      
      The QEMU userspace changes are here:
      https://github.com/stefanha/qemu/commits/vsock
      
      Why virtio-vsock?
      -----------------
      Guest<->host communication is currently done over the virtio-serial device.
      This makes it hard to port sockets API-based applications and is limited to
      static ports.
      
      virtio-vsock uses the sockets API so that applications can rely on familiar
      SOCK_STREAM and SOCK_DGRAM semantics.  Applications on the host can easily
      connect to guest agents because the sockets API allows multiple connections to
      a listen socket (unlike virtio-serial).  This simplifies the guest<->host
      communication and eliminates the need for extra processes on the host to
      arbitrate virtio-serial ports.
      
      Overview
      --------
      This series adds 3 pieces:
      
      1. virtio_transport_common.ko - core virtio vsock code that uses vsock.ko
      
      2. virtio_transport.ko - guest driver
      
      3. drivers/vhost/vsock.ko - host driver
      
      Howto
      -----
      The following kernel options are needed:
        CONFIG_VSOCKETS=y
        CONFIG_VIRTIO_VSOCKETS=y
        CONFIG_VIRTIO_VSOCKETS_COMMON=y
        CONFIG_VHOST_VSOCK=m
      
      Launch QEMU as follows:
        # qemu ... -device vhost-vsock-pci,id=vhost-vsock-pci0,guest-cid=3
      
      Guest and host can communicate via AF_VSOCK sockets.  The host's CID (address)
      is 2 and the guest is automatically assigned a CID (use VMADDR_CID_ANY (-1) to
      bind to it).
      
      Status
      ------
      There are a few design changes I'd like to make to the virtio-vsock device:
      
      1. The 3-way handshake isn't necessary over a reliable transport (virtqueue).
         Spoofing packets is also impossible so the security aspects of the 3-way
         handshake (including syn cookie) add nothing.  The next version will have a
         single operation to establish a connection.
      
      2. Credit-based flow control doesn't work for SOCK_DGRAM since multiple clients
         can transmit to the same listen socket.  There is no way for the clients to
         coordinate buffer space with each other fairly.  The next version will drop
         credit-based flow control for SOCK_DGRAM and only rely on best-effort
         delivery.  SOCK_STREAM still has guaranteed delivery.
      
      3. In the next version only the host will be able to establish connections
         (i.e. to connect to a guest agent).  This is for security reasons since
         there is currently no ability to provide host services only to certain
         guests.  This also matches how AF_VSOCK works on modern VMware hypervisors.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c402293b
    • Asias He's avatar
      VSOCK: Add Makefile and Kconfig · 8a2a2029
      Asias He authored
      Enable virtio-vsock and vhost-vsock.
      Signed-off-by: default avatarAsias He <asias@redhat.com>
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8a2a2029
    • Asias He's avatar
      VSOCK: Introduce vhost-vsock.ko · 98bb8928
      Asias He authored
      VM sockets vhost transport implementation. This module runs in host
      kernel.
      Signed-off-by: default avatarAsias He <asias@redhat.com>
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      98bb8928
    • Asias He's avatar
      VSOCK: Introduce virtio-vsock.ko · 32e61b06
      Asias He authored
      VM sockets virtio transport implementation. This module runs in guest
      kernel.
      Signed-off-by: default avatarAsias He <asias@redhat.com>
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      32e61b06
    • Asias He's avatar
      VSOCK: Introduce virtio-vsock-common.ko · 80a19e33
      Asias He authored
      This module contains the common code and header files for the following
      virtio-vsock and virtio-vhost kernel modules.
      Signed-off-by: default avatarAsias He <asias@redhat.com>
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      80a19e33
    • Asias He's avatar
    • Roopa Prabhu's avatar
      mpls: support for dead routes · c89359a4
      Roopa Prabhu authored
      Adds support for RTNH_F_DEAD and RTNH_F_LINKDOWN flags on mpls
      routes due to link events. Also adds code to ignore dead
      routes during route selection.
      
      Unlike ip routes, mpls routes are not deleted when the route goes
      dead. This is current mpls behaviour and this patch does not change
      that. With this patch however, routes will be marked dead.
      dead routes are not notified to userspace (this is consistent with ipv4
      routes).
      
      dead routes:
      -----------
      $ip -f mpls route show
      100
          nexthop as to 200 via inet 10.1.1.2  dev swp1
          nexthop as to 700 via inet 10.1.1.6  dev swp2
      
      $ip link set dev swp1 down
      
      $ip link show dev swp1
      4: swp1: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN mode
      DEFAULT group default qlen 1000
          link/ether 00:02:00:00:00:01 brd ff:ff:ff:ff:ff:ff
      
      $ip -f mpls route show
      100
          nexthop as to 200 via inet 10.1.1.2  dev swp1 dead linkdown
          nexthop as to 700 via inet 10.1.1.6  dev swp2
      
      linkdown routes:
      ----------------
      $ip -f mpls route show
      100
          nexthop as to 200 via inet 10.1.1.2  dev swp1
          nexthop as to 700 via inet 10.1.1.6  dev swp2
      
      $ip link show dev swp1
      4: swp1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
      state UP mode DEFAULT group default qlen 1000
          link/ether 00:02:00:00:00:01 brd ff:ff:ff:ff:ff:ff
      
      /* carrier goes down */
      $ip link show dev swp1
      4: swp1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast
      state DOWN mode DEFAULT group default qlen 1000
          link/ether 00:02:00:00:00:01 brd ff:ff:ff:ff:ff:ff
      
      $ip -f mpls route show
      100
          nexthop as to 200 via inet 10.1.1.2  dev swp1 linkdown
          nexthop as to 700 via inet 10.1.1.6  dev swp2
      Signed-off-by: default avatarRoopa Prabhu <roopa@cumulusnetworks.com>
      Acked-by: default avatarRobert Shearman <rshearma@brocade.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c89359a4
    • Vladimir Zapolskiy's avatar
      net: lpc_eth: remove irq > NR_IRQS check from probe() · 39198ec9
      Vladimir Zapolskiy authored
      If the driver is used on an ARM platform with SPARSE_IRQ defined,
      semantics of NR_IRQS is different (minimal value of virtual irqs) and
      by default it is set to 16, see arch/arm/include/asm/irq.h.
      
      This value may be less than the actual number of virtual irqs, which
      may break the driver initialization. The check removal allows to use
      the driver on such a platform, and, if irq controller driver works
      correctly, the check is not needed on legacy platforms.
      
      Fixes a runtime problem:
      
          lpc-eth 31060000.ethernet: error getting resources.
          lpc_eth: lpc-eth: not found (-6).
      Signed-off-by: default avatarVladimir Zapolskiy <vz@mleia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      39198ec9
    • David S. Miller's avatar
      Merge branch 'rsvb-compat-strings' · 9f4842a8
      David S. Miller authored
      Simon Horman says:
      
      ====================
      ravb: More compatibility strings
      
      this short series adds generic gen2 and gen3, and soc-specific
      compatibility strings for the missing gen2 SoCs.
      
      Key Changes in v2:
      * Include "rcar-" in generic bindings
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9f4842a8
    • Simon Horman's avatar
      ravb: add device tree support for r8a779[123] · af8002d3
      Simon Horman authored
      Simply document new compatibility strings.
      As a previous patch adds a generic R-Car Gen2 compatibility string
      there appears to be no need for a driver updates.
      Signed-off-by: default avatarSimon Horman <horms+renesas@verge.net.au>
      Acked-by: default avatarRob Herring <robh@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      af8002d3
    • Simon Horman's avatar
      ravb: add fallback compatibility strings · 0e874361
      Simon Horman authored
      Add fallback compatibility strings for R-Car Gen 2 & 3 SoC Families.
      This is in keeping with the fallback scheme being adopted wherever appropriate
      for drivers for Renesas SoCs.
      Signed-off-by: default avatarSimon Horman <horms+renesas@verge.net.au>
      Acked-by: default avatarRob Herring <robh@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0e874361
    • Eric Dumazet's avatar
      net_sched: fix qdisc_tree_decrease_qlen() races · 4eaf3b84
      Eric Dumazet authored
      qdisc_tree_decrease_qlen() suffers from two problems on multiqueue
      devices.
      
      One problem is that it updates sch->q.qlen and sch->qstats.drops
      on the mq/mqprio root qdisc, while it should not : Daniele
      reported underflows errors :
      [  681.774821] PAX: sch->q.qlen: 0 n: 1
      [  681.774825] PAX: size overflow detected in function qdisc_tree_decrease_qlen net/sched/sch_api.c:769 cicus.693_49 min, count: 72, decl: qlen; num: 0; context: sk_buff_head;
      [  681.774954] CPU: 2 PID: 19 Comm: ksoftirqd/2 Tainted: G           O    4.2.6.201511282239-1-grsec #1
      [  681.774955] Hardware name: ASUSTeK COMPUTER INC. X302LJ/X302LJ, BIOS X302LJ.202 03/05/2015
      [  681.774956]  ffffffffa9a04863 0000000000000000 0000000000000000 ffffffffa990ff7c
      [  681.774959]  ffffc90000d3bc38 ffffffffa95d2810 0000000000000007 ffffffffa991002b
      [  681.774960]  ffffc90000d3bc68 ffffffffa91a44f4 0000000000000001 0000000000000001
      [  681.774962] Call Trace:
      [  681.774967]  [<ffffffffa95d2810>] dump_stack+0x4c/0x7f
      [  681.774970]  [<ffffffffa91a44f4>] report_size_overflow+0x34/0x50
      [  681.774972]  [<ffffffffa94d17e2>] qdisc_tree_decrease_qlen+0x152/0x160
      [  681.774976]  [<ffffffffc02694b1>] fq_codel_dequeue+0x7b1/0x820 [sch_fq_codel]
      [  681.774978]  [<ffffffffc02680a0>] ? qdisc_peek_dequeued+0xa0/0xa0 [sch_fq_codel]
      [  681.774980]  [<ffffffffa94cd92d>] __qdisc_run+0x4d/0x1d0
      [  681.774983]  [<ffffffffa949b2b2>] net_tx_action+0xc2/0x160
      [  681.774985]  [<ffffffffa90664c1>] __do_softirq+0xf1/0x200
      [  681.774987]  [<ffffffffa90665ee>] run_ksoftirqd+0x1e/0x30
      [  681.774989]  [<ffffffffa90896b0>] smpboot_thread_fn+0x150/0x260
      [  681.774991]  [<ffffffffa9089560>] ? sort_range+0x40/0x40
      [  681.774992]  [<ffffffffa9085fe4>] kthread+0xe4/0x100
      [  681.774994]  [<ffffffffa9085f00>] ? kthread_worker_fn+0x170/0x170
      [  681.774995]  [<ffffffffa95d8d1e>] ret_from_fork+0x3e/0x70
      
      mq/mqprio have their own ways to report qlen/drops by folding stats on
      all their queues, with appropriate locking.
      
      A second problem is that qdisc_tree_decrease_qlen() calls qdisc_lookup()
      without proper locking : concurrent qdisc updates could corrupt the list
      that qdisc_match_from_root() parses to find a qdisc given its handle.
      
      Fix first problem adding a TCQ_F_NOPARENT qdisc flag that
      qdisc_tree_decrease_qlen() can use to abort its tree traversal,
      as soon as it meets a mq/mqprio qdisc children.
      
      Second problem can be fixed by RCU protection.
      Qdisc are already freed after RCU grace period, so qdisc_list_add() and
      qdisc_list_del() simply have to use appropriate rcu list variants.
      
      A future patch will add a per struct netdev_queue list anchor, so that
      qdisc_tree_decrease_qlen() can have more efficient lookups.
      Reported-by: default avatarDaniele Fucini <dfucini@gmail.com>
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Cc: Cong Wang <cwang@twopensource.com>
      Cc: Jamal Hadi Salim <jhs@mojatatu.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4eaf3b84
    • Phil Sutter's avatar
      net: ipv6: restrict hop_limit sysctl setting to range [1; 255] · d6df198d
      Phil Sutter authored
      Setting a value bigger than 255 resulted in using only the lower eight
      bits of that value as it is assigned to the u8 header field. To avoid
      this unexpected result, reject such values.
      
      Setting a value of zero is technically possible, but hosts receiving
      such a packet have to treat it like hop_limit was set to one, according
      to RFC2460. Therefore I don't see a use-case for that.
      
      Setting a route's hop_limit to zero in iproute2 means to use the sysctl
      default, which is not the case here: Setting e.g.
      net.conf.eth0.hop_limit=0 will not make the kernel use
      net.conf.all.hop_limit for outgoing packets on eth0. To avoid these
      kinds of confusion, reject zero.
      Signed-off-by: default avatarPhil Sutter <phil@nwl.cc>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d6df198d
    • Paolo Abeni's avatar
      openvswitch: fix hangup on vxlan/gre/geneve device deletion · 13175303
      Paolo Abeni authored
      Each openvswitch tunnel vport (vxlan,gre,geneve) holds a reference
      to the underlying tunnel device, but never released it when such
      device is deleted.
      Deleting the underlying device via the ip tool cause the kernel to
      hangup in the netdev_wait_allrefs() loop.
      This commit ensure that on device unregistration dp_detach_port_notify()
      is called for all vports that hold the device reference, properly
      releasing it.
      
      Fixes: 614732ea ("openvswitch: Use regular VXLAN net_device device")
      Fixes: b2acd1dc ("openvswitch: Use regular GRE net_device instead of vport")
      Fixes: 6b001e68 ("openvswitch: Use Geneve device.")
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      Acked-by: default avatarFlavio Leitner <fbl@sysclose.org>
      Acked-by: default avatarPravin B Shelar <pshelar@nicira.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      13175303
    • Kazuya Mizuguchi's avatar
      ravb: ptp: Add CONFIG mode support · f5d7837f
      Kazuya Mizuguchi authored
      This patch makes PTP support active in CONFIG mode on R-Car Gen3.
      Signed-off-by: default avatarKazuya Mizuguchi <kazuya.mizuguchi.ks@renesas.com>
      Signed-off-by: default avatarYoshihiro Kaneko <ykaneko0929@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f5d7837f
    • David S. Miller's avatar
      Merge branch 'netronome-NFP4000-NFP6000' · 03b01cf5
      David S. Miller authored
      Jakub Kicinski says:
      
      ====================
      Netronome NFP4000/NFP6000 NIC VF driver
      
      This patchset adds support for VFs of Netronome's NFP-4000 and NFP-6000
      based NICs. We are currently also preparing the submission for the PF
      driver, but it is not quite ready yet. The PF driver can be found on
      GitHub:
      
      https://github.com/Netronome/nfp-drv-kmods
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      03b01cf5
    • Jakub Kicinski's avatar
      net: add driver for Netronome NFP4000/NFP6000 NIC VFs · 4c352362
      Jakub Kicinski authored
      Add driver for Virtual Functions for the Netronome's
      NFP-4000 and NFP-6000 based NICs.
      Signed-off-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
      Signed-off-by: default avatarRolf Neugebauer <rolf.neugebauer@netronome.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4c352362
    • Jakub Kicinski's avatar
      pci_ids: add Netronome Systems vendor · 2d1e0254
      Jakub Kicinski authored
      Add PCI vendor id for Netronome Systems.
      Signed-off-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
      Signed-off-by: default avatarRolf Neugebauer <rolf.neugebauer@netronome.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2d1e0254