1. 28 Aug, 2015 32 commits
    • Alexei Starovoitov's avatar
      bpf: add support for %s specifier to bpf_trace_printk() · 8d3b7dce
      Alexei Starovoitov authored
      %s specifier makes bpf program and kernel debugging easier.
      To make sure that trace_printk won't crash the unsafe string
      is copied into stack and unsafe pointer is substituted.
      
      The following C program:
       #include <linux/fs.h>
      int foo(struct pt_regs *ctx, struct filename *filename)
      {
        void *name = 0;
      
        bpf_probe_read(&name, sizeof(name), &filename->name);
        bpf_trace_printk("executed %s\n", name);
        return 0;
      }
      
      when attached to kprobe do_execve()
      will produce output in /sys/kernel/debug/tracing/trace_pipe :
          make-13492 [002] d..1  3250.997277: : executed /bin/sh
            sh-13493 [004] d..1  3250.998716: : executed /usr/bin/gcc
           gcc-13494 [002] d..1  3250.999822: : executed /usr/lib/gcc/x86_64-linux-gnu/4.7/cc1
           gcc-13495 [002] d..1  3251.006731: : executed /usr/bin/as
           gcc-13496 [002] d..1  3251.011831: : executed /usr/lib/gcc/x86_64-linux-gnu/4.7/collect2
      collect2-13497 [000] d..1  3251.012941: : executed /usr/bin/ld
      Suggested-by: default avatarBrendan Gregg <brendan.d.gregg@gmail.com>
      Signed-off-by: default avatarAlexei Starovoitov <ast@plumgrid.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8d3b7dce
    • Alexei Starovoitov's avatar
      lib: introduce strncpy_from_unsafe() · 1a6877b9
      Alexei Starovoitov authored
      generalize FETCH_FUNC_NAME(memory, string) into
      strncpy_from_unsafe() and fix sparse warnings that were
      present in original implementation.
      Signed-off-by: default avatarAlexei Starovoitov <ast@plumgrid.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1a6877b9
    • Nikolay Aleksandrov's avatar
      netpoll: warn on netpoll_send_udp users who haven't disabled irqs · c9fd56b3
      Nikolay Aleksandrov authored
      Make sure we catch future netpoll_send_udp users who use it without
      disabling irqs and also as a hint for poll_controller users.
      Signed-off-by: default avatarNikolay Aleksandrov <nikolay@cumulusnetworks.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c9fd56b3
    • David S. Miller's avatar
      Merge branch 'phylib-simplifications' · 55cc0519
      David S. Miller authored
      Sergei Shtylyov says:
      
      ====================
      Some phylib simplifications
      
         Here's 2 patches against DaveM's 'net-next.git' repo. We simplify a bogus
      string of type casts in the 1st patch and make the code respect some coding
      standards of the networking code in the 2nd one. I may follow with fixing of
      checkpatch.pl's complaints. if I have time..
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      55cc0519
    • Sergei Shtylyov's avatar
      phylib: simplify NULL checks · ef899c07
      Sergei Shtylyov authored
      Fix scripts/checkpatch.pl's messages like:
      
      CHECK: Comparison to NULL could be written "!phydrv->read_mmd_indirect"
      
      BTW, it doesn't detect the reversed comparisons (which I've fixed as well).
      Signed-off-by: default avatarSergei Shtylyov <sergei.shtylyov@cogentembedded.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ef899c07
    • Sergei Shtylyov's avatar
      phylib: simplify bogus phy_device_create() result · d3765f08
      Sergei Shtylyov authored
      Get rid of the bogus string of type casts where ERR_PTR() is enough.
      Signed-off-by: default avatarSergei Shtylyov <sergei.shtylyov@cogentembedded.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d3765f08
    • Daniel Borkmann's avatar
      net: sched: don't break line in tc_classify loop notification · c1b3b199
      Daniel Borkmann authored
      Just some minor noise follow-up to address some stylistic issues of
      commit 3b3ae880 ("net: sched: consolidate tc_classify{,_compat}").
      Accidentally v1 instead of v2 of that commit got applied, so this
      patch adds the relative diff.
      Suggested-by: default avatarAlexei Starovoitov <ast@plumgrid.com>
      Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
      Acked-by: default avatarAlexei Starovoitov <ast@plumgrid.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c1b3b199
    • Shradha Shah's avatar
      sfc: Allow driver to cope with a lower number of VIs than it needs for RSS · b0fbdae1
      Shradha Shah authored
      Previously, the driver would refuse to load if it couldn't secure
      enough VIs from the MC to fulfill its RSS requirements.
      This was causing probe to fail on later functions in
      configurations where we'd run out of VIs, such as having many
      VFs.
      
      This change allows the driver to load with fewer VIs, down to a
      minimum of 2. A warning will be printed saying that RSS
      requirements were not met, possibly affecting performance.
      
      efx->max_tx_channels needs to be set to avoid going down the
      failure path in efx_probe_nic() immediately in the loop after the
      probe() NIC-type function.
      Also, Set rc=ENOSPC when bombing out of efx_probe_nic due to lack
      of VIs.
      Signed-off-by: default avatarShradha Shah <sshah@solarflare.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b0fbdae1
    • Hariprasad Shenai's avatar
      cxgb4: Force uninitialized state if FW in adapter is unsupported · a69265e9
      Hariprasad Shenai authored
      Forcing uninitialized state allows us to upgrade and reinitialize
      the adapter.
      
          FW_VERSION_T4 = 1.4.0.0
          FW_VERSION_T5 = 0.0.0.0
          FW_VERSION_T6 = 0.0.0.0
      At this point driver supports above and greater than above version.
      
      If FW in adapter < min FW_VERSION driver supports tries to upgrade the FW
      If FW in adapter >= FW_VERSION driver supports then it follows normal path
      Signed-off-by: default avatarHariprasad Shenai <hariprasad@chelsio.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a69265e9
    • David S. Miller's avatar
      Merge tag 'batman-adv-for-davem' of git://git.open-mesh.org/linux-merge · 8b72ca67
      David S. Miller authored
      Antonio Quartulli says:
      
      ====================
      Included changes:
      - code beautification
      - remove obsolete 'deleted' attribute for bat-gw node
      - increase internal version number
      - prevent potential access to netdev object after deregistration
      - set needed_head/tail_room for batman virtual interface
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8b72ca67
    • Valentin Rothberg's avatar
      openswitch: fix typo CONFIG_NF_CONNTRACK_LABEL · 9723e6ab
      Valentin Rothberg authored
      Fix typo in conntrack.c
      s/CONFIG_NF_CONNTRACK_LABEL/CONFIG_NF_CONNTRACK_LABELS/
      Signed-off-by: default avatarValentin Rothberg <valentinrothberg@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9723e6ab
    • David S. Miller's avatar
      Merge branch 'vrf-inetpeer' · fe55565e
      David S. Miller authored
      David Ahern says:
      
      ====================
      net: Refactor inetpeer cache and add support for VRFs
      
      Per Dave's comment on the version 1 patch adding VRF support to inetpeer
      cache by explicitly making the address + index a key. Refactored the
      inetpeer code in the process; mostly impacts the use by tcp_metrics.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      fe55565e
    • David Ahern's avatar
      net: Add support for VRFs to inetpeer cache · 192132b9
      David Ahern authored
      inetpeer caches based on address only, so duplicate IP addresses within
      a namespace return the same cached entry. Enhance the ipv4 address key
      to contain both the IPv4 address and VRF device index.
      Signed-off-by: default avatarDavid Ahern <dsa@cumulusnetworks.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      192132b9
    • David Ahern's avatar
      net: Refactor inetpeer address struct · 5345c2e1
      David Ahern authored
      Move the inetpeer_addr_base union to inetpeer_addr and drop
      inetpeer_addr_base.
      
      Both the a6 and in6_addr overlays are not needed; drop the __be32 version
      and rename in6 to a6 for consistency with ipv4. Add a new u32 array to
      the union which removes the need for the typecast in the compare function
      and the use of a consistent arg for both ipv4 and ipv6 addresses which
      makes the compare function more readable.
      Signed-off-by: default avatarDavid Ahern <dsa@cumulusnetworks.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5345c2e1
    • David Ahern's avatar
      net: Add helper function to compare inetpeer addresses · d39d14ff
      David Ahern authored
      tcp_metrics and inetpeer both have functions to compare inetpeer
      addresses. Consolidate into 1 version.
      Signed-off-by: default avatarDavid Ahern <dsa@cumulusnetworks.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d39d14ff
    • David Ahern's avatar
      net: Add set,get helpers for inetpeer addresses · 3abef286
      David Ahern authored
      Use inetpeer set,get helpers in tcp_metrics rather than peeking into
      the inetpeer_addr struct.
      Signed-off-by: default avatarDavid Ahern <dsa@cumulusnetworks.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3abef286
    • David Ahern's avatar
      net: Introduce ipv4_addr_hash and use it for tcp metrics · 72afa352
      David Ahern authored
      Refactors a common line into helper function.
      Signed-off-by: default avatarDavid Ahern <dsa@cumulusnetworks.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      72afa352
    • David Ahern's avatar
      net: Add ethernet header for pass through VRF device · 8f58336d
      David Ahern authored
      The change to use a custom dst broke tcpdump captures on the VRF device:
      
      $ tcpdump -n -i vrf10
      ...
      05:32:29.009362 IP 10.2.1.254 > 10.2.1.2: ICMP echo request, id 21989, seq 1, length 64
      05:32:29.009855 00:00:40:01:8d:36 > 45:00:00:54:d6:6f, ethertype Unknown (0x0a02), length 84:
      	0x0000:  0102 0a02 01fe 0000 9181 55e5 0001 bd11  ..........U.....
      	0x0010:  da55 0000 0000 bb5d 0700 0000 0000 1011  .U.....]........
      	0x0020:  1213 1415 1617 1819 1a1b 1c1d 1e1f 2021  ...............!
      	0x0030:  2223 2425 2627 2829 2a2b 2c2d 2e2f 3031  "#$%&'()*+,-./01
      	0x0040:  3233 3435 3637                           234567
      
      Local packets going through the VRF device are missing an ethernet header.
      Fix by adding one and then stripping it off before pushing back to the IP
      stack. With this patch you get the expected dumps:
      
      ...
      05:36:15.713944 IP 10.2.1.254 > 10.2.1.2: ICMP echo request, id 23795, seq 1, length 64
      05:36:15.714160 IP 10.2.1.2 > 10.2.1.254: ICMP echo reply, id 23795, seq 1, length 64
      ...
      Signed-off-by: default avatarDavid Ahern <dsa@cumulusnetworks.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8f58336d
    • Chas Williams's avatar
      net/xen-netfront: only napi_synchronize() if running · 274b0455
      Chas Williams authored
      If an interface isn't running napi_synchronize() will hang forever.
      
      [  392.248403] rmmod           R  running task        0   359    343 0x00000000
      [  392.257671]  ffff88003760fc88 ffff880037193b40 ffff880037193160 ffff88003760fc88
      [  392.267644]  ffff880037610000 ffff88003760fcd8 0000000100014c22 ffffffff81f75c40
      [  392.277524]  0000000000bc7010 ffff88003760fca8 ffffffff81796927 ffffffff81f75c40
      [  392.287323] Call Trace:
      [  392.291599]  [<ffffffff81796927>] schedule+0x37/0x90
      [  392.298553]  [<ffffffff8179985b>] schedule_timeout+0x14b/0x280
      [  392.306421]  [<ffffffff810f91b9>] ? irq_free_descs+0x69/0x80
      [  392.314006]  [<ffffffff811084d0>] ? internal_add_timer+0xb0/0xb0
      [  392.322125]  [<ffffffff81109d07>] msleep+0x37/0x50
      [  392.329037]  [<ffffffffa00ec79a>] xennet_disconnect_backend.isra.24+0xda/0x390 [xen_netfront]
      [  392.339658]  [<ffffffffa00ecadc>] xennet_remove+0x2c/0x80 [xen_netfront]
      [  392.348516]  [<ffffffff81481c69>] xenbus_dev_remove+0x59/0xc0
      [  392.356257]  [<ffffffff814e7217>] __device_release_driver+0x87/0x120
      [  392.364645]  [<ffffffff814e7cf8>] driver_detach+0xb8/0xc0
      [  392.371989]  [<ffffffff814e6e69>] bus_remove_driver+0x59/0xe0
      [  392.379883]  [<ffffffff814e84f0>] driver_unregister+0x30/0x70
      [  392.387495]  [<ffffffff814814b2>] xenbus_unregister_driver+0x12/0x20
      [  392.395908]  [<ffffffffa00ed89b>] netif_exit+0x10/0x775 [xen_netfront]
      [  392.404877]  [<ffffffff81124e08>] SyS_delete_module+0x1d8/0x230
      [  392.412804]  [<ffffffff8179a8ee>] system_call_fastpath+0x12/0x71
      Signed-off-by: default avatarChas Williams <3chas3@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      274b0455
    • Philip Downey's avatar
      IGMP: Inhibit reports for local multicast groups · df2cf4a7
      Philip Downey authored
      The range of addresses between 224.0.0.0 and 224.0.0.255 inclusive, is
      reserved for the use of routing protocols and other low-level topology
      discovery or maintenance protocols, such as gateway discovery and
      group membership reporting.  Multicast routers should not forward any
      multicast datagram with destination addresses in this range,
      regardless of its TTL.
      
      Currently, IGMP reports are generated for this reserved range of
      addresses even though a router will ignore this information since it
      has no purpose.  However, the presence of reserved group addresses in
      an IGMP membership report uses up network bandwidth and can also
      obscure addresses of interest when inspecting membership reports using
      packet inspection or debug messages.
      
      Although the RFCs for the various version of IGMP (e.g.RFC 3376 for
      v3) do not specify that the reserved addresses be excluded from
      membership reports, it should do no harm in doing so.  In particular
      there should be no adverse effect in any IGMP snooping functionality
      since 224.0.0.x is specifically excluded as per RFC 4541 (IGMP and MLD
      Snooping Switches Considerations) section 2.1.2. Data Forwarding
      Rules:
      
          2) Packets with a destination IP (DIP) address in the 224.0.0.X
             range which are not IGMP must be forwarded on all ports.
      
      IGMP reports for local multicast groups can now be optionally
      inhibited by means of a system control variable (by setting the value
      to zero) e.g.:
          echo 0 > /proc/sys/net/ipv4/igmp_link_local_mcast_reports
      
      To retain backwards compatibility the previous behaviour is retained
      by default on system boot or reverted by setting the value back to
      non-zero e.g.:
          echo 1 >  /proc/sys/net/ipv4/igmp_link_local_mcast_reports
      Signed-off-by: default avatarPhilip Downey <pdowney@brocade.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      df2cf4a7
    • Corinna Vinschen's avatar
      r8169: Add software counter for multicast packages · d7d2d89d
      Corinna Vinschen authored
      The multicast hardware counter on 8168/8111 chips is only 32 bit while the
      statistics in struct rtnl_link_stats64 are 64 bit.  Given that statistics
      are requested on an irregular basis, an overflow of the hardware counter
      can go unnoticed.  To count even very large numbers of multicast packets
      reliably, add a software counter and remove previously applied code to
      fill the multicast field requested by @rtl8169_get_stats64 with the values
      read from the rx_multicast hardware counter.
      Signed-off-by: default avatarCorinna Vinschen <vinschen@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d7d2d89d
    • David S. Miller's avatar
    • Linus Torvalds's avatar
      Merge tag 'powerpc-4.2-4' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux · 4941b8f0
      Linus Torvalds authored
      Pull powerpc fixes from Michael Ellerman:
       "Fix MSI/MSI-X on pseries from Guilherme"
      
      * tag 'powerpc-4.2-4' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
        powerpc/PCI: Disable MSI/MSI-X interrupts at PCI probe time in OF case
        PCI: Make pci_msi_setup_pci_dev() non-static for use by arch code
      4941b8f0
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · e001d708
      Linus Torvalds authored
      Pull networking fixes from David Miller:
       "Some straggler bug fixes here:
      
         1) Netlink_sendmsg() doesn't check iterator type properly in mmap
            case, from Ken-ichirou MATSUZAWA.
      
         2) Don't sleep in atomic context in bcmgenet driver, from Florian
            Fainelli.
      
         3) The pfkey_broadcast() code patch can't actually ever use anything
            other than GFP_ATOMIC.  And the cases that right now pass
            GFP_KERNEL or similar will currently trigger an RCU splat.  Just
            use GFP_ATOMIC unconditionally.  From David Ahern.
      
         4) Fix FD bit timings handling in pcan_usb driver, from Marc
            Kleine-Budde.
      
         5) Cache dst leaked in ip6_gre tunnel removal, fix from Huaibin Wang.
      
         6) Traversal into drivers/net/ethernet/renesas should be triggered by
            CONFIG_NET_VENDOR_RENESAS, not a particular driver's config
            option.  From Kazuya Mizuguchi.
      
         7) Fix regression in handling of igmp_join errors in vxlan, from
            Marcelo Ricardo Leitner.
      
         8) Make phy_{read,write}_mmd_indirect() properly take the mdio_lock
            mutex when programming the registers.  From Russell King.
      
         9) Fix non-forced handling in u32_destroy(), from WANG Cong.
      
        10) Test the EVENT_NO_RUNTIME_PM flag before it is cleared in
            usbnet_stop(), from Eugene Shatokhin.
      
        11) In sfc driver, don't fetch statistics firmware isn't capable of,
            from Bert Kenward.
      
        12) Verify ASCONF address parameter location in SCTP, from Xin Long"
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:
        sctp: donot reset the overall_error_count in SHUTDOWN_RECEIVE state
        sctp: asconf's process should verify address parameter is in the beginning
        sfc: only use vadaptor stats if firmware is capable
        net: phy: fixed: propagate fixed link values to struct
        usbnet: Get EVENT_NO_RUNTIME_PM bit before it is cleared
        drivers: net: xgene: fix: Oops in linkwatch_fire_event
        cls_u32: complete the check for non-forced case in u32_destroy()
        net: fec: use reinit_completion() in mdio accessor functions
        net: phy: add locking to phy_read_mmd_indirect()/phy_write_mmd_indirect()
        vxlan: re-ignore EADDRINUSE from igmp_join
        net: compile renesas directory if NET_VENDOR_RENESAS is configured
        ip6_gre: release cached dst on tunnel removal
        phylib: Make PHYs children of their MDIO bus, not the bus' parent.
        can: pcan_usb: don't provide CAN FD bittimings by non-FD adapters
        net: Fix RCU splat in af_key
        net: bcmgenet: fix uncleaned dma flags
        net: bcmgenet: Avoid sleeping in bcmgenet_timeout
        netlink: mmap: fix tx type check
      e001d708
    • Linus Torvalds's avatar
      Merge branch 'libnvdimm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm · 5c98bcce
      Linus Torvalds authored
      Pull nvdimm fixlet from Dan Williams:
       "This is a libnvdimm ABI fixup.
      
        I pushed back on this change quite hard given the late date, that it
        appears to be purely cosmetic, sysfs is not necessarily meant to be a
        user friendly UI, and the kernel interprets the reversed polarity of
        the ACPI_NFIT_MEM_ARMED flag correctly.  When this flag is set, the
        energy source of an NVDIMM is not armed and any new writes to the DIMM
        may not be preserved.
      
        However, Bob Moore warned me that it is important to get these things
        named correctly wherever they appear otherwise we run the risk of a
        less than cautious firmware engineer implementing the polarity the
        wrong way.  Once a mistake like that escapes into production platforms
        the flag becomes useless and we need to move to a new bit position.
      
        Bob has agreed to take a change through ACPICA to rename
        ACPI_NFIT_MEM_ARMED to ACPI_NFIT_MEM_NOT_ARMED, and the patch below
        from Toshi brings the sysfs representation of these flags in line with
        their respective polarities.
      
        Please pull for 4.2 as this is the first kernel to expose the ACPI
        NFIT sysfs representation, and this is likely a kernel that firmware
        developers will be using for checking out their NVDIMM enabling"
      
      * 'libnvdimm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm:
        nfit: Clarify memory device state flags strings
      5c98bcce
    • David S. Miller's avatar
      Merge branch 'iff_no_queue_fixups' · 55f14da6
      David S. Miller authored
      Phil Sutter says:
      
      ====================
      fixup IFF_NO_QUEUE conversion
      
      This series serves two purposes:
      
      On one hand it fixes a quite embarrassing bug around the warning I added for
      drivers still setting tx_queue_len = 0 to achieve noqueue operation. It turned
      out to be quite useless as due to using alloc_netdev(), many in-kernel drivers
      fell into the trap by accident, as well. Instead this place serves pretty well
      as a sanitizing point to set IFF_NO_QUEUE for drivers not initializing
      tx_queue_len, which in turn allows to drop all special treatment of the latter
      being zero since that can not happen anymore without IFF_NO_QUEUE being set.
      
      On the other hand, it provides a better solution for Eric Dumazet's concern
      regarding how to assign noqueue to an interface which does not default to it
      already. In order to make this possible, noqueue is being registered so users
      can 'tc qd add dev eth0 root noqueue'. In addition, it resolves the ugly
      situation of 'tc qd show' not showing noqueue. Finally, the former changes
      allow for some code cleanup.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      55f14da6
    • Phil Sutter's avatar
      net: sched: simplify attach_one_default_qdisc() · 3e692f21
      Phil Sutter authored
      Now that noqueue qdisc can be attached just like any other qdisc, no
      special treatment is necessary anymore when attaching it as default
      qdisc.
      
      This change has the added benefit that 'tc qdisc show' prints noqueue
      instead of nothing for devices defaulting to noqueue.
      Signed-off-by: default avatarPhil Sutter <phil@nwl.cc>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3e692f21
    • Phil Sutter's avatar
      net: sched: register noqueue qdisc · d66d6c31
      Phil Sutter authored
      This way users can attach noqueue just like any other qdisc using tc
      without having to mess with tx_queue_len first.
      Signed-off-by: default avatarPhil Sutter <phil@nwl.cc>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d66d6c31
    • Phil Sutter's avatar
      net: sched: ignore tx_queue_len when assigning default qdisc · db4094bc
      Phil Sutter authored
      Since alloc_netdev_mqs() sets IFF_NO_QUEUE for drivers not initializing
      tx_queue_len, it is safe to assume that if tx_queue_len is zero,
      dev->priv flags always contains IFF_NO_QUEUE.
      Signed-off-by: default avatarPhil Sutter <phil@nwl.cc>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      db4094bc
    • Phil Sutter's avatar
      net: fix IFF_NO_QUEUE for drivers using alloc_netdev · f84bb1ea
      Phil Sutter authored
      Printing a warning in alloc_netdev_mqs() if tx_queue_len is zero and
      IFF_NO_QUEUE not set is not appropriate since drivers may use one of the
      alloc_netdev* macros instead of alloc_etherdev*, thereby not
      intentionally leaving tx_queue_len uninitialized. Instead check here if
      tx_queue_len is zero and set IFF_NO_QUEUE, so the value of tx_queue_len
      can be ignored in net/sched_generic.c.
      
      Fixes: 906470c1 ("net: warn if drivers set tx_queue_len = 0")
      Signed-off-by: default avatarPhil Sutter <phil@nwl.cc>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f84bb1ea
    • Jean Sacren's avatar
      sock: fix kernel doc error · 69dba9bb
      Jean Sacren authored
      The symbol '__sk_reclaim' is not present in the current tree. Apparently
      '__sk_reclaim' was meant to be '__sk_mem_reclaim', so fix it with the
      right symbol name for the kernel doc.
      Signed-off-by: default avatarJean Sacren <sakiwit@gmail.com>
      Cc: Hideo Aoki <haoki@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      69dba9bb
    • lucien's avatar
      sctp: donot reset the overall_error_count in SHUTDOWN_RECEIVE state · f648f807
      lucien authored
      Commit f8d96052 ("sctp: Enforce retransmission limit during shutdown")
      fixed a problem with excessive retransmissions in the SHUTDOWN_PENDING by not
      resetting the association overall_error_count.  This allowed the association
      to better enforce assoc.max_retrans limit.
      
      However, the same issue still exists when the association is in SHUTDOWN_RECEIVED
      state.  In this state, HB-ACKs will continue to reset the overall_error_count
      for the association would extend the lifetime of association unnecessarily.
      
      This patch solves this by resetting the overall_error_count whenever the current
      state is small then SCTP_STATE_SHUTDOWN_PENDING.  As a small side-effect, we
      end up also handling SCTP_STATE_SHUTDOWN_ACK_SENT and SCTP_STATE_SHUTDOWN_SENT
      states, but they are not really impacted because we disable Heartbeats in those
      states.
      
      Fixes: Commit f8d96052 ("sctp: Enforce retransmission limit during shutdown")
      Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
      Acked-by: default avatarMarcelo Ricardo Leitner <marcelo.leitner@gmail.com>
      Acked-by: default avatarVlad Yasevich <vyasevich@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f648f807
  2. 27 Aug, 2015 8 commits
    • Carol L Soto's avatar
      net/mlx4_core: Fix unintialized variable used in error path · b0f64463
      Carol L Soto authored
      The uninitialized value name in mlx4_en_activate_cq was used in order
      to print an error message. Fixing it by replacing it with cq->vector.
      Signed-off-by: default avatarMatan Barak <matanb@mellanox.com>
      Signed-off-by: default avatarCarol L Soto <clsoto@linux.vnet.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b0f64463
    • Carol L Soto's avatar
      net/mlx4_core: Capping number of requested MSIXs to MAX_MSIX · 9293267a
      Carol L Soto authored
      We currently manage IRQs in pool_bm which is a bit field
      of MAX_MSIX bits. Thus, allocating more than MAX_MSIX
      interrupts can't be managed in pool_bm.
      Fixing this by capping number of requested MSIXs to
      MAX_MSIX.
      Signed-off-by: default avatarMatan Barak <matanb@mellanox.com>
      Signed-off-by: default avatarCarol L Soto <clsoto@linux.vnet.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9293267a
    • Nikolay Aleksandrov's avatar
      bridge: fdb: rearrange net_bridge_fdb_entry · b22fbf22
      Nikolay Aleksandrov authored
      While looking into fixing the local entries scalability issue I noticed
      that the structure is badly arranged because vlan_id would fall in a
      second cache line while keeping rcu which is used only when deleting
      in the first, so re-arrange the structure and push rcu to the end so we
      can get 16 bytes which can be used for other fields (by pushing rcu
      fully in the second 64 byte chunk). With this change all the core
      necessary information when doing fdb lookups will be available in a
      single cache line.
      
      pahole before (note vlan_id):
      struct net_bridge_fdb_entry {
      	struct hlist_node          hlist;                /*     0    16 */
      	struct net_bridge_port *   dst;                  /*    16     8 */
      	struct callback_head       rcu;                  /*    24    16 */
      	long unsigned int          updated;              /*    40     8 */
      	long unsigned int          used;                 /*    48     8 */
      	mac_addr                   addr;                 /*    56     6 */
      	unsigned char              is_local:1;           /*    62: 7  1 */
      	unsigned char              is_static:1;          /*    62: 6  1 */
      	unsigned char              added_by_user:1;      /*    62: 5  1 */
      	unsigned char              added_by_external_learn:1; /*    62: 4  1 */
      
      	/* XXX 4 bits hole, try to pack */
      	/* XXX 1 byte hole, try to pack */
      
      	/* --- cacheline 1 boundary (64 bytes) --- */
      	__u16                      vlan_id;              /*    64     2 */
      
      	/* size: 72, cachelines: 2, members: 11 */
      	/* sum members: 65, holes: 1, sum holes: 1 */
      	/* bit holes: 1, sum bit holes: 4 bits */
      	/* padding: 6 */
      	/* last cacheline: 8 bytes */
      }
      
      pahole after (note vlan_id):
      struct net_bridge_fdb_entry {
      	struct hlist_node          hlist;                /*     0    16 */
      	struct net_bridge_port *   dst;                  /*    16     8 */
      	long unsigned int          updated;              /*    24     8 */
      	long unsigned int          used;                 /*    32     8 */
      	mac_addr                   addr;                 /*    40     6 */
      	__u16                      vlan_id;              /*    46     2 */
      	unsigned char              is_local:1;           /*    48: 7  1 */
      	unsigned char              is_static:1;          /*    48: 6  1 */
      	unsigned char              added_by_user:1;      /*    48: 5  1 */
      	unsigned char              added_by_external_learn:1; /*    48: 4  1 */
      
      	/* XXX 4 bits hole, try to pack */
      	/* XXX 7 bytes hole, try to pack */
      
      	struct callback_head       rcu;                  /*    56    16 */
      	/* --- cacheline 1 boundary (64 bytes) was 8 bytes ago --- */
      
      	/* size: 72, cachelines: 2, members: 11 */
      	/* sum members: 65, holes: 1, sum holes: 7 */
      	/* bit holes: 1, sum bit holes: 4 bits */
      	/* last cacheline: 8 bytes */
      }
      Signed-off-by: default avatarNikolay Aleksandrov <nikolay@cumulusnetworks.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b22fbf22
    • David S. Miller's avatar
      Merge branch 'ovs-v6-build-err' · d3a73097
      David S. Miller authored
      Joe Stringer says:
      
      ====================
      OPENVSWITCH && !NETFILTER build fix.
      
      Fix issues reported by kbuild test robot:
      
      All error/warnings (new ones prefixed by >>):
      
         net/openvswitch/actions.c: In function 'ovs_fragment':
      >> net/openvswitch/actions.c:705:16: error: implicit declaration of
      function 'nf_get_ipv6_ops' [-Werror=implicit-function-declaration]
            const struct nf_ipv6_ops *v6ops = nf_get_ipv6_ops();
                         ^
      >> net/openvswitch/actions.c:705:37: warning: initialization makes
      pointer from integer without a cast
            const struct nf_ipv6_ops *v6ops = nf_get_ipv6_ops();
                                              ^
      >> net/openvswitch/actions.c:707:19: error: storage size of 'ovs_rt'
      isn't known
            struct rt6_info ovs_rt;
                            ^
      >> net/openvswitch/actions.c:724:8: error: dereferencing pointer to
      incomplete type
            v6ops->fragment(skb->sk, skb, ovs_vport_output);
                 ^
      >> net/openvswitch/actions.c:707:19: warning: unused variable 'ovs_rt'
      [-Wunused-variable]
            struct rt6_info ovs_rt;
                            ^
         cc1: some warnings being treated as errors
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d3a73097
    • Joe Stringer's avatar
      openvswitch: Include ip6_fib.h. · 7b85b4df
      Joe Stringer authored
      kbuild test robot reports that certain configurations will not
      automatically pick up on the "struct rt6_info" definition, so explicitly
      include the header for this structure.
      
      Fixes: 7f8a436e "openvswitch: Add conntrack action"
      Signed-off-by: default avatarJoe Stringer <joestringer@nicira.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7b85b4df
    • Joe Stringer's avatar
      netfilter: Define v6ops in !CONFIG_NETFILTER case. · 2e4cfae2
      Joe Stringer authored
      When CONFIG_OPENVSWITCH is set, and CONFIG_NETFILTER is not set, the
      openvswitch IPv6 fragmentation handling cannot refer to ipv6_ops because
      it isn't defined. Add a dummy version to avoid #ifdefs in source files.
      
      Fixes: 7f8a436e "openvswitch: Add conntrack action"
      Signed-off-by: default avatarJoe Stringer <joestringer@nicira.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2e4cfae2
    • David S. Miller's avatar
      Merge branch 'mlxsw-small-updates' · c4d3e224
      David S. Miller authored
      Jiri Pirko says:
      
      ====================
      mlxsw: small driver update
      
      Ido Schimmel (2):
        mlxsw: Remove duplicate included header
        mlxsw: Make mailboxes 4KB aligned
      
      Jiri Pirko (1):
        mlxsw: adjust transmit fail log message level in __mlxsw_emad_transmit
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c4d3e224
    • Ido Schimmel's avatar
      mlxsw: Make mailboxes 4KB aligned · 1e81779a
      Ido Schimmel authored
      The HW-SW contract requires mailboxes passed to the firmware to be 4KB
      aligned. Previously, these mailboxes were mapped using streaming DMA
      routines, which do not guarantee the bus addresses to be 4KB aligned.
      Under certain conditions this constraint was indeed violated and errors
      were observed.
      
      By using consistent DMA mapping routines together with a mailbox size of
      4KB we are guaranteed not to violate the constraint.
      Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
      Signed-off-by: default avatarJiri Pirko <jiri@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1e81779a