1. 30 Mar, 2016 2 commits
  2. 20 Mar, 2016 4 commits
  3. 19 Mar, 2016 19 commits
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next · 1200b680
      Linus Torvalds authored
      Pull networking updates from David Miller:
       "Highlights:
      
         1) Support more Realtek wireless chips, from Jes Sorenson.
      
         2) New BPF types for per-cpu hash and arrap maps, from Alexei
            Starovoitov.
      
         3) Make several TCP sysctls per-namespace, from Nikolay Borisov.
      
         4) Allow the use of SO_REUSEPORT in order to do per-thread processing
         of incoming TCP/UDP connections.  The muxing can be done using a
         BPF program which hashes the incoming packet.  From Craig Gallek.
      
         5) Add a multiplexer for TCP streams, to provide a messaged based
            interface.  BPF programs can be used to determine the message
            boundaries.  From Tom Herbert.
      
         6) Add 802.1AE MACSEC support, from Sabrina Dubroca.
      
         7) Avoid factorial complexity when taking down an inetdev interface
            with lots of configured addresses.  We were doing things like
            traversing the entire address less for each address removed, and
            flushing the entire netfilter conntrack table for every address as
            well.
      
         8) Add and use SKB bulk free infrastructure, from Jesper Brouer.
      
         9) Allow offloading u32 classifiers to hardware, and implement for
            ixgbe, from John Fastabend.
      
        10) Allow configuring IRQ coalescing parameters on a per-queue basis,
            from Kan Liang.
      
        11) Extend ethtool so that larger link mode masks can be supported.
            From David Decotigny.
      
        12) Introduce devlink, which can be used to configure port link types
            (ethernet vs Infiniband, etc.), port splitting, and switch device
            level attributes as a whole.  From Jiri Pirko.
      
        13) Hardware offload support for flower classifiers, from Amir Vadai.
      
        14) Add "Local Checksum Offload".  Basically, for a tunneled packet
            the checksum of the outer header is 'constant' (because with the
            checksum field filled into the inner protocol header, the payload
            of the outer frame checksums to 'zero'), and we can take advantage
            of that in various ways.  From Edward Cree"
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1548 commits)
        bonding: fix bond_get_stats()
        net: bcmgenet: fix dma api length mismatch
        net/mlx4_core: Fix backward compatibility on VFs
        phy: mdio-thunder: Fix some Kconfig typos
        lan78xx: add ndo_get_stats64
        lan78xx: handle statistics counter rollover
        RDS: TCP: Remove unused constant
        RDS: TCP: Add sysctl tunables for sndbuf/rcvbuf on rds-tcp socket
        net: smc911x: convert pxa dma to dmaengine
        team: remove duplicate set of flag IFF_MULTICAST
        bonding: remove duplicate set of flag IFF_MULTICAST
        net: fix a comment typo
        ethernet: micrel: fix some error codes
        ip_tunnels, bpf: define IP_TUNNEL_OPTS_MAX and use it
        bpf, dst: add and use dst_tclassid helper
        bpf: make skb->tc_classid also readable
        net: mvneta: bm: clarify dependencies
        cls_bpf: reset class and reuse major in da
        ldmvsw: Checkpatch sunvnet.c and sunvnet_common.c
        ldmvsw: Add ldmvsw.c driver code
        ...
      1200b680
    • Linus Torvalds's avatar
      Merge branch 'for-4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup · 6b5f04b6
      Linus Torvalds authored
      Pull cgroup updates from Tejun Heo:
       "cgroup changes for v4.6-rc1.  No userland visible behavior changes in
        this pull request.  I'll send out a separate pull request for the
        addition of cgroup namespace support.
      
         - The biggest change is the revamping of cgroup core task migration
           and controller handling logic.  There are quite a few places where
           controllers and tasks are manipulated.  Previously, many of those
           places implemented custom operations for each specific use case
           assuming specific starting conditions.  While this worked, it makes
           the code fragile and difficult to follow.
      
           The bulk of this pull request restructures these operations so that
           most related operations are performed through common helpers which
           implement recursive (subtrees are always processed consistently)
           and idempotent (they make cgroup hierarchy converge to the target
           state rather than performing operations assuming specific starting
           conditions).  This makes the code a lot easier to understand,
           verify and extend.
      
         - Implicit controller support is added.  This is primarily for using
           perf_event on the v2 hierarchy so that perf can match cgroup v2
           path without requiring the user to do anything special.  The kernel
           portion of perf_event changes is acked but userland changes are
           still pending review.
      
         - cgroup_no_v1= boot parameter added to ease testing cgroup v2 in
           certain environments.
      
         - There is a regression introduced during v4.4 devel cycle where
           attempts to migrate zombie tasks can mess up internal object
           management.  This was fixed earlier this week and included in this
           pull request w/ stable cc'd.
      
         - Misc non-critical fixes and improvements"
      
      * 'for-4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup: (44 commits)
        cgroup: avoid false positive gcc-6 warning
        cgroup: ignore css_sets associated with dead cgroups during migration
        Documentation: cgroup v2: Trivial heading correction.
        cgroup: implement cgroup_subsys->implicit_on_dfl
        cgroup: use css_set->mg_dst_cgrp for the migration target cgroup
        cgroup: make cgroup[_taskset]_migrate() take cgroup_root instead of cgroup
        cgroup: move migration destination verification out of cgroup_migrate_prepare_dst()
        cgroup: fix incorrect destination cgroup in cgroup_update_dfl_csses()
        cgroup: Trivial correction to reflect controller.
        cgroup: remove stale item in cgroup-v1 document INDEX file.
        cgroup: update css iteration in cgroup_update_dfl_csses()
        cgroup: allocate 2x cgrp_cset_links when setting up a new root
        cgroup: make cgroup_calc_subtree_ss_mask() take @this_ss_mask
        cgroup: reimplement rebind_subsystems() using cgroup_apply_control() and friends
        cgroup: use cgroup_apply_enable_control() in cgroup creation path
        cgroup: combine cgroup_mutex locking and offline css draining
        cgroup: factor out cgroup_{apply|finalize}_control() from cgroup_subtree_control_write()
        cgroup: introduce cgroup_{save|propagate|restore}_control()
        cgroup: make cgroup_drain_offline() and cgroup_apply_control_{disable|enable}() recursive
        cgroup: factor out cgroup_apply_control_enable() from cgroup_subtree_control_write()
        ...
      6b5f04b6
    • Eric Dumazet's avatar
      bonding: fix bond_get_stats() · fe30937b
      Eric Dumazet authored
      bond_get_stats() can be called from rtnetlink (with RTNL held)
      or from /proc/net/dev seq handler (with RCU held)
      
      The logic added in commit 5f0c5f73 ("bonding: make global bonding
      stats more reliable") kind of assumed only one cpu could run there.
      
      If multiple threads are reading /proc/net/dev, stats can be really
      messed up after a while.
      
      A second problem is that some fields are 32bit, so we need to properly
      handle the wrap around problem.
      
      Given that RTNL is not always held, we need to use
      bond_for_each_slave_rcu().
      
      Fixes: 5f0c5f73 ("bonding: make global bonding stats more reliable")
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Cc: Andy Gospodarek <gospo@cumulusnetworks.com>
      Cc: Jay Vosburgh <j.vosburgh@gmail.com>
      Cc: Veaceslav Falico <vfalico@gmail.com>
      Reviewed-by: default avatarNikolay Aleksandrov <nikolay@cumulusnetworks.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      fe30937b
    • Eric Dumazet's avatar
      net: bcmgenet: fix dma api length mismatch · eee57723
      Eric Dumazet authored
      When un-mapping skb->data in __bcmgenet_tx_reclaim(),
      we must use the length that was used in original dma_map_single(),
      instead of skb->len that might be bigger (includes the frags)
      
      We simply can store skb_len into tx_cb_ptr->dma_len and use it
      at unmap time.
      
      Fixes: 1c1008c7 ("net: bcmgenet: add main driver file")
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Acked-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      eee57723
    • Eli Cohen's avatar
      net/mlx4_core: Fix backward compatibility on VFs · 76e39ccf
      Eli Cohen authored
      Commit 85743f1e ("net/mlx4_core: Set UAR page size to 4KB regardless
      of system page size") introduced dependency where old VF drivers without
      this fix fail to load if the PF driver runs with this commit.
      
      To resolve this add a module parameter which disables that functionality
      by default.  If both the PF and VFs are running with a driver with that
      commit the administrator may set the module param to true.
      
      The module parameter is called enable_4k_uar.
      
      Fixes: 85743f1e ('net/mlx4_core: Set UAR page size to 4KB ...')
      Signed-off-by: default avatarEli Cohen <eli@mellanox.com>
      Tested-by: default avatarAlexey Kardashevskiy <aik@ozlabs.ru>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      76e39ccf
    • Linus Torvalds's avatar
      Merge branch 'for-4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata · fcab86ad
      Linus Torvalds authored
      Pull libata updates from Tejun Heo:
      
       - ahci grew runtime power management support so that the controller can
         be turned off if no devices are attached.
      
       - sata_via isn't dead yet.  It got hotplug support and more refined
         workaround for certain WD drives.
      
       - Misc cleanups.  There's a merge from for-4.5-fixes to avoid confusing
         conflicts in ahci PCI ID table.
      
      * 'for-4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata:
        ata: ahci_xgene: dereferencing uninitialized pointer in probe
        AHCI: Remove obsolete Intel Lewisburg SATA RAID device IDs
        ata: sata_rcar: Use ARCH_RENESAS
        sata_via: Implement hotplug for VT6421
        sata_via: Apply WD workaround only when needed on VT6421
        ahci: Add runtime PM support for the host controller
        ahci: Add functions to manage runtime PM of AHCI ports
        ahci: Convert driver to use modern PM hooks
        ahci: Cache host controller version
        scsi: Drop runtime PM usage count after host is added
        scsi: Set request queue runtime PM status back to active on resume
        block: Add blk_set_runtime_active()
        ata: ahci_mvebu: add support for Armada 3700 variant
        libata: fix unbalanced spin_lock_irqsave/spin_unlock_irq() in ata_scsi_park_show()
        libata: support AHCI on OCTEON platform
      fcab86ad
    • Linus Torvalds's avatar
      Merge branch 'for-4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq · ef504fa5
      Linus Torvalds authored
      Pull workqueue updates from Tejun Heo:
       "Three trivial workqueue changes"
      
      * 'for-4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:
        workqueue: Fix comment for work_on_cpu()
        sched/core: Get rid of 'cpu' argument in wq_worker_sleeping()
        workqueue: Replace usage of init_name with dev_set_name()
      ef504fa5
    • Andreas Färber's avatar
      phy: mdio-thunder: Fix some Kconfig typos · e2ad1f97
      Andreas Färber authored
      Drop two extra occurrences of "on" in option title and help text.
      
      Fixes: 379d7ac7 ("phy: mdio-thunder: Add driver for Cavium Thunder SoC MDIO buses.")
      Cc: David Daney <david.daney@cavium.com>
      Signed-off-by: default avatarAndreas Färber <afaerber@suse.de>
      Acked-by: default avatarDavid Daney <david.daney@cavium.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e2ad1f97
    • Woojung Huh's avatar
      lan78xx: add ndo_get_stats64 · a59f8c5b
      Woojung Huh authored
      Add lan78xx_get_stats64 of ndo_get_stats64 to report
      all statistics counters including errors from HW statistics.
      
      Read from HW when auto suspend is disabled, use saved counter when
      auto suspend is enabled because periodic call to ndo_get_stats64
      prevents USB auto suspend.
      Signed-off-by: default avatarWoojung Huh <woojung.huh@microchip.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a59f8c5b
    • Woojung Huh's avatar
      lan78xx: handle statistics counter rollover · 20ff5565
      Woojung Huh authored
      Update to handle statistics counter rollover.
      Check statistics counter periodically and compensate it when
      counter value rolls over at max (20 or 32bits).
      
      Simple mechanism adjusts monitoring timer to allow USB auto suspend.
      Signed-off-by: default avatarWoojung Huh <woojung.huh@microchip.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      20ff5565
    • Linus Torvalds's avatar
      Merge branch 'akpm' (patches from Andrew) · 814a2bf9
      Linus Torvalds authored
      Merge second patch-bomb from Andrew Morton:
      
       - a couple of hotfixes
      
       - the rest of MM
      
       - a new timer slack control in procfs
      
       - a couple of procfs fixes
      
       - a few misc things
      
       - some printk tweaks
      
       - lib/ updates, notably to radix-tree.
      
       - add my and Nick Piggin's old userspace radix-tree test harness to
         tools/testing/radix-tree/.  Matthew said it was a godsend during the
         radix-tree work he did.
      
       - a few code-size improvements, switching to __always_inline where gcc
         screwed up.
      
       - partially implement character sets in sscanf
      
      * emailed patches from Andrew Morton <akpm@linux-foundation.org>: (118 commits)
        sscanf: implement basic character sets
        lib/bug.c: use common WARN helper
        param: convert some "on"/"off" users to strtobool
        lib: add "on"/"off" support to kstrtobool
        lib: update single-char callers of strtobool()
        lib: move strtobool() to kstrtobool()
        include/linux/unaligned: force inlining of byteswap operations
        include/uapi/linux/byteorder, swab: force inlining of some byteswap operations
        include/asm-generic/atomic-long.h: force inlining of some atomic_long operations
        usb: common: convert to use match_string() helper
        ide: hpt366: convert to use match_string() helper
        ata: hpt366: convert to use match_string() helper
        power: ab8500: convert to use match_string() helper
        power: charger_manager: convert to use match_string() helper
        drm/edid: convert to use match_string() helper
        pinctrl: convert to use match_string() helper
        device property: convert to use match_string() helper
        lib/string: introduce match_string() helper
        radix-tree tests: add test for radix_tree_iter_next
        radix-tree tests: add regression3 test
        ...
      814a2bf9
    • David S. Miller's avatar
      Merge branch 'rds-buffer-tuning' · 7fa7728d
      David S. Miller authored
      Sowmini Varadhan says:
      
      ====================
      RDS: TCP: tunable socket buffer parameters
      
      Patch 1 uses sysctl to create tunable socket buffer size parameters.
      
      Patch 2 removes an unuused constant.
      
      v2: use sysctl
      v3: review comments from Santosh Shilimkar, Eric Dumazet
      v4: review comments from Hannes Sowa
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7fa7728d
    • Sowmini Varadhan's avatar
      RDS: TCP: Remove unused constant · a3382e40
      Sowmini Varadhan authored
      RDS_TCP_DEFAULT_BUFSIZE has been unused since commit 1edd6a14
      ("RDS-TCP: Do not bloat sndbuf/rcvbuf in rds_tcp_tune").
      Signed-off-by: default avatarSowmini Varadhan <sowmini.varadhan@oracle.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a3382e40
    • Sowmini Varadhan's avatar
      RDS: TCP: Add sysctl tunables for sndbuf/rcvbuf on rds-tcp socket · c6a58ffe
      Sowmini Varadhan authored
      Add per-net sysctl tunables to set the size of sndbuf and
      rcvbuf on the kernel tcp socket.
      
      The tunables are added at /proc/sys/net/rds/tcp/rds_tcp_sndbuf
      and /proc/sys/net/rds/tcp/rds_tcp_rcvbuf.
      
      These values must be set before accept() or connect(),
      and there may be an arbitrary number of existing rds-tcp
      sockets when the tunable is modified. To make sure that all
      connections in the netns pick up the same value for the tunable,
      we reset existing rds-tcp connections in the netns, so that
      they can reconnect with the new parameters.
      Signed-off-by: default avatarSowmini Varadhan <sowmini.varadhan@oracle.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c6a58ffe
    • Robert Jarzmik's avatar
      net: smc911x: convert pxa dma to dmaengine · 79d3b59a
      Robert Jarzmik authored
      Convert the dma transfers to be dmaengine based, now pxa has a dmaengine
      slave driver. This makes this driver a bit more PXA agnostic.
      
      The driver was only compile tested. The risk is quite small as no
      current PXA platform I'm aware of is using smc911x driver.
      Signed-off-by: default avatarRobert Jarzmik <robert.jarzmik@free.fr>
      Tested-by: default avatarFabio Estevam <fabio.estevam@nxp.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      79d3b59a
    • David S. Miller's avatar
      Merge branch 'IFF_MULTICAST-dup-sets' · c9d0bc5d
      David S. Miller authored
      Zhang Shengju says:
      
      ====================
      remove duplicate set of flag IFF_MULTICAST
      
      This patch series remove duplicate set of flag IFF_MULTICAST.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c9d0bc5d
    • Zhang Shengju's avatar
      team: remove duplicate set of flag IFF_MULTICAST · bc0df138
      Zhang Shengju authored
      Remove unnecessary set of flag IFF_MULTICAST, since ether_setup
      already does this.
      Signed-off-by: default avatarZhang Shengju <zhangshengju@cmss.chinamobile.com>
      Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bc0df138
    • Zhang Shengju's avatar
      bonding: remove duplicate set of flag IFF_MULTICAST · 1098cee6
      Zhang Shengju authored
      Remove unnecessary set of flag IFF_MULTICAST, since ether_setup
      already does this.
      Signed-off-by: default avatarZhang Shengju <zhangshengju@cmss.chinamobile.com>
      Reviewed-by: default avatarNikolay Aleksandrov <nikolay@cumulusnetworks.com>
      Signed-off-by: default avatarAndy Gospodarek <gospo@cumulusnetworks.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1098cee6
    • Linus Torvalds's avatar
      Merge branch 'for-4.6/drivers' of git://git.kernel.dk/linux-block · 237045fc
      Linus Torvalds authored
      Pull block driver updates from Jens Axboe:
       "This is the block driver pull request for this merge window.  It sits
        on top of for-4.6/core, that was just sent out.
      
        This contains:
      
         - A set of fixes for lightnvm.  One from Alan, fixing an overflow,
           and the rest from the usual suspects, Javier and Matias.
      
         - A set of fixes for nbd from Markus and Dan, and a fixup from Arnd
           for correct usage of the signed 64-bit divider.
      
         - A set of bug fixes for the Micron mtip32xx, from Asai.
      
         - A fix for the brd discard handling from Bart.
      
         - Update the maintainers entry for cciss, since that hardware has
           transferred ownership.
      
         - Three bug fixes for bcache from Eric Wheeler.
      
         - Set of fixes for xen-blk{back,front} from Jan and Konrad.
      
         - Removal of the cpqarray driver.  It has been disabled in Kconfig
           since 2013, and we were initially scheduled to remove it in 3.15.
      
         - Various updates and fixes for NVMe, with the most important being:
      
              - Removal of the per-device NVMe thread, replacing that with a
                watchdog timer instead. From Christoph.
      
              - Exposing the namespace WWID through sysfs, from Keith.
      
              - Set of cleanups from Ming Lin.
      
              - Logging the controller device name instead of the underlying
                PCI device name, from Sagi.
      
              - And a bunch of fixes and optimizations from the usual suspects
                in this area"
      
      * 'for-4.6/drivers' of git://git.kernel.dk/linux-block: (49 commits)
        NVMe: Expose ns wwid through single sysfs entry
        drivers:block: cpqarray clean up
        brd: Fix discard request processing
        cpqarray: remove it from the kernel
        cciss: update MAINTAINERS
        NVMe: Remove unused sq_head read in completion path
        bcache: fix cache_set_flush() NULL pointer dereference on OOM
        bcache: cleaned up error handling around register_cache()
        bcache: fix race of writeback thread starting before complete initialization
        NVMe: Create discard zero quirk white list
        nbd: use correct div_s64 helper
        mtip32xx: remove unneeded variable in mtip_cmd_timeout()
        lightnvm: generalize rrpc ppa calculations
        lightnvm: remove struct nvm_dev->total_blocks
        lightnvm: rename ->nr_pages to ->nr_sects
        lightnvm: update closed list outside of intr context
        xen/blback: Fit the important information of the thread in 17 characters
        lightnvm: fold get bb tbl when using dual/quad plane mode
        lightnvm: fix up nonsensical configure overrun checking
        xen-blkback: advertise indirect segment support earlier
        ...
      237045fc
  4. 18 Mar, 2016 15 commits
    • Linus Torvalds's avatar
      Merge branch 'for-4.6/core' of git://git.kernel.dk/linux-block · 35d88d97
      Linus Torvalds authored
      Pull core block updates from Jens Axboe:
       "Here are the core block changes for this merge window.  Not a lot of
        exciting stuff going on in this round, most of the changes have been
        on the driver side of things.  That pull request is coming next.  This
        pull request contains:
      
         - A set of fixes for chained bio handling from Christoph.
      
         - A tag bounds check for blk-mq from Hannes, ensuring that we don't
           do something stupid if a device reports an invalid tag value.
      
         - A set of fixes/updates for the CFQ IO scheduler from Jan Kara.
      
         - A set of blk-mq fixes from Keith, adding support for dynamic
           hardware queues, and fixing init of max_dev_sectors for stacking
           devices.
      
         - A fix for the dynamic hw context from Ming.
      
         - Enabling of cgroup writeback support on a block device, from
           Shaohua"
      
      * 'for-4.6/core' of git://git.kernel.dk/linux-block:
        blk-mq: add bounds check on tag-to-rq conversion
        block: bio_remaining_done() isn't unlikely
        block: cleanup bio_endio
        block: factor out chained bio completion
        block: don't unecessarily clobber bi_error for chained bios
        block-dev: enable writeback cgroup support
        blk-mq: Fix NULL pointer updating nr_requests
        blk-mq: mark request queue as mq asap
        block: Initialize max_dev_sectors to 0
        blk-mq: dynamic h/w context count
        cfq-iosched: Allow parent cgroup to preempt its child
        cfq-iosched: Allow sync noidle workloads to preempt each other
        cfq-iosched: Reorder checks in cfq_should_preempt()
        cfq-iosched: Don't group_idle if cfqq has big thinktime
      35d88d97
    • Zhang Shengju's avatar
      net: fix a comment typo · 93e68cd6
      Zhang Shengju authored
      Fix a comment typo.
      Signed-off-by: default avatarZhang Shengju <zhangshengju@cmss.chinamobile.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      93e68cd6
    • Dan Carpenter's avatar
      ethernet: micrel: fix some error codes · 3af0d554
      Dan Carpenter authored
      There were two issues here:
      1) dma_mapping_error() return true/false but we want to return -ENOMEM
      2) If dmaengine_prep_slave_sg() failed then "err" wasn't set but
         presumably that should be -ENOMEM as well.
      
      I changed the success path to "return 0;" instead of "return ret;" for
      clarity.
      
      Fixes: 94fe8c68 ('ks8842: Support DMA when accessed via timberdale')
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3af0d554
    • David S. Miller's avatar
      Merge branch 'bpf-misc' · 3004932c
      David S. Miller authored
      Daniel Borkmann says:
      
      ====================
      Minor BPF follow-ups
      
      Some minor last follow-ups I still had in my queue. The first one adds
      readability support for __sk_buff's tc_classid member, the remaining
      two are some minor cleanups. For details please see individual patches.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3004932c
    • Daniel Borkmann's avatar
      ip_tunnels, bpf: define IP_TUNNEL_OPTS_MAX and use it · fca5fdf6
      Daniel Borkmann authored
      eBPF defines this as BPF_TUNLEN_MAX and OVS just uses the hard-coded
      value inside struct sw_flow_key. Thus, add and use IP_TUNNEL_OPTS_MAX
      for this, which makes the code a bit more generic and allows to remove
      BPF_TUNLEN_MAX from eBPF code.
      Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      fca5fdf6
    • Daniel Borkmann's avatar
      bpf, dst: add and use dst_tclassid helper · 808c1b69
      Daniel Borkmann authored
      We can just add a small helper dst_tclassid() for retrieving the
      dst->tclassid value. It makes the code a bit better in that we can
      get rid of the ifdef from filter.c by moving this into the header.
      Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      808c1b69
    • Daniel Borkmann's avatar
      bpf: make skb->tc_classid also readable · 09c37a2c
      Daniel Borkmann authored
      Currently, the tc_classid from eBPF skb context is write-only, but there's
      no good reason for tc programs to limit it to write-only. For example,
      it can be used to transfer its state via tail calls where the resulting
      tc_classid gets filled gradually.
      Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
      Acked-by: default avatarAlexei Starovoitov <ast@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      09c37a2c
    • Arnd Bergmann's avatar
      net: mvneta: bm: clarify dependencies · 019ded3a
      Arnd Bergmann authored
      MVNETA_BM has a dependency on MVNETA, so we can only select the former
      if the latter is enabled. However, the code dependency is the reverse:
      The mvneta module can call into the mvneta_bm module, so mvneta cannot
      be a built-in if mvneta_bm is a module, or we get a link error:
      
      drivers/net/built-in.o: In function `mvneta_remove':
      drivers/net/ethernet/marvell/mvneta.c:4211: undefined reference to `mvneta_bm_pool_destroy'
      drivers/net/built-in.o: In function `mvneta_bm_update_mtu':
      drivers/net/ethernet/marvell/mvneta.c:1034: undefined reference to `mvneta_bm_bufs_free'
      
      This avoids the problem by further clarifying the dependency so that
      MVNETA_BM is a silent Kconfig option that gets turned on by the
      new MVNETA_BM_ENABLE option. This way both the core HWBM module and
      the MVNETA_BM code are always built-in when needed.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Fixes: dc35a10f ("net: mvneta: bm: add support for hardware buffer management")
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      019ded3a
    • Daniel Borkmann's avatar
      cls_bpf: reset class and reuse major in da · 3a461da1
      Daniel Borkmann authored
      There are two issues with the current code. First one is that we need
      to set res->class to 0 in case we use non-default classid matching.
      
      This is important for the case where cls_bpf was initially set up with
      an optional binding to a default class with tcf_bind_filter(), where
      the underlying qdisc implements bind_tcf() that fills res->class and
      tests for it later on when doing the classification. Convention for
      these cases is that after tc_classify() was called, such qdiscs (atm,
      drr, qfq, cbq, hfsc, htb) first test class, and if 0, then they lookup
      based on classid.
      
      Second, there's a bug with da mode, where res->classid is only assigned
      a 16 bit minor, but it needs to expand to the full 32 bit major/minor
      combination instead, therefore we need to expand with the bound major.
      This is fine as classes belonging to a classful qdisc must share the
      same major.
      
      Fixes: 045efa82 ("cls_bpf: introduce integrated actions")
      Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
      Acked-by: default avatarAlexei Starovoitov <ast@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3a461da1
    • David S. Miller's avatar
      Merge branch 'ldmvsw' · 70063e94
      David S. Miller authored
      Aaron Young says:
      
      ====================
      ldmvsw: Add ldmvsw driver
      
      This series adds a new Logical Domains vSwitch (ldmvsw) driver.
      
      The ldmvsw driver code will live in the drivers/net/ethernet/sun/
      directory and will operate on Oracle systems running SPARC Linux in a
      Logical Domains environment (typically in the control domain).
      
      The ldmvsw driver is very similar in function to the existing sunvnet
      driver. Ldmvsw creates a network interface for each "vsw-port" node
      found in the Machine Description (MD) of a service domain. These
      nodes correspond to ports on a vswitch created by the logical domains
      manager. The created network interface(s) can be used by bridge/vswitch
      software (such as the Linux bridge or Open vSwitch) to provide
      guest domain(s) with network interconnectivity or connectivity
      to a physical network.
      
      Here is a example diagram of ldmvsw driver usage in a logical
      domain environment to provide a guest domain with network connectivity
      to a physical NIC on the service domain:
      
         +----------------+             +-----------------
         | Service Domain |             |  Guest domain  |
         |                |             |                |
         |  LinuxBridge   |             |                |
         |    |    |      |             |                |
         |   NIC Ldmvsw   |             |    Sunvnet     |
         +----------------+             +----------------+
              |    |           LDC              |
             LAN   ------------------------------
      
      As stated, the sunvnet and ldmvsw drivers are _very_ similar in function.
      They both create network interface(s) to receive/transmit network
      traffic across LDC network channel(s). Since the driver is so similar
      in function to sunvnet, the approach will be as follows to integrate
      the driver and take advantage of common code:
      
      Patch #1: Split sunvnet.c driver into sunvnet.c and sunvnet_common.c
      Patch #2: Modify the sunvnet_common code and data structures to be compatible
                with both the sunvnet and ldmvsw drivers.
      Patch #3: Add the new ldmvsw.c driver code
      Patch #4: Checkpatch cleanup of the sunvnet/sunvnet_common code.
      
      NOTE - Patch#1 renames a file (sunvnet.h -> sunvnet_common.h). When generating
      the patches (using git format-patch), I had to use the --no-renames option
      otherwise patch#1 would NOT apply using 'patch -p1' - which as I
      understand is a requirement for patch acceptance. I wasn't sure if this
      is proper thing to do.  Please advise if not. Thanks.
      
      v2 changes:
        * change all EXPORT_SYMBOL declarations to EXPORT_SYMBOL_GPL
        * remove inline attribute for external function port_is_up_common()
        * Give all exported/global funcs in sunvnet_common.c a 'sunvnet_' prefix
          to avoid kernel global namespace pollution/collisions
        * ldmvsw.c: Order local variable declarations from longest to shortest line
        * ldmvsw.c: register the netdevice after all supporting state is ready/setup.
                    NOTE: The consensus at Oracle is that the following functions
                          must be done AFTER register_netdev() - this is the same
                          ordering currently used in the sunvnet driver:
                          1. sunvnet_port_add_txq_common() - needs registered netdev
                          2. napi_enable() - requires registered netdev
                          3. vio_port_up() - as soon as this function is called
                                             LDC handshake messages will come in
                                             which must be handled by the napi code.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      70063e94
    • Aaron Young's avatar
      ldmvsw: Checkpatch sunvnet.c and sunvnet_common.c · dc153f85
      Aaron Young authored
        Checkpatch updates for sunvnet.c and sunvnet_common.c.
      Signed-off-by: default avatarAaron Young <aaron.young@oracle.com>
      Signed-off-by: default avatarRashmi Narasimhan <rashmi.narasimhan@oracle.com>
      Reviewed-by: default avatarSowmini Varadhan <sowmini.varadhan@oracle.com>
      Reviewed-by: default avatarAlexandre Chartre <Alexandre.Chartre@oracle.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      dc153f85
    • Aaron Young's avatar
      ldmvsw: Add ldmvsw.c driver code · 5d01fa0c
      Aaron Young authored
        Add ldmvsw.c driver
      
        Details:
      
        The ldmvsw driver very closely follows the sunvnet.c code and makes
        use of the sunvnet_common.c code for core functionality.
      
        A significant difference between sunvnet and ldmvsw driver is
        sunvnet creates a network interface for each vnet-port *parent*
        node in the MD while the ldmvsw driver creates a network interface
        for every vsw-port node in the Machine Description (MD).
        Therefore the netdev_priv() for sunvnet is a vnet structure while
        the netdev_priv() for ldmvsw is a vnet_port structure.
      
        Vnet_port structures allocated by ldmvsw have the vsw bit set.
        When finding the net_device associated with a port, the common code keys
        off this bit to use either the net_device found in the vnet_port or the
        net_device in the vnet structure (see the VNET_PORT_TO_NET_DEVICE() macro in
        sunvnet_common.h). This scheme allows the common code to work with
        both drivers with minimal changes.
      
        Similar to Xen, network interfaces created by the ldmvsw driver will always
        have a HW Addr (i.e. mac address) of FE:FF:FF:FF:FF:FF and each will be
        assigned the devname "vif<cfg_handle>.<port_id>" - where <cfg_handle> and
        <port_id> are a unique handle/port pair assigned to the associated
        vsw-port node in the MD.
      Signed-off-by: default avatarAaron Young <aaron.young@oracle.com>
      Signed-off-by: default avatarRashmi Narasimhan <rashmi.narasimhan@oracle.com>
      Reviewed-by: default avatarSowmini Varadhan <sowmini.varadhan@oracle.com>
      Reviewed-by: default avatarAlexandre Chartre <Alexandre.Chartre@oracle.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5d01fa0c
    • Aaron Young's avatar
      ldmvsw: Make sunvnet_common compatible with ldmvsw · 67d0719f
      Aaron Young authored
        Modify sunvnet common code and data structures to be compatible
        with both sunvnet and ldmvsw drivers.
      
        Details:
      
        Sunvnet operates on "vnet-port" nodes which appear in the Machine
        Description (MD) in a guest domain. Ldmvsw operates on "vsw-port"
        nodes which appear in the MD of a service domain.
      
        A difference between the sunvnet driver and the ldmvsw driver is
        the sunvnet driver creates a network interface (i.e. a struct net_device)
        for every vnet-port *parent* "network" node. Several vnet-ports may appear
        under this common parent network node - each corresponding to a common parent
        network interface.  Conversely, since bridge/vswitch software will need
        to interface with every vsw-port in a system, the ldmvsw driver creates
        a network interface (i.e. a struct net_device) for every vsw-port - not
        every parent node as with sunvnet.  This difference required some special
        handling in the common code as explained below.
      
        There are 2 key data structures used by the sunvnet and ldmvsw drivers
        (which are now found in sunvnet_common.h):
      
        1. struct vnet_port
           This structure represents a vnet-port node in sunvnet and a vsw-port
           in the ldmvsw driver.
      
        2. struct vnet
           This structure represents a parent "network" node in sunvnet and a parent
           "virtual-network-switch" node in ldmvsw.
      
        Since the sunvnet driver allocates a net_device for every parent "network"
        node, a net_device member appears in the struct vnet. Since the ldmvsw
        driver allocates a net_device for every port, a net_device member was
        added to the vnet_port. The common code distinguishes which structure
        net_device member to use by checking a 'vsw' bit that was added to the
        vnet_port structure. See the VNET_PORT_TO_NET_DEVICE() marco in
        sunvnet_common.h.
      
        The netdev_priv() in sunvnet is allocated as a vnet. The netdev_priv()
        in ldmvsw is a vnet_port. Therefore, any place in the common code
        where a netdev_priv() call was made, a wrapper function was implemented
        in each driver to first get the vnet and/or vnet_port (in a driver
        specific way) and pass them as newly added parameters to the common
        functions (see wrapper funcs: vnet_set_rx_mode() and vnet_poll_controller()).
        Since these wrapper functions call __tx_port_find(), __tx_port_find() was
        moved from the common code back into sunvnet.c. Note - ldmvsw.c does not
        require this function.
      
        These changes also required that port_is_up() be made
        into a common function and thus it was given a _common suffix and
        exported like the other common functions.
      
        A wrapper function was also added for vnet_start_xmit_common() to pass a
        driver-specific function arg to return the port associated with a given
        struct sk_buff and struct net_device. This was required because
        vnet_start_xmit_common() grabs a lock prior to getting the associated
        port. Using a function pointer arg allowed the code to work unchanged
        without risking changes to the non-trivial locking logic in
        vnet_start_xmit_common().
      Signed-off-by: default avatarAaron Young <aaron.young@oracle.com>
      Signed-off-by: default avatarRashmi Narasimhan <rashmi.narasimhan@oracle.com>
      Reviewed-by: default avatarSowmini Varadhan <sowmini.varadhan@oracle.com>
      Reviewed-by: default avatarAlexandre Chartre <Alexandre.Chartre@oracle.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      67d0719f
    • Aaron Young's avatar
      ldmvsw: Split sunvnet driver into common code · 31762eaa
      Aaron Young authored
        Split sunvnet.c into sunvnet.c and sunvnet_common.c.
      
        Details:
      
        Since the sunvnet and ldmvsw drivers will both use common sunvnet code,
        move the functions (and support functions) anticipated to be common code
        from sunvnet.c to sunvnet_common.c. Similarly, sunvnet.h was renamed to
        sunvnet_common.h. The sunvnet_common.c code will be compiled into the
        kernel and act as a library of functions that are linked by either
        (or both) drivers when loaded.
      
        Function names for external functions in sunvnet_common.c (to be
        called by both the sunvnet and ldmvsw drivers) were tagged with a "_common"
        suffix to clearly designate them as common functions.
      
        No functional changes as of yet... just moved code verbatim to the new
        sunvnet_common.c/h files.
      
        Makefile/Kconfig support added to build sunvnet_common.c file. The code
        is included in the kernel if SUN_LDOMS is defined/selected.
      
        NOTE - per the SubmittingPatches documentation, since the code was just
        moved from one file another, the code was NOT checkpatch'd in this commit
        to aid in review.
      Signed-off-by: default avatarAaron Young <aaron.young@oracle.com>
      Signed-off-by: default avatarRashmi Narasimhan <rashmi.narasimhan@oracle.com>
      Reviewed-by: default avatarSowmini Varadhan <sowmini.varadhan@oracle.com>
      Reviewed-by: default avatarAlexandre Chartre <Alexandre.Chartre@oracle.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      31762eaa
    • Linus Torvalds's avatar
      Merge tag 'usb-4.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb · 040e3abb
      Linus Torvalds authored
      Pull USB fixes from Greg KH:
       "Here is a USB fix for the reported issue with commit 69bec725
        ("USB: core: let USB device know device node") as well as some other
        issues that have been reported so far with this merge window"
      
      * tag 'usb-4.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
        USB: uas: Reduce can_queue to MAX_CMNDS
        USB: cdc-acm: more sanity checking
        USB: usb_driver_claim_interface: add sanity checking
        usb/core: usb_alloc_dev(): fix setting of ->portnum
        USB: iowarrior: fix oops with malicious USB descriptors
      040e3abb