1. 10 Nov, 2014 15 commits
    • Alban Bedel's avatar
      8139too: Allow using the largest possible MTU · 6f6e741f
      Alban Bedel authored
      This driver allows MTU up to 1518 bytes which is not enought to run
      batman-adv. Simply raise the maximum packet size up to the maximum
      allowed by the transmit descriptor, 1792 bytes, giving a maximum MTU
      of 1774 bytes.
      Signed-off-by: default avatarAlban Bedel <albeu@free.fr>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6f6e741f
    • Alban Bedel's avatar
      8139too: Allow setting MTU larger than 1500 · ef786f10
      Alban Bedel authored
      Replace the default ndo_change_mtu callback with one that allow
      setting MTU that the driver can handle.
      Signed-off-by: default avatarAlban Bedel <albeu@free.fr>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ef786f10
    • David S. Miller's avatar
      Merge tag 'master-2014-11-04' of... · b9217266
      David S. Miller authored
      Merge tag 'master-2014-11-04' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next
      
      John W. Linville says:
      
      ====================
      pull request: wireless-next 2014-11-07
      
      Please pull this batch of updates intended for the 3.19 stream!
      
      For the mac80211 bits, Johannes says:
      
      "This relatively large batch of changes is comprised of the following:
       * large mac80211-hwsim changes from Ben, Jukka and a bit myself
       * OCB/WAVE/11p support from Rostislav on behalf of the Czech Technical
         University in Prague and Volkswagen Group Research
       * minstrel VHT work from Karl
       * more CSA work from Luca
       * WMM admission control support in mac80211 (myself)
       * various smaller fixes, spelling corrections, and minor API additions"
      
      For the Bluetooth bits, Johan says:
      
      "Here's the first bluetooth-next pull request for 3.19. The vast majority
      of patches are for ieee802154 from Alexander Aring with various fixes
      and cleanups. There are also several LE/SMP fixes as well as improved
      support for handling LE devices that have lost their pairing information
      (the patches from Alfonso). Jukka provides a couple of stability fixes
      for 6lowpan and Szymon conformance fixes for RFCOMM. For the HCI drivers
      we have one new USB ID for an Acer controller as well as a reset
      handling fix for H5."
      
      For the Atheros bits, Kalle says:
      
      "Major changes are:
      
      o ethtool support (Ben)
      
      o print dev string prefix with debug hex buffers dump (Michal)
      
      o debugfs file to read calibration data from the firmware verification
        purposes (me)
      
      o fix fw_stats debugfs file, now results are more reliable (Michal)
      
      o firmware crash counters via debugfs (Ben&me)
      
      o various tracing points to debug firmware (Rajkumar)
      
      o make it possible to provide firmware calibration data via a file (me)
      
      And we have quite a lot of smaller fixes and clean up."
      
      For the iwlwifi bits, Emmanuel says:
      
      "The big new thing here is netdetect which allows the
      firmware to wake up the platform when a specific network
      is detected. Along with that I have fixes for d3 operation.
      The usual amount of rate scaling stuff - we now support STBC.
      The other commit that stands out is Johannes's work on
      devcoredump. He basically starts to use the standard
      infrastructure he built."
      
      Along with that are the usual sort of updates and such for ath9k,
      brcmfmac, wil6210, and a handful of other bits here and there...
      
      Please let me know if there are problems!
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b9217266
    • David S. Miller's avatar
      Merge branch 'raw_probe_proto_opt' · e344458f
      David S. Miller authored
      Herbert Xu says:
      
      ====================
      ipv4: Simplify raw_probe_proto_opt and avoid reading user iov twice
      
      This series rewrites the function raw_probe_proto_opt in a more
      readable fasion, and then fixes the long-standing bug where we
      read the probed bytes twice which means that what we're using to
      probe may in fact be invalid.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e344458f
    • Herbert Xu's avatar
      ipv4: Avoid reading user iov twice after raw_probe_proto_opt · c008ba5b
      Herbert Xu authored
      Ever since raw_probe_proto_opt was added it had the problem of
      causing the user iov to be read twice, once during the probe for
      the protocol header and once again in ip_append_data.
      
      This is a potential security problem since it means that whatever
      we're probing may be invalid.  This patch plugs the hole by
      firstly advancing the iov so we don't read the same spot again,
      and secondly saving what we read the first time around for use
      by ip_append_data.
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c008ba5b
    • Herbert Xu's avatar
      ipv4: Use standard iovec primitive in raw_probe_proto_opt · 32b5913a
      Herbert Xu authored
      The function raw_probe_proto_opt tries to extract the first two
      bytes from the user input in order to seed the IPsec lookup for
      ICMP packets.  In doing so it's processing iovec by hand and
      overcomplicating things.
      
      This patch replaces the manual iovec processing with a call to
      memcpy_fromiovecend.
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      32b5913a
    • David S. Miller's avatar
      net: Move bonding headers under include/net · 1ef8019b
      David S. Miller authored
      This ways drivers like cxgb4 don't need to do ugly relative includes.
      Reported-by: default avatarJoe Perches <joe@perches.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1ef8019b
    • Joe Perches's avatar
      cxgb4: Remove unnecessary struct in6_addr * casts · 4483589f
      Joe Perches authored
      Just use the address of the in6_addr.
      Signed-off-by: default avatarJoe Perches <joe@perches.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4483589f
    • David S. Miller's avatar
      Merge branch 'cxgb4-next' · c42e2533
      David S. Miller authored
      Hariprasad Shenai says:
      
      ====================
      RDMA/cxgb4,cxgb4vf,cxgb4i,csiostor: Cleanup macros
      
      This series moves the debugfs code to a new file debugfs.c and cleans up
      macros/register defines.
      
      Various patches have ended up changing the style of the symbolic macros/register
      defines and some of them used the macros/register defines that matches the
      output of the script from the hardware team.
      
      As a result, the current kernel.org files are a mix of different macro styles.
      Since this macro/register defines is used by five different drivers, a
      few patch series have ended up adding duplicate macro/register define entries
      with different styles. This makes these register define/macro files a complete
      mess and we want to make them clean and consistent.
      
      Will post few more series so that we can cover all the macros so that they all
      follow the same style to be consistent.
      
      The patches series is created against 'net-next' tree.
      And includes patches on cxgb4, cxgb4vf, iw_cxgb4, csiostor and cxgb4i driver.
      
      We have included all the maintainers of respective drivers. Kindly review the
      change and let us know in case of any review comments.
      
      V3: Use suffix instead of prefix for macros/register defines
      V2: Changes the description and cover-letter content to answer David Miller's
      question
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c42e2533
    • Hariprasad Shenai's avatar
      cxgb4: Cleanup macros so they follow the same style and look consistent, part 2 · e2ac9628
      Hariprasad Shenai authored
      Various patches have ended up changing the style of the symbolic macros/register
      defines to different style.
      
      As a result, the current kernel.org files are a mix of different macro styles.
      Since this macro/register defines is used by different drivers a
      few patch series have ended up adding duplicate macro/register define entries
      with different styles. This makes these register define/macro files a complete
      mess and we want to make them clean and consistent. This patch cleans up a part
      of it.
      Signed-off-by: default avatarHariprasad Shenai <hariprasad@chelsio.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e2ac9628
    • Hariprasad Shenai's avatar
      cxgb4: Cleanup macros so they follow the same style and look consistent · 6559a7e8
      Hariprasad Shenai authored
      Various patches have ended up changing the style of the symbolic macros/register
      to different style.
      
      As a result, the current kernel.org files are a mix of different macro styles.
      Since this macro/register defines is used by different drivers a
      few patch series have ended up adding duplicate macro/register define entries
      with different styles. This makes these register define/macro files a complete
      mess and we want to make them clean and consistent. This patch cleans up a part
      of it.
      Signed-off-by: default avatarHariprasad Shenai <hariprasad@chelsio.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6559a7e8
    • Hariprasad Shenai's avatar
    • Eric Dumazet's avatar
      mlx4: use napi_complete_done() · 1a288172
      Eric Dumazet authored
      To enable gro_flush_timeout, a driver has to use napi_complete_done()
      instead of napi_complete().
      
      Tested:
       Ran 200 netperf TCP_STREAM from A to B (10Gbe mlx4 link, 8 RX queues)
      
      Without this feature, we send back about 305,000 ACK per second.
      
      GRO aggregation ratio is low (811/305 = 2.65 segments per GRO packet)
      
      Setting a timer of 2000 nsec is enough to increase GRO packet sizes
      and reduce number of ACK packets. (811/19.2 = 42)
      
      Receiver performs less calls to upper stacks, less wakes up.
      This also reduces cpu usage on the sender, as it receives less ACK
      packets.
      
      Note that reducing number of wakes up increases cpu efficiency, but can
      decrease QPS, as applications wont have the chance to warmup cpu caches
      doing a partial read of RPC requests/answers if they fit in one skb.
      
      B:~# sar -n DEV 1 10 | grep eth0 | tail -1
      Average:         eth0 811269.80 305732.30 1199462.57  19705.72      0.00
      0.00      0.50
      
      B:~# echo 2000 >/sys/class/net/eth0/gro_flush_timeout
      
      B:~# sar -n DEV 1 10 | grep eth0 | tail -1
      Average:         eth0 811577.30  19230.80 1199916.51   1239.80      0.00
      0.00      0.50
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1a288172
    • Eric Dumazet's avatar
      net: gro: add a per device gro flush timer · 3b47d303
      Eric Dumazet authored
      Tuning coalescing parameters on NIC can be really hard.
      
      Servers can handle both bulk and RPC like traffic, with conflicting
      goals : bulk flows want as big GRO packets as possible, RPC want minimal
      latencies.
      
      To reach big GRO packets on 10Gbe NIC, one can use :
      
      ethtool -C eth0 rx-usecs 4 rx-frames 44
      
      But this penalizes rpc sessions, with an increase of latencies, up to
      50% in some cases, as NICs generally do not force an interrupt when
      a packet with TCP Push flag is received.
      
      Some NICs do not have an absolute timer, only a timer rearmed for every
      incoming packet.
      
      This patch uses a different strategy : Let GRO stack decides what do do,
      based on traffic pattern.
      
      Packets with Push flag wont be delayed.
      Packets without Push flag might be held in GRO engine, if we keep
      receiving data.
      
      This new mechanism is off by default, and shall be enabled by setting
      /sys/class/net/ethX/gro_flush_timeout to a value in nanosecond.
      
      To fully enable this mechanism, drivers should use napi_complete_done()
      instead of napi_complete().
      
      Tested:
       Ran 200 netperf TCP_STREAM from A to B (10Gbe mlx4 link, 8 RX queues)
      
      Without this feature, we send back about 305,000 ACK per second.
      
      GRO aggregation ratio is low (811/305 = 2.65 segments per GRO packet)
      
      Setting a timer of 2000 nsec is enough to increase GRO packet sizes
      and reduce number of ACK packets. (811/19.2 = 42)
      
      Receiver performs less calls to upper stacks, less wakes up.
      This also reduces cpu usage on the sender, as it receives less ACK
      packets.
      
      Note that reducing number of wakes up increases cpu efficiency, but can
      decrease QPS, as applications wont have the chance to warmup cpu caches
      doing a partial read of RPC requests/answers if they fit in one skb.
      
      B:~# sar -n DEV 1 10 | grep eth0 | tail -1
      Average:         eth0 811269.80 305732.30 1199462.57  19705.72      0.00
      0.00      0.50
      
      B:~# echo 2000 >/sys/class/net/eth0/gro_flush_timeout
      
      B:~# sar -n DEV 1 10 | grep eth0 | tail -1
      Average:         eth0 811577.30  19230.80 1199916.51   1239.80      0.00
      0.00      0.50
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3b47d303
    • Dave Taht's avatar
      rtnetlink: add babel protocol recognition · be955b29
      Dave Taht authored
      Babel uses rt_proto 42. Add to userspace visible header file.
      Signed-off-by: default avatarDave Taht <dave.taht@bufferbloat.net>
      Signed-off-by: default avatarStephen Hemminger <stephen@networkplumber.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      be955b29
  2. 09 Nov, 2014 1 commit
  3. 07 Nov, 2014 15 commits
  4. 06 Nov, 2014 9 commits
    • Manish Chopra's avatar
      netxen: Fix link event handling. · 9d01412a
      Manish Chopra authored
      o Poll for the link events only if firmware doesn't have capability
        to notify the driver for the link events.
      Signed-off-by: default avatarManish Chopra <manish.chopra@qlogic.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9d01412a
    • Govindarajulu Varadarajan's avatar
      enic: update desc properly in rx_copybreak · f6b7734b
      Govindarajulu Varadarajan authored
      When we reuse the rx buffer, we need to update the desc. If not hardware sees
      stale value.
      
      In the following crash, when mtu is changed, hardware sees old rx buffer value
      and crashes on skb_put.
      
      Fix this by using enic_queue_rq_desc helper function which updates the necessary
      desc.
      
      [   64.657376] skbuff: skb_over_panic: text:ffffffffa041f55d len:9010 put:9010 head:ffff8800d3ca9fc0 data:ffff8800d3caa000 tail:0x2372 end:0x640 dev:enp0s3
      [   64.659965] ------------[ cut here ]------------
      [   64.661322] kernel BUG at net/core/skbuff.c:100!
      [   64.662644] invalid opcode: 0000 [#1] PREEMPT SMP
      [   64.664001] Modules linked in: rpcsec_gss_krb5 auth_rpcgss oid_registry nfsv4 cirrus ttm drm_kms_helper drm enic psmouse microcode evdev serio_raw syscopyarea sysfillrect sysimgblt i2c_piix4 i2c_core pcspkr nfs lockd grace sunrpc fscache ext4 crc16 mbcache jbd2 sd_mod ata_generic virtio_balloon ata_piix libata uhci_hcd virtio_pci virtio_ring usbcore usb_common virtio scsi_mod
      [   64.664834] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G        W      3.17.0-netnext-10335-g942396b0-dirty #273
      [   64.664834] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
      [   64.664834] task: ffffffff81a1d580 ti: ffffffff81a00000 task.ti: ffffffff81a00000
      [   64.664834] RIP: 0010:[<ffffffff81392cf1>]  [<ffffffff81392cf1>] skb_panic+0x61/0x70
      [   64.664834] RSP: 0018:ffff880210603d48  EFLAGS: 00010292
      [   64.664834] RAX: 000000000000008c RBX: ffff88020b0f6930 RCX: 0000000000000000
      [   64.664834] RDX: 000000000000008c RSI: ffffffff8178b288 RDI: 00000000ffffffff
      [   64.664834] RBP: ffff880210603d68 R08: 0000000000000001 R09: 0000000000000001
      [   64.664834] R10: 00000000000005ce R11: 0000000000000001 R12: ffff88020b1f0b40
      [   64.664834] R13: 000000000000a332 R14: ffff880209a1a000 R15: 0000000000000001
      [   64.664834] FS:  0000000000000000(0000) GS:ffff880210600000(0000) knlGS:0000000000000000
      [   64.664834] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
      [   64.664834] CR2: 00007f6752935e48 CR3: 0000000035743000 CR4: 00000000000006f0
      [   64.664834] Stack:
      [   64.664834]  ffff8800d3caa000 0000000000002372 0000000000000640 ffff88020b1f0000
      [   64.664834]  ffff880210603d78 ffffffff81392d54 ffff880210603e08 ffffffffa041f55d
      [   64.664834]  0000000000000296 ffffffff00000000 00008e7e00008e7e ffff880200002332
      [   64.664834] Call Trace:
      [   64.664834]  <IRQ>
      [   64.664834]
      [   64.664834]  [<ffffffff81392d54>] skb_put+0x54/0x60
      [   64.664834]  [<ffffffffa041f55d>] enic_rq_service.constprop.47+0x3ad/0x730 [enic]
      [   64.664834]  [<ffffffffa041fa79>] enic_poll_msix_rq+0x199/0x370 [enic]
      [   64.664834]  [<ffffffff813a5499>] net_rx_action+0x139/0x210
      [   64.664834]  [<ffffffff81290db3>] ? __this_cpu_preempt_check+0x13/0x20
      [   64.664834]  [<ffffffff8106110e>] __do_softirq+0x14e/0x280
      [   64.664834]  [<ffffffff8106152e>] irq_exit+0x8e/0xb0
      [   64.664834]  [<ffffffff8100fd21>] do_IRQ+0x61/0x100
      [   64.664834]  [<ffffffff814a2bf2>] common_interrupt+0x72/0x72
      
      fixes: a03bb56e ("enic: implement rx_copybreak")
      Signed-off-by: default avatarGovindarajulu Varadarajan <_govind@gmx.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f6b7734b
    • Govindarajulu Varadarajan's avatar
      enic: handle error condition properly in enic_rq_indicate_buf · 44aa91ab
      Govindarajulu Varadarajan authored
      In case of error in rx path, we free the buf->os_buf but we do not make it NULL.
      In next iteration we use the skb which is already freed. This causes the
      following crash.
      
      [  886.154772] general protection fault: 0000 [#1] PREEMPT SMP
      [  886.154851] Modules linked in: rpcsec_gss_krb5 auth_rpcgss oid_registry nfsv4 microcode evdev cirrus ttm drm_kms_helper drm enic syscopyarea sysfillrect sysimgblt psmouse i2c_piix4 serio_raw pcspkr i2c_core nfs lockd grace sunrpc fscache ext4 crc16 mbcache jbd2 sd_mod crc_t10dif crct10dif_common ata_generic ata_piix virtio_balloon libata scsi_mod uhci_hcd usbcore virtio_pci virtio_ring virtio usb_common
      [  886.155199] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G        W      3.17.0-netnext-05668-g876bc7f #272
      [  886.155263] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
      [  886.155304] task: ffffffff81a1d580 ti: ffffffff81a00000 task.ti: ffffffff81a00000
      [  886.155356] RIP: 0010:[<ffffffff81384030>]  [<ffffffff81384030>] kfree_skb_list+0x10/0x30
      [  886.155418] RSP: 0018:ffff880210603d48  EFLAGS: 00010206
      [  886.155456] RAX: 0000000000000020 RBX: 0000000000000000 RCX: 0000000000000000
      [  886.155504] RDX: 0000000000000000 RSI: 0000000000000001 RDI: 004500084e000017
      [  886.155553] RBP: ffff880210603d50 R08: 00000000fe13d1b6 R09: 0000000000000001
      [  886.155601] R10: 0000000000000000 R11: 0000000000000000 R12: ffff880209ff2f00
      [  886.155650] R13: ffff88020ac0fe40 R14: ffff880209ff2f00 R15: ffff8800da8e3a80
      [  886.155699] FS:  0000000000000000(0000) GS:ffff880210600000(0000) knlGS:0000000000000000
      [  886.155774] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
      [  886.155814] CR2: 00007f0e0c925000 CR3: 0000000035e8b000 CR4: 00000000000006f0
      [  886.155865] Stack:
      [  886.155882]  0000000000000000 ffff880210603d78 ffffffff81383f79 ffff880209ff2f00
      [  886.155942]  ffff88020b0c0b40 000000000000c000 ffff880210603d90 ffffffff81383faf
      [  886.156001]  ffff880209ff2f00 ffff880210603da8 ffffffff8138406d ffff88020b1b08c0
      [  886.156061] Call Trace:
      [  886.156080]  <IRQ>
      [  886.156095]
      [  886.156112]  [<ffffffff81383f79>] skb_release_data+0xa9/0xc0
      [  886.157656]  [<ffffffff81383faf>] skb_release_all+0x1f/0x30
      [  886.159195]  [<ffffffff8138406d>] consume_skb+0x1d/0x40
      [  886.160719]  [<ffffffff813942e5>] __dev_kfree_skb_any+0x35/0x40
      [  886.162224]  [<ffffffffa02dc1d5>] enic_rq_service.constprop.47+0xe5/0x5a0 [enic]
      [  886.163756]  [<ffffffffa02dc829>] enic_poll_msix_rq+0x199/0x370 [enic]
      [  886.164730]  [<ffffffff81397e29>] net_rx_action+0x139/0x210
      [  886.164730]  [<ffffffff8105fb2e>] __do_softirq+0x14e/0x280
      [  886.164730]  [<ffffffff8105ff2e>] irq_exit+0x8e/0xb0
      [  886.164730]  [<ffffffff8100fc1d>] do_IRQ+0x5d/0x100
      [  886.164730]  [<ffffffff81496832>] common_interrupt+0x72/0x72
      
      fixes: a03bb56e ("enic: implement rx_copybreak")
      Signed-off-by: default avatarGovindarajulu Varadarajan <_govind@gmx.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      44aa91ab
    • David S. Miller's avatar
      Merge branch 'mlx5-net' · c8119067
      David S. Miller authored
      Eli Cohen says:
      
      ====================
      mlx5_core fixes for 3.18
      
      the following two patches fix races to could lead to kernel panic in some cases.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c8119067
    • Eli Cohen's avatar
      net/mlx5_core: Fix race on driver load · 364d1798
      Eli Cohen authored
      When events arrive at driver load, the event handler gets called even before
      the spinlock and list are initialized. Fix this by moving the initialization
      before EQs creation.
      Signed-off-by: default avatarEli Cohen <eli@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      364d1798
    • Eli Cohen's avatar
      net/mlx5_core: Fix race in create EQ · a158906d
      Eli Cohen authored
      After the EQ is created, it can possibly generate interrupts and the interrupt
      handler is referencing eq->dev. It is therefore required to set eq->dev before
      calling request_irq() so if an event is generated before request_irq() returns,
      we will have a valid eq->dev field.
      Signed-off-by: default avatarEli Cohen <eli@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a158906d
    • David S. Miller's avatar
      Merge branch 'net_next_ovs' of git://git.kernel.org/pub/scm/linux/kernel/git/pshelar/openvswitch · 6b798d70
      David S. Miller authored
      Pravin B Shelar says:
      
      ====================
      Open vSwitch
      
      First two patches are related to OVS MPLS support. Rest of patches
      are mostly refactoring and minor improvements to openvswitch.
      
      v1-v2:
       - Fix conflicts due to "gue: Remote checksum offload"
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6b798d70
    • David S. Miller's avatar
      Merge branch 'sunvnet-next' · 271d70f4
      David S. Miller authored
      Sowmini Varadhan says:
      
      ====================
      sunvnet: bug fixes
      
      This patch series has a coding-style fix and a bug fix.
      
      The coding style fix (patch 1) is the extra indentation flagged by
      Ben Hutchings:
        http://marc.info/?l=linux-netdev&m=141529243409594&w=2
      
      The bugfix (patch 2) is the following:
      when vnet_event_napi() is  called as part of napi_resume
      (i.e., continuation of a previous NAPI read that was truncated
      due to budget constraints), and then finds no more packets to read,
      the code was trying to avoid an additional trip through ldc_rx
      as an optimization. However, when this corner case happens, we would
      need to reset a number of dring state bits such as rcv_nxt carefully,
      which quickly becomes complex and hacky.  The cleaner solution
      is to just roll back to vnet_poll, re-enable interrupts and set up
      dring state as was done in the pre-NAPI version of the driver.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      271d70f4
    • Sowmini Varadhan's avatar
      sunvnet: Return from vnet_napi_event() if no packets to read · 8c4ee3e7
      Sowmini Varadhan authored
      vnet_event_napi() may be called as part of the NAPI ->poll,
      to resume reading descriptor rings. When no data is available,
      descriptor ring state (e.g., rcv_nxt) needs to be reset
      carefully to stay in lock-step with ldc_read(). In the interest
      of simplicity, the best way to do this is to return from
      vnet_event_napi() when there are no more packets to read.
      The next trip through ldc_rx will correctly set up the dring state.
      Signed-off-by: default avatarSowmini Varadhan <sowmini.varadhan@oracle.com>
      Tested-by: default avatarDavid Stevens <david.stevens@oracle.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8c4ee3e7