1. 16 Jul, 2015 13 commits
    • Anuradha Karuppiah's avatar
    • Anuradha Karuppiah's avatar
      net core: Add protodown support. · d746d707
      Anuradha Karuppiah authored
      This patch introduces the proto_down flag that can be used by user space
      applications to notify switch drivers that errors have been detected on the
      device.
      
      The switch driver can react to protodown notification by doing a phys down
      on the associated switch port.
      Signed-off-by: default avatarAnuradha Karuppiah <anuradhak@cumulusnetworks.com>
      Signed-off-by: default avatarAndy Gospodarek <gospo@cumulusnetworks.com>
      Signed-off-by: default avatarRoopa Prabhu <roopa@cumulusnetworks.com>
      Signed-off-by: default avatarWilson Kok <wkok@cumulusnetworks.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d746d707
    • Thomas Falcon's avatar
      ibmveth: add support for TSO6 · 07e6a97d
      Thomas Falcon authored
      This patch adds support for a new method of signalling the firmware
      that TSO packets are being sent. The new method removes the need to
      alter the ip and tcp checksums and allows TSO6 support.
      Signed-off-by: default avatarThomas Falcon <tlfalcon@linux.vnet.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      07e6a97d
    • Haiyang Zhang's avatar
      hv_netvsc: Add close of RNDIS filter into change mtu call · 2de8530b
      Haiyang Zhang authored
      The current change mtu call only stops tx before removing RNDIS filter.
      In case ringbufer is not empty, the rndis_filter_device_remove() may
      hang on removing the buffers.
      
      This patch adds close of RNDIS filter before removing it, also a
      gradual waiting loop until the ring is empty. The change_mtu hang
      issue under heavy traffic is solved by this patch.
      Signed-off-by: default avatarHaiyang Zhang <haiyangz@microsoft.com>
      Reviewed-by: default avatarK. Y. Srinivasan <kys@microsoft.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2de8530b
    • YOSHIFUJI Hideaki/吉藤英明's avatar
      ipv6: Fix finding best source address in ipv6_dev_get_saddr(). · c0b8da1e
      YOSHIFUJI Hideaki/吉藤英明 authored
      Commit 9131f3de ("ipv6: Do not iterate over all interfaces when
      finding source address on specific interface.") did not properly
      update best source address available.  Plus, it introduced
      possible NULL pointer dereference.
      
      Bug was reported by Erik Kline <ek@google.com>.
      Based on patch proposed by Hajime Tazaki <thehajime@gmail.com>.
      
      Fixes: 9131f3de ("ipv6: Do not
      	iterate over all interfaces when finding source address
      	on specific interface.")
      Signed-off-by: default avatarYOSHIFUJI Hideaki <hideaki.yoshifuji@miraclelinux.com>
      Acked-by: default avatarHajime Tazaki <thehajime@gmail.com>
      Acked-by: default avatarErik Kline <ek@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c0b8da1e
    • David S. Miller's avatar
      Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue · 9243b25b
      David S. Miller authored
      Jeff Kirsher says:
      
      ====================
      Intel Wired LAN Driver Updates 2015-07-14
      
      This series contains updates to i40e and i40evf only.
      
      Joe Stringer and Jesse Gross add a ndo_features_check function to ensure
      that the i40e driver does not try to offload packets that exceed 80 bytes
      in length.
      
      Anjali adds additional stats to track flow director ATR and SB current
      state and flow director flush count which will help the need for verbose
      debug logs with respect to flow director.  Also refines an error message
      to avoid confusion, so that it indicates what may have really happened
      when the init_shared_code() call possibly fails.
      
      Pawel adds new fields to the capabilities structures to handle Flex-10
      device/function capabilities which is needed to support Flex-10 configs.
      
      Jesse improves the transmit performance by added a prefetch for the
      next transmit descriptor to be used when we know there are more coming.
      
      Mitch modifies i40evf driver to handle/allow an abundance of vectors.
      Currently the driver only maps transmit and receive queues to a single
      MSI-X vector per queue if there are exactly enough vectors for this, but
      if we have too many vectors, it will fail and allocate queues to vectors
      in a suboptimal manner.  So change the condition check to allow for an
      excess number of vectors and won't use the extras.  Also update the
      driver to just return success if the user attempts to set a port VLAN on
      a VF that already has the same port VLAN configured, instead of going
      through unnecessary filter removals & adds.  Fix the MAC filters for VFs,
      which were being programmed with 0 for the VLAN value when there was no
      VLAN assigned.  Instead, we must use -1 to indicate that no VLAN is in
      use.  Fix the VF disable code, which was not properly cleaning up the VF
      and would leave the VF in an indeterminate state, so fix this by
      notifying the VF and then call the normal VF reset routine.  Fix the
      logic in the driver so that MAC filters are added and removed correctly
      and added a check for the driver's hardware MAC address so that this
      filter does not get removed incorrectly.
      
      Carolyn removes incorrect #ifdef's which should not have been added in
      the first place and with the #ifdef's removed, make the necessary
      changes in the driver to resolve compile errors.
      
      Greg updates the admin queue command header defines.
      
      v2: fix indentation in patch 12 based on feedback from Sergei Shtylyov
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9243b25b
    • Andrea Parri's avatar
      pkt_sched: sch_qfq: remove unused member of struct qfq_sched · 40bdc536
      Andrea Parri authored
      The member (u32) "num_active_agg" of struct qfq_sched has been unused
      since its introduction in 462dbc91
      "pkt_sched: QFQ Plus: fair-queueing service at DRR cost" and (AFAICT)
      there is no active plan to use it; this removes the member.
      Signed-off-by: default avatarAndrea Parri <parri.andrea@gmail.com>
      Acked-by: default avatarPaolo Valente <paolo.valente@unimore.it>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      40bdc536
    • Christophe Jaillet's avatar
      net: qlcnic: Deletion of unnecessary memset · e29dd443
      Christophe Jaillet authored
      There is no need to memset memory allocated with vzalloc.
      Signed-off-by: default avatarChristophe JAILLET <christophe.jaillet@wanadoo.fr>
      Acked-by: default avatarShahed Shaikh <shahed.shaikh@qlogic.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e29dd443
    • David S. Miller's avatar
      Merge branch 'gianfar_rx_sg' · 9061cb02
      David S. Miller authored
      Claudiu Manoil says:
      
      ====================
      gianfar: Add Rx S/G
      
      This patch-set introduces scatter/gather support
      on the Rx side, addressing Rx path performance
      issues in the driver.
      Thanks.
      
      As an example, two boards connected back-to-back
      were used to measure the throughput, running the
      same kernel 4.1, before and after applying these
      patches.
      The netperf UDP_STREAM results below show that the
      bottleneck lies on the Rx side BEFORE applying the
      patches, and that the Rx throughput is even lower
      with a larger MTU.  AFTER applying the patches the
      Rx bottleneck is gone (Rx throughput matches the
      Tx one) and the RX throughput is not influenced by
      MTU size any longer (as expected).
      
      BEFORE:
      
      1) MTU 1500 (default)
      
      root@p1010rdb-pb:~# netperf -l 150 -cC -H 192.85.1.1 -p 12867 -t UDP_STREAM -- -m 512
      MIGRATED UDP STREAM TEST from 0.0.0.0 () port 0 AF_INET to 192.85.1.1 () port 0 AF_INET
      Socket  Message  Elapsed      Messages                   CPU      Service
      Size    Size     Time         Okay Errors   Throughput   Util     Demand
      bytes   bytes    secs            #      #   10^6bits/sec % SS     us/KB
      
      163840     512   150.00    20119124      0      549.4     100.00   14.911
      163840           150.00    14057349             383.9     100.00   14.911
      
      root@p1010rdb-pb:~# netperf -l 150 -cC -H 192.85.1.1 -p 12867 -t UDP_STREAM -- -m 64
      MIGRATED UDP STREAM TEST from 0.0.0.0 () port 0 AF_INET to 192.85.1.1 () port 0 AF_INET
      Socket  Message  Elapsed      Messages                   CPU      Service
      Size    Size     Time         Okay Errors   Throughput   Util     Demand
      bytes   bytes    secs            #      #   10^6bits/sec % SS     us/KB
      
      163840      64   150.00    23654013      0       80.7     100.00   101.463
      163840           150.00    15875288              54.2     100.00   101.463
      
      2) MTU 8000
      
      root@p1010rdb-pb:~# netperf -l 150 -cC -H 192.85.1.1 -p 12867 -t UDP_STREAM -- -m 512
      MIGRATED UDP STREAM TEST from 0.0.0.0 () port 0 AF_INET to 192.85.1.1 () port 0 AF_INET
      Socket  Message  Elapsed      Messages                   CPU      Service
      Size    Size     Time         Okay Errors   Throughput   Util     Demand
      bytes   bytes    secs            #      #   10^6bits/sec % SS     us/KB
      
      163840     512   150.00    20067232      0      548.0     100.00   14.950
      163840           150.00    6113498             166.9     99.95    14.942
      
      root@p1010rdb-pb:~# netperf -l 150 -cC -H 192.85.1.1 -p 12867 -t UDP_STREAM -- -m 64
      MIGRATED UDP STREAM TEST from 0.0.0.0 () port 0 AF_INET to 192.85.1.1 () port 0 AF_INET
      Socket  Message  Elapsed      Messages                   CPU      Service
      Size    Size     Time         Okay Errors   Throughput   Util     Demand
      bytes   bytes    secs            #      #   10^6bits/sec % SS     us/KB
      
      163840      64   150.00    23621279      0       80.6     100.00   101.604
      163840           150.00    5868602              20.0     99.96    101.563
      
      AFTER:
      (both MTU 1500 and MTU 8000)
      
      root@p1010rdb-pb:~# netperf -l 150 -cC -H 192.85.1.1 -p 12867 -t UDP_STREAM -- -m 512
      MIGRATED UDP STREAM TEST from 0.0.0.0 () port 0 AF_INET to 192.85.1.1 () port 0 AF_INET
      Socket  Message  Elapsed      Messages                   CPU      Service
      Size    Size     Time         Okay Errors   Throughput   Util     Demand
      bytes   bytes    secs            #      #   10^6bits/sec % SS     us/KB
      
      163840     512   150.00    19914969      0      543.8     100.00   15.064
      163840           150.00    19914969             543.8     99.35    14.966
      
      root@p1010rdb-pb:~# netperf -l 150 -cC -H 192.85.1.1 -p 12867 -t UDP_STREAM -- -m 64
      MIGRATED UDP STREAM TEST from 0.0.0.0 () port 0 AF_INET to 192.85.1.1 () port 0 AF_INET
      Socket  Message  Elapsed      Messages                   CPU      Service
      Size    Size     Time         Okay Errors   Throughput   Util     Demand
      bytes   bytes    secs            #      #   10^6bits/sec % SS     us/KB
      
      163840      64   150.00    23433989      0       80.0     100.00   102.416
      163840           150.00    23433989              80.0     99.62    102.023
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9061cb02
    • Claudiu Manoil's avatar
      gianfar: Add paged allocation and Rx S/G · 75354148
      Claudiu Manoil authored
      The eTSEC h/w is capable of scatter/gather on the receive side
      too if MAXFRM > MRBLR, when the allowed maximum Rx frame size
      is set to be greater than the maximum Rx buffer size (MRBLR).
      It's about time the driver makes use of this h/w capability,
      by supporting fixed buffer sizes and Rx S/G.
      
      The buffer size given to eTSEC for reception is fixed to
      1536B (must be multiple of 64), which is the same default
      buffer size as before, used to accommodate standard MTU
      (1500B) size frames.  As before, eTSEC can receive frames of
      up to 9600B.  Individual Rx buffers are mapped to page halves
      (page size for eTSEC systems is 4KB).  The skb is built around
      the first buffer of a frame (using build_skb()).  In case the
      frame spans multiple buffers, the trailing buffers are added
      as Rx fragments to the skb.  The last buffer in frame is marked
      by the L status flag.  A mechanism is in place to reuse the pages
      owned by the driver (for Rx) for subsequent receptions.
      
      Supporting fixed size buffers allows the implementation of Rx S/G,
      which in turn removes the memory pressure issues the driver had
      before when MTU was set for jumbo frame reception.
      Also, in most cases, the Rx path becomes faster due to Rx page
      reusal, since the overhead of allocating new rx buffers is removed
      from the fast path.
      Signed-off-by: default avatarClaudiu Manoil <claudiu.manoil@freescale.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      75354148
    • Claudiu Manoil's avatar
      gianfar: Use ndev, more Rx path cleanup · f23223f1
      Claudiu Manoil authored
      Use "ndev" instead of "dev", as the rx queue back pointer
      to a net_device struct, to avoid name clashing with a
      "struct device" reference.  This prepares the addition of a
      "struct device" back pointer to the rx queue structure.
      
      Remove duplicated rxq registration in the process.
      Move napi_gro_receive() outside gfar_process_frame().
      Signed-off-by: default avatarClaudiu Manoil <claudiu.manoil@freescale.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f23223f1
    • Claudiu Manoil's avatar
      gianfar: Fix and cleanup rxbd status handling · f966082e
      Claudiu Manoil authored
      There are several (long standing) problems about how the status
      field of the rx buffer descriptor (rxbd) is currently handled on
      the error path:
      - too many unnecessary 16bit reads of the two halves of the rxbd
      status field (32bit), also resulting in overuse of endianness
      convesion macros;
      - "bdp->status = RXBD_LARGE" makes no sense, since the "large"
      flag is read only (only eTSEC can write it), and trying to clear
      the other status bits is also error prone in this context
      (most of the rx status bits are read only anyway).
      
      This is fixed with a single 32bit read of the "status" field,
      and then the appropriate 16bit shifting is applied to access
      the various status bits or the rx frame length. Also corrected
      the use of the RXBD_LARGE flag.
      
      Additional fix:
      "rx_over_errors" stat is incremented instead of "rx_crc_errors"
      in case of RXBD_OVERRUN occurrence.
      Signed-off-by: default avatarClaudiu Manoil <claudiu.manoil@freescale.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f966082e
    • Claudiu Manoil's avatar
      gianfar: Bundle Rx allocation, cleanup · 76f31e8b
      Claudiu Manoil authored
      Use a more common consumer/ producer index design to improve
      rx buffer allocation.  Instead of allocating a single new buffer
      (skb) on each iteration, bundle the allocation of several rx
      buffers at a time.  This also opens the path for further memory
      optimizations.
      
      Remove useless check of rxq->rfbptr, since this patch touches
      rx pause frame handling code as well.  rxq->rfbptr is always
      initialized as part of Rx BD ring init.
      Remove redundant (and misleading) 'amount_pull' parameter.
      Signed-off-by: default avatarClaudiu Manoil <claudiu.manoil@freescale.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      76f31e8b
  2. 15 Jul, 2015 16 commits
  3. 14 Jul, 2015 2 commits
  4. 13 Jul, 2015 6 commits
    • Nikolay Aleksandrov's avatar
      bridge: mdb: add vlan support for user entries · 74fe61f1
      Nikolay Aleksandrov authored
      Until now all user mdb entries were added in vlan 0, this patch adds
      support to allow the user to specify the vlan for the entry.
      About the uapi change a hole in struct br_mdb_entry is used so the size
      and offsets are kept the same (verified with pahole and tested with older
      iproute2).
      
      Example:
      $ bridge mdb
      dev br0 port eth1 grp 239.0.0.1 permanent vlan 2000
      dev br0 port eth1 grp 239.0.0.1 permanent vlan 200
      dev br0 port eth1 grp 239.0.0.1 permanent
      Signed-off-by: default avatarNikolay Aleksandrov <nikolay@cumulusnetworks.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      74fe61f1
    • Daniel Borkmann's avatar
      ebpf: remove self-assignment in interpreter's tail call · c4675f93
      Daniel Borkmann authored
      ARG1 = BPF_R1 as it stands, evaluates to regs[BPF_REG_1] = regs[BPF_REG_1]
      and thus has no effect. Add a comment instead, explaining what happens and
      why it's okay to just remove it. Since from user space side, a tail call is
      invoked as a pseudo helper function via bpf_tail_call_proto, the verifier
      checks the arguments just like with any other helper function and makes
      sure that the first argument (regs[BPF_REG_1])'s type is ARG_PTR_TO_CTX.
      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>
      c4675f93
    • Tom Herbert's avatar
      net: Build IPv6 into kernel by default · de551f2e
      Tom Herbert authored
      This patch makes the default to build IPv6 into the kernel. IPv6
      now has significant traction and any remaining vestiges of IPv6
      not being provided parity with IPv4 should be swept away. IPv6 is now
      core to the Internet and kernel.
      
      Points on IPv6 adoption:
      
      - Per Google statistics, IPv6 usage has reached 7% on the Internet
        and continues to exhibit an exponential growth rate
        https://www.google.com/intl/en/ipv6/statistics.html
      - Just a few days ago ARIN officially depleted its IPv4 pool
      - IPv6 only data centers are being successfully built
        (e.g. at Facebook)
      
      This patch changes the IPv6 Kconfig for IPV6. Default for CONFIG_IPV6
      is set to "y" and the text has been updated to reflect the maturity of
      IPv6.
      
      Impact:
      
      Under some circumstances building modules in to kernel might have a
      performance advantage. In my testing, I did notice a very slight
      improvement.
      
      This will obviously increase the size of the kernel image. In my
      configuration I see:
      
      IPv6 as module:
      
         text    data     bss     dec     hex filename
      9703666 1899288  933888 12536842         bf4c0a vmlinux
      
      IPv6 built into kernel
      
        text     data     bss     dec     hex filename
      9436490 1879600  913408 12229498         ba9b7a vmlinux
      
      Which increases text size by ~270K (2.8% increase in size for me). If
      image size is an issue, presumably for a device which does not do IP
      networking (IMO we should be discouraging IPv4-only devices), IPV6 can
      be disabled or still built as a module.
      Acked-by: default avatarYOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
      Signed-off-by: default avatarTom Herbert <tom@herbertland.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      de551f2e
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · f760b87f
      Linus Torvalds authored
      Pull networking fixes from David Miller:
      
       1) Missing list head init in bluetooth hidp session creation, from Tedd
          Ho-Jeong An.
      
       2) Don't leak SKB in bridge netfilter error paths, from Florian
          Westphal.
      
       3) ipv6 netdevice private leak in netfilter bridging, fixed by Julien
          Grall.
      
       4) Fix regression in IP over hamradio bpq encapsulation, from Ralf
          Baechle.
      
       5) Fix race between rhashtable resize events and table walks, from Phil
          Sutter.
      
       6) Missing validation of IFLA_VF_INFO netlink attributes, fix from
          Daniel Borkmann.
      
       7) Missing security layer socket state initialization in tipc code,
          from Stephen Smalley.
      
       8) Fix shared IRQ handling in boomerang 3c59x interrupt handler, from
          Denys Vlasenko.
      
       9) Missing minor_idr destroy on module unload on macvtap driver, from
          Johannes Thumshirn.
      
      10) Various pktgen kernel thread races, from Oleg Nesterov.
      
      11) Fix races that can cause packets to be processed in the backlog even
          after a device attached to that SKB has been fully unregistered.
          From Julian Anastasov.
      
      12) bcmgenet driver doesn't account packet drops vs.  errors properly,
          fix from Petri Gynther.
      
      13) Array index validation and off by one fix in DSA layer from Florian
          Fainelli
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (66 commits)
        can: replace timestamp as unique skb attribute
        ARM: dts: dra7x-evm: Prevent glitch on DCAN1 pinmux
        can: c_can: Fix default pinmux glitch at init
        can: rcar_can: unify error messages
        can: rcar_can: print request_irq() error code
        can: rcar_can: fix typo in error message
        can: rcar_can: print signed IRQ #
        can: rcar_can: fix IRQ check
        net: dsa: Fix off-by-one in switch address parsing
        net: dsa: Test array index before use
        net: switchdev: don't abort unsupported operations
        net: bcmgenet: fix accounting of packet drops vs errors
        cdc_ncm: update specs URL
        Doc: z8530book: Fix typo in API-z8530-sync-txdma-open.html
        net: inet_diag: always export IPV6_V6ONLY sockopt for listening sockets
        bridge: mdb: allow the user to delete mdb entry if there's a querier
        net: call rcu_read_lock early in process_backlog
        net: do not process device backlog during unregistration
        bridge: fix potential crash in __netdev_pick_tx()
        net: axienet: Fix devm_ioremap_resource return value check
        ...
      f760b87f
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 · 34bef46e
      Linus Torvalds authored
      Pull crypto fixes from Herbert Xu:
       "This fixes a duplicate dma_unmap_sg call in omap-des and reentrancy
        bugs in the powerpc nx driver which may cause bogus output or worse
        memory corruption"
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
        crypto: nx - Fix reentrancy bugs
        crypto: omap-des - Fix unmapping of dma channels
      34bef46e
    • David S. Miller's avatar
      Merge tag 'linux-can-fixes-for-4.2-20150712' of... · cee9f6d0
      David S. Miller authored
      Merge tag 'linux-can-fixes-for-4.2-20150712' of git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can
      
      Marc Kleine-Budde says:
      
      ====================
      pull-request: can 2015-07-12
      
      this is a pull request of 8 patchs for net/master.
      
      Sergei Shtylyov contributes 5 patches for the rcar_can driver, fixing the IRQ
      check and several info and error messages. There are two patches by J.D.
      Schroeder and Roger Quadros for the c_can driver and dra7x-evm device tree,
      which precent a glitch in the DCAN1 pinmux. Oliver Hartkopp provides a better
      approach to make the CAN skbs unique, the timestamp is replaced by a counter.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      cee9f6d0
  5. 12 Jul, 2015 3 commits