1. 09 Jul, 2015 4 commits
    • Jon Maxwell's avatar
      tcp: v1 always send a quick ack when quickacks are enabled · 2251ae46
      Jon Maxwell authored
      V1 of this patch contains Eric Dumazet's suggestion to move the per
      dst RTAX_QUICKACK check into tcp_in_quickack_mode(). Thanks Eric.
      
      I ran some tests and after setting the "ip route change quickack 1"
      knob there were still many delayed ACKs sent. This occured
      because when icsk_ack.quick=0 the !icsk_ack.pingpong value is
      subsequently ignored as tcp_in_quickack_mode() checks both these
      values. The condition for a quick ack to trigger requires
      that both icsk_ack.quick != 0 and icsk_ack.pingpong=0. Currently
      only icsk_ack.pingpong is controlled by the knob. But the
      icsk_ack.quick value changes dynamically depending on heuristics.
      The crux of the matter is that delayed acks still cannot be entirely
      disabled even with the RTAX_QUICKACK per dst knob enabled. This
      patch ensures that a quick ack is always sent when the RTAX_QUICKACK
      per dst knob is turned on.
      
      The "ip route change quickack 1" knob was recently added to enable
      quickacks. It was modeled around the TCP_QUICKACK setsockopt() option.
      This issue is that even with "ip route change quickack 1" enabled
      we still see delayed ACKs under some conditions. It would be nice
      to be able to completely disable delayed ACKs.
      
      Here is an example:
      
      # netstat -s|grep dela
          3 delayed acks sent
      
      For all routes enable the knob
      
      # ip route change quickack 1
      
      Generate some traffic across a slow link and we still see the delayed
      acks.
      
      # netstat -s|grep dela
          106 delayed acks sent
          1 delayed acks further delayed because of locked socket
      
      The issue is that both the "ip route change quickack 1" knob and
      the TCP_QUICKACK option set the icsk_ack.pingpong variable to 0.
      However at the business end in the __tcp_ack_snd_check() routine,
      tcp_in_quickack_mode() checks that both icsk_ack.quick != 0
      and icsk_ack.pingpong=0 in order to trigger a quickack. As
      icsk_ack.quick is determined by heuristics it can be 0. When
      that occurs the icsk_ack.pingpong value is ignored and a delayed
      ACK is sent regardless.
      
      This patch moves the RTAX_QUICKACK per dst check into the
      tcp_in_quickack_mode() routine which ensures that a quickack is
      always sent when the quickack knob is enabled for that dst.
      Signed-off-by: default avatarJon Maxwell <jmaxwell37@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2251ae46
    • Scott Feldman's avatar
      rocker: add change MTU support · 77a58c74
      Scott Feldman authored
      Implement ndo_change_mtu: on MTU change, reallocate Rx ring bufs and signal
      HW of new port MTU value.
      Signed-off-by: default avatarScott Feldman <sfeldma@gmail.com>
      Reviewed-by: default avatarSimon Horman <simon.horman@netronome.com>
      Tested-by: default avatarSimon Horman <simon.horman@netronome.com>
      Acked-by: default avatarJiri Pirko <jiri@resnulli.us>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      77a58c74
    • Vaishali Thakkar's avatar
      neterion: s2io: Use module_pci_driver · 910be1ab
      Vaishali Thakkar authored
      Use module_pci_driver for drivers whose init and exit functions
      only register and unregister, respectively.
      
      A simplified version of the Coccinelle semantic patch that performs
      this transformation is as follows:
      
      @A@
      identifier f, x;
      @@
      -static f(...) { return pci_register_driver(&x); }
      
      @b depends on a@
      identifier e, a.x;
      statement S;
      @@
      -static e(...) {
      -pci_unregister_driver(&x);
      -DBG_PRINT(INIT_DBG,"S");
      - }
      
      @c depends on a && b@
      identifier a.f;
      declarer name module_init;
      @@
      -module_init(f);
      
      @d depends on a && b && c@
      identifier b.e, a.x;
      declarer name module_exit;
      declarer name module_pci_driver;
      @@
      -module_exit(e);
      +module_pci_driver(x);
      Signed-off-by: default avatarVaishali Thakkar <vthakkar1994@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      910be1ab
    • Hariprasad Shenai's avatar
      cxgb4vf: Fix check to use new User Doorbell mechanism · 71d3c0b4
      Hariprasad Shenai authored
      If we don't have access to the new User GTS (T5+), use the old doorbell
      mechanism; otherwise use the new BAR2 mechanism.
      Signed-off-by: default avatarHariprasad Shenai <hariprasad@chelsio.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      71d3c0b4
  2. 08 Jul, 2015 26 commits
  3. 03 Jul, 2015 5 commits
  4. 02 Jul, 2015 5 commits
    • Nikolay Aleksandrov's avatar
      bridge: vlan: fix usage of vlan 0 and 4095 again · 462e1ead
      Nikolay Aleksandrov authored
      Vlan ids 0 and 4095 were disallowed by commit:
      8adff41c ("bridge: Don't use VID 0 and 4095 in vlan filtering")
      but then the check was removed when vlan ranges were introduced by:
      bdced7ef ("bridge: support for multiple vlans and vlan ranges in setlink and dellink requests")
      So reintroduce the vlan range check.
      Before patch:
      [root@testvm ~]# bridge vlan add vid 0 dev eth0 master
      (succeeds)
      After Patch:
      [root@testvm ~]# bridge vlan add vid 0 dev eth0 master
      RTNETLINK answers: Invalid argument
      Signed-off-by: default avatarNikolay Aleksandrov <nikolay@cumulusnetworks.com>
      Fixes: bdced7ef ("bridge: support for multiple vlans and vlan ranges in setlink and dellink requests")
      Acked-by: default avatarToshiaki Makita <toshiaki.makita1@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      462e1ead
    • David S. Miller's avatar
      Merge branch 'for-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth · c4555d16
      David S. Miller authored
      Johan Hedberg says:
      
      ====================
      pull request: bluetooth 2015-07-02
      
      A couple of regressions crept in because of a patch to use proper list
      APIs rather than manually reading & writing the next/prev pointers
      (commit 835a6a2f). Turns out this was
      masking a few bugs: a missing INIT_LIST_HEAD() call and incorrectly
      using list_del() rather than list_del_init(). The two patches in this
      set fix these, and it'd be nice they could still make it to 4.2-rc1 to
      avoid new bug reports from users.
      
      Please let me know if there are any issues pulling. Thanks.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c4555d16
    • Govindarajulu Varadarajan's avatar
      enic: fix issues in enic_poll · 25c14ef8
      Govindarajulu Varadarajan authored
      In enic_poll, we clean tx and rx queues, when low latency busy socket polling
      is happening, enic_poll will only clean tx queue. After cleaning tx, it should
      return total budget for re-poll.
      
      There is a small window between vnic_intr_unmask() and enic_poll_unlock_napi().
      In this window if an irq occurs and napi is scheduled on different cpu, it tries
      to acquire enic_poll_lock_napi() and fails. Unlock napi_poll before unmasking
      the interrupt.
      
      v2:
      Do not change tx wonk done behaviour. Consider only rx work done for completing
      napi.
      Signed-off-by: default avatarGovindarajulu Varadarajan <_govind@gmx.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      25c14ef8
    • Linus Torvalds's avatar
      Merge tag 'module-misc-v4.1-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux · a611fb75
      Linus Torvalds authored
      Pull init.h/module.h fragility fixes from Paul Gortmaker:
       "Fixup various init.h misuses that are fragile wrt code moving to
        module.h
      
        What started as a removal of no longer required include <linux/init.h>
        due to the earlier __cpuinit and __devinit removal led to the
        observation that some module specfic support was living in init.h
        itself, thus preventing the full removal from introducing compile
        regressions.
      
        This series includes a few final fixups needed prior to the relocation
        of the modular init code from <init.h> to <module.h>.  These are
        things that weren't easily categorized into any of the other previous
        series categories already requested for pull.
      
        That said, each fixup branch (including this one) is independent and
        there are no ordering constraints.  Only the final code relocation
        (which is NOT in this pull) requires that all my cleanup branches be
        merged first"
      
      * tag 'module-misc-v4.1-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux:
        tile: add init.h to usb.c to avoid compile failure
        arm: fix implicit #include <linux/init.h> in entry asm.
        x86: replace __init_or_module with __init in non-modular vsmp_64.c
      a611fb75
    • Linus Torvalds's avatar
      Merge tag 'module-builtin_driver-v4.1-rc8' of... · 75462c8a
      Linus Torvalds authored
      Merge tag 'module-builtin_driver-v4.1-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux
      
      Pull module_platform_driver replacement from Paul Gortmaker:
       "Replace module_platform_driver with builtin_platform driver in non
        modules.
      
        We see an increasing number of non-modular drivers using
        modular_driver() type register functions.  There are several downsides
        to letting this continue unchecked:
      
         - The code can appear modular to a reader of the code, and they won't
           know if the code really is modular without checking the Makefile
           and Kconfig to see if compilation is governed by a bool or
           tristate.
      
         - Coders of drivers may be tempted to code up an __exit function that
           is never used, just in order to satisfy the required three args of
           the modular registration function.
      
         - Non-modular code ends up including the <module.h> which increases
           CPP overhead that they don't need.
      
         - It hinders us from performing better separation of the module init
           code and the generic init code.
      
        So here we introduce similar macros for builtin drivers.  Then we
        convert builtin drivers (controlled by a bool Kconfig) by making the
        following type of mapping:
      
          module_platform_driver()       --->  builtin_platform_driver()
          module_platform_driver_probe() --->  builtin_platform_driver_probe().
      
        The set of drivers that are converted here are just the ones that
        showed up as relying on an implicit include of <module.h> during a
        pending header cleanup.  So we convert them here vs adding an include
        of <module.h> to non-modular code to avoid compile fails.  Additonal
        conversions can be done asynchronously at any time.
      
        Once again, an unused module_exit function that is removed here
        appears in the diffstat as an outlier wrt all the other changes"
      
      * tag 'module-builtin_driver-v4.1-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux:
        drivers/clk: convert sunxi/clk-mod0.c to use builtin_platform_driver
        drivers/power: Convert non-modular syscon-reboot to use builtin_platform_driver
        drivers/soc: Convert non-modular soc-realview to use builtin_platform_driver
        drivers/soc: Convert non-modular tegra/pmc to use builtin_platform_driver
        drivers/cpufreq: Convert non-modular s5pv210-cpufreq.c to use builtin_platform_driver
        drivers/cpuidle: Convert non-modular drivers to use builtin_platform_driver
        drivers/platform: Convert non-modular pdev_bus to use builtin_platform_driver
        platform_device: better support builtin boilerplate avoidance
      75462c8a