Skip to content
  1. Mar 22, 2016
    • Miklos Szeredi's avatar
      ovl: verify upper dentry before unlink and rename · 11f37104
      Miklos Szeredi authored
      
      
      Unlink and rename in overlayfs checked the upper dentry for staleness by
      verifying upper->d_parent against upperdir.  However the dentry can go
      stale also by being unhashed, for example.
      
      Expand the verification to actually look up the name again (under parent
      lock) and check if it matches the upper dentry.  This matches what the VFS
      does before passing the dentry to filesytem's unlink/rename methods, which
      excludes any inconsistency caused by overlayfs.
      
      Signed-off-by: default avatarMiklos Szeredi <mszeredi@redhat.com>
      11f37104
  2. Mar 20, 2016
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 3c2de27d
      Linus Torvalds authored
      Pull vfs updates from Al Viro:
      
       - Preparations of parallel lookups (the remaining main obstacle is the
         need to move security_d_instantiate(); once that becomes safe, the
         rest will be a matter of rather short series local to fs/*.c
      
       - preadv2/pwritev2 series from Christoph
      
       - assorted fixes
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (32 commits)
        splice: handle zero nr_pages in splice_to_pipe()
        vfs: show_vfsstat: do not ignore errors from show_devname method
        dcache.c: new helper: __d_add()
        don't bother with __d_instantiate(dentry, NULL)
        untangle fsnotify_d_instantiate() a bit
        uninline d_add()
        replace d_add_unique() with saner primitive
        quota: use lookup_one_len_unlocked()
        cifs_get_root(): use lookup_one_len_unlocked()
        nfs_lookup: don't bother with d_instantiate(dentry, NULL)
        kill dentry_unhash()
        ceph_fill_trace(): don't bother with d_instantiate(dn, NULL)
        autofs4: don't bother with d_instantiate(dentry, NULL) in ->lookup()
        configfs: move d_rehash() into configfs_create() for regular files
        ceph: don't bother with d_rehash() in splice_dentry()
        namei: teach lookup_slow() to skip revalidate
        namei: massage lookup_slow() to be usable by lookup_one_len_unlocked()
        lookup_one_len_unlocked(): use lookup_dcache()
        namei: simplify invalidation logics in lookup_dcache()
        namei: change calling conventions for lookup_{fast,slow} and follow_managed()
        ...
      3c2de27d
    • Linus Torvalds's avatar
      Merge branch 'stable-4.6' of git://git.infradead.org/users/pcmoore/audit · 51b3eae8
      Linus Torvalds authored
      Pull audit updates from Paul Moore:
       "A small set of patches for audit this time; just three in total and
        one is a spelling fix.
      
        The two patches with actual content are designed to help prevent new
        instances of auditd from displacing an existing, functioning auditd
        and to generate a log of the attempt.  Not to worry, dead/stuck auditd
        instances can still be replaced by a new instance without problem.
      
        Nothing controversial, and everything passes our regression suite"
      
      * 'stable-4.6' of git://git.infradead.org/users/pcmoore/audit:
        audit: Fix typo in comment
        audit: log failed attempts to change audit_pid configuration
        audit: stop an old auditd being starved out by a new auditd
      51b3eae8
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm · de06dbfa
      Linus Torvalds authored
      Pull ARM updates from Russell King:
       "Another mixture of changes this time around:
      
         - Split XIP linker file from main linker file to make it more
           maintainable, and various XIP fixes, and clean up a resulting
           macro.
      
         - Decompressor cleanups from Masahiro Yamada
      
         - Avoid printing an error for a missing L2 cache
      
         - Remove some duplicated symbols in System.map, and move
           vectors/stubs back into kernel VMA
      
         - Various low priority fixes from Arnd
      
         - Updates to allow bus match functions to return negative errno
           values, touching some drivers and the driver core.  Greg has acked
           these changes.
      
         - Virtualisation platform udpates form Jean-Philippe Brucker.
      
         - Security enhancements from Kees Cook
      
         - Rework some Kconfig dependencies and move PSCI idle management code
           out of arch/arm into drivers/firmware/psci.c
      
         - ARM DMA mapping updates, touching media, acked by Mauro.
      
         - Fix places in ARM code which should be using virt_to_idmap() so
           that Keystone2 can work.
      
         - Fix Marvell Tauros2 to work again with non-DT boots.
      
         - Provide a delay timer for ARM Orion platforms"
      
      * 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm: (45 commits)
        ARM: 8546/1: dma-mapping: refactor to fix coherent+cma+gfp=0
        ARM: 8547/1: dma-mapping: store buffer information
        ARM: 8543/1: decompressor: rename suffix_y to compress-y
        ARM: 8542/1: decompressor: merge piggy.*.S and simplify Makefile
        ARM: 8541/1: decompressor: drop redundant FORCE in Makefile
        ARM: 8540/1: decompressor: use clean-files instead of extra-y to clean files
        ARM: 8539/1: decompressor: drop more unneeded assignments to "targets"
        ARM: 8538/1: decompressor: drop unneeded assignments to "targets"
        ARM: 8532/1: uncompress: mark putc as inline
        ARM: 8531/1: turn init_new_context into an inline function
        ARM: 8530/1: remove VIRT_TO_BUS
        ARM: 8537/1: drop unused DEBUG_RODATA from XIP_KERNEL
        ARM: 8536/1: mm: hide __start_rodata_section_aligned for non-debug builds
        ARM: 8535/1: mm: DEBUG_RODATA makes no sense with XIP_KERNEL
        ARM: 8534/1: virt: fix hyp-stub build for pre-ARMv7 CPUs
        ARM: make the physical-relative calculation more obvious
        ARM: 8512/1: proc-v7.S: Adjust stack address when XIP_KERNEL
        ARM: 8411/1: Add default SPARSEMEM settings
        ARM: 8503/1: clk_register_clkdev: remove format string interface
        ARM: 8529/1: remove 'i' and 'zi' targets
        ...
      de06dbfa
    • Linus Torvalds's avatar
      Merge tag 'tag-sh-for-4.6' of git://git.libc.org/linux-sh · b31a3bc3
      Linus Torvalds authored
      Pull arch/sh updates from Rich Felker:
       "This includes minor cleanups, a fix for a crash that likely affects
        all sh models with MMU, and introduction of a framework for boards
        described by device tree, which sets the stage for future J2 support"
      
      * tag 'tag-sh-for-4.6' of git://git.libc.org/linux-sh:
        sched/preempt, sh: kmap_coherent relies on disabled preemption
        sh: add SMP method selection to device tree pseudo-board
        sh: add device tree support and generic board using device tree
        sh: remove arch-specific localtimer and use generic one
        sh: make MMU-specific SMP code conditional on CONFIG_MMU
        sh: provide unified syscall trap compatible with all SH models
        sh: New gcc support
        sh: Disable trace for kernel uncompressing.
        sh: Use generic clkdev.h header
      b31a3bc3
    • Linus Torvalds's avatar
      Merge tag 'powerpc-4.6-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux · d5e2d008
      Linus Torvalds authored
      Pull powerpc updates from Michael Ellerman:
       "This was delayed a day or two by some build-breakage on old toolchains
        which we've now fixed.
      
        There's two PCI commits both acked by Bjorn.
      
        There's one commit to mm/hugepage.c which is (co)authored by Kirill.
      
        Highlights:
         - Restructure Linux PTE on Book3S/64 to Radix format from Paul
           Mackerras
         - Book3s 64 MMU cleanup in preparation for Radix MMU from Aneesh
           Kumar K.V
         - Add POWER9 cputable entry from Michael Neuling
         - FPU/Altivec/VSX save/restore optimisations from Cyril Bur
         - Add support for new ftrace ABI on ppc64le from Torsten Duwe
      
        Various cleanups & minor fixes from:
         - Adam Buchbinder, Andrew Donnellan, Balbir Singh, Christophe Leroy,
           Cyril Bur, Luis Henriques, Madhavan Srinivasan, Pan Xinhui, Russell
           Currey, Sukadev Bhattiprolu, Suraj Jitindar Singh.
      
        General:
         - atomics: Allow architectures to define their own __atomic_op_*
           helpers from Boqun Feng
         - Implement atomic{, 64}_*_return_* variants and acquire/release/
           relaxed variants for (cmp)xchg from Boqun Feng
         - Add powernv_defconfig from Jeremy Kerr
         - Fix BUG_ON() reporting in real mode from Balbir Singh
         - Add xmon command to dump OPAL msglog from Andrew Donnellan
         - Add xmon command to dump process/task similar to ps(1) from Douglas
           Miller
         - Clean up memory hotplug failure paths from David Gibson
      
        pci/eeh:
         - Redesign SR-IOV on PowerNV to give absolute isolation between VFs
           from Wei Yang.
         - EEH Support for SRIOV VFs from Wei Yang and Gavin Shan.
         - PCI/IOV: Rename and export virtfn_{add, remove} from Wei Yang
         - PCI: Add pcibios_bus_add_device() weak function from Wei Yang
         - MAINTAINERS: Update EEH details and maintainership from Russell
           Currey
      
        cxl:
         - Support added to the CXL driver for running on both bare-metal and
           hypervisor systems, from Christophe Lombard and Frederic Barrat.
         - Ignore probes for virtual afu pci devices from Vaibhav Jain
      
        perf:
         - Export Power8 generic and cache events to sysfs from Sukadev
           Bhattiprolu
         - hv-24x7: Fix usage with chip events, display change in counter
           values, display domain indices in sysfs, eliminate domain suffix in
           event names, from Sukadev Bhattiprolu
      
        Freescale:
         - Updates from Scott: "Highlights include 8xx optimizations, 32-bit
           checksum optimizations, 86xx consolidation, e5500/e6500 cpu
           hotplug, more fman and other dt bits, and minor fixes/cleanup"
      
      * tag 'powerpc-4.6-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: (179 commits)
        powerpc: Fix unrecoverable SLB miss during restore_math()
        powerpc/8xx: Fix do_mtspr_cpu6() build on older compilers
        powerpc/rcpm: Fix build break when SMP=n
        powerpc/book3e-64: Use hardcoded mttmr opcode
        powerpc/fsl/dts: Add "jedec,spi-nor" flash compatible
        powerpc/T104xRDB: add tdm riser card node to device tree
        powerpc32: PAGE_EXEC required for inittext
        powerpc/mpc85xx: Add pcsphy nodes to FManV3 device tree
        powerpc/mpc85xx: Add MDIO bus muxing support to the board device tree(s)
        powerpc/86xx: Introduce and use common dtsi
        powerpc/86xx: Update device tree
        powerpc/86xx: Move dts files to fsl directory
        powerpc/86xx: Switch to kconfig fragments approach
        powerpc/86xx: Update defconfigs
        powerpc/86xx: Consolidate common platform code
        powerpc32: Remove one insn in mulhdu
        powerpc32: small optimisation in flush_icache_range()
        powerpc: Simplify test in __dma_sync()
        powerpc32: move xxxxx_dcache_range() functions inline
        powerpc32: Remove clear_pages() and define clear_page() inline
        ...
      d5e2d008
    • Linus Torvalds's avatar
      Merge tag 'devicetree-for-4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux · 31e18236
      Linus Torvalds authored
      Pull DeviceTree updates from Rob Herring:
      
       - new tool 'dtx_diff' to diff DT files
      
       - sync kernel's dtc/libfdt to current dtc repo master
      
       - fix for reserved memory regions located in highmem
      
       - document standard unit suffixes for DT properties
      
       - various DT binding doc updates
      
      * tag 'devicetree-for-4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux:
        of: Add vendor prefix for eGalax_eMPIA Technology Inc
        Input: ads7846: Add description how to use internal reference (ADS7846)
        ARM: realview: add EB syscon variants to bindings
        devicetree: bindings: ARM: Use "uV" for micro-volt
        serial: fsl-imx-uart: Fix typo in fsl,dte-mode description
        of: add 'const' for of_property_*_string*() parameter '*np'
        of/unittest: fix infinite loop in of_unittest_destroy_tracked_overlays()
        of: alloc anywhere from memblock if range not specified
        kbuild: Allow using host dtc instead of kernel's copy
        of: resolver: Add missing of_node_get and of_node_put
        of: Add United Radiant Technology Corporation vendor prefix
        dt/bindings: add documentation on standard property unit suffixes
        scripts/dtc: Update to upstream commit b06e55c88b9b
        ARM: boot: Add an implementation of strnlen for libfdt
        scripts/dtc: dtx_diff - add info to error message
        dtc: create tool to diff device trees
      31e18236
    • 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
  3. Mar 19, 2016
    • 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
    • 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