1. 07 5月, 2016 3 次提交
    • D
      Merge branch '40GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue · 95aef7ce
      David S. Miller 提交于
      Jeff Kirsher says:
      
      ====================
      40GbE Intel Wired LAN Driver Updates 2016-05-05
      
      This series contains updates to i40e and i40evf.
      
      The theme behind this series is code reduction, yeah!  Jesse provides
      most of the changes starting with a refactor of the interpretation of
      a tunnel which lets us start using the hardware's parsing.  Removed
      the packet split receive routine and ancillary code in preparation
      for the Rx-refactor.  The refactor of the receive routine,
      aligns the receive routine with the one in ixgbe which was highly
      optimized.  The hardware supports a 16 byte descriptor for receive,
      but the driver was never using it in production.  There was no performance
      benefit to the real driver of 16 byte descriptors, so drop a whole lot
      of complexity while getting rid of the code.  Fixed a bug where while
      changing the number of descriptors using ethtool, the driver did not
      test the limits of the system memory before permanently assuming it
      would be able to get receive buffer memory.
      
      Mitch fixes a memory leak of one page each time the driver is opened by
      allocating the correct number of receive buffers and do not fiddle with
      next_to_use in the VF driver.
      
      Arnd Bergmann fixed a indentation issue by adding the appropriate
      curly braces in i40e_vc_config_promiscuous_mode_msg().
      
      Julia Lawall fixed an issue found by Coccinelle, where i40e_client_ops
      structure can be const since it is never modified.
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      95aef7ce
    • D
      net: vrf: Create FIB tables on link create · b3b4663c
      David Ahern 提交于
      Tables have to exist for VRFs to function. Ensure they exist
      when VRF device is created.
      Signed-off-by: NDavid Ahern <dsa@cumulusnetworks.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b3b4663c
    • J
      cnic: call cp->stop_hw() in cnic_start_hw() on allocation failure · f37bd0cc
      Jon Maxwell 提交于
      We recently had a system crash in the cnic module. Vmcore analysis confirmed
      that "ip link up" was executed which failed due to an allocation failure
      because of memory fragmentation. Futher analysis revealed that the cnic irq
      vector was still allocated after the "ip link up" that failed. When
      "ip link down" was executed it called free_msi_irqs() which crashed the system
      because the cnic irq was still inuse.
      
      PANIC: "kernel BUG at drivers/pci/msi.c:411!"
      
      The code execution was:
      
      cnic_netdev_event()
      if (event == NETDEV_UP) {
      .
      .
             ▹       if (!cnic_start_hw(dev))
      cnic_start_hw()
      calls cnic_cm_open() which failed with -ENOMEM
      cnic_start_hw() then took the err1 path:
      
      err1:
             cp->free_resc(dev); <---- frees resources but not irq vector
             pci_dev_put(dev->pcidev);
             return err;
      }
      
      This returns control back to cnic_netdev_event() but now the cnic irq vector
      is still allocated even although cnic_cm_open() failed. The next
      "ip link down" while trigger the crash.
      
      The cnic_start_hw() routine is not handling the allocation failure correctly.
      Fix this by checking whether CNIC_DRV_STATE_HANDLES_IRQ flag is set indicating
      that the hardware has been started in cnic_start_hw(). If it has then call
      cp->stop_hw() which frees the cnic irq vector and cnic resources. Otherwise
      just maintain the previous behaviour and free cnic resources.
      
      I reproduced this by injecting an ENOMEM error into cnic_cm_alloc_mem()s return
      code.
      
      # ip link set dev enpX down
      # ip link set dev enpX up <--- hit's allocation failure
      # ip link set dev enpX down <--- crashes here
      
      With this patch I confirmed there was no crash in the reproducer.
      Signed-off-by: NJon Maxwell <jmaxwell37@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f37bd0cc
  2. 06 5月, 2016 12 次提交
  3. 05 5月, 2016 25 次提交
    • J
      MAINTAINERS: Cleanup Intel Wired LAN maintainers list · 035cd6ba
      Jeff Kirsher 提交于
      With the recent "retirements" and other changes, make the maintainers
      list a lot less confusing and a bit more straight forward.
      Signed-off-by: NJeff Kirsher <jeffrey.t.kirsher@intel.com>
      Acked-by: NJesse Brandeburg <jesse.brandeburg@intel.com>
      Acked-by: NShannon Nelson <sln@onemain.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      035cd6ba
    • E
      tcp: two more missing bh disable · 777c6ae5
      Eric Dumazet 提交于
      percpu_counter only have protection against preemption.
      
      TCP stack uses them possibly from BH, so we need BH protection
      in contexts that could be run in process context
      
      Fixes: c10d9310 ("tcp: do not assume TCP code is non preemptible")
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      777c6ae5
    • D
      Merge branch '10GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue · aa8a8b05
      David S. Miller 提交于
      Jeff Kirsher says:
      
      ====================
      10GbE Intel Wired LAN Driver Updates 2016-05-04
      
      This series contains updates to ixgbe, ixgbevf and traffic class helpers.
      
      Sridhar adds helper functions to the tc_mirred header to access tcf_mirred
      information and then implements them for ixgbe to enable redirection to
      a SRIOV VF or an offloaded MACVLAN device queue via tc 'mirred' action.
      
      Amritha adds support to set filters with multiple header fields (L3,L4)
      to match on.
      
      KY Srinivasan from Microsoft add Hyper-V support into ixgbevf.
      
      Emil adds 82599 sub-device IDs that were missing from the list of parts
      that support WoL.  Then simplified the logic we use to determine WoL
      support by reading the EEPROM bits for MACs X540 and newer.
      
      Preethi cleaned up duplicate and unused device IDs.  Fixed our ethtool
      stat reporting where we were ignoring higher 32 bits of stats registers,
      so fill out 64 bit stat values into two 32 bit words.
      
      Babu Moger from Oracle improves VF performance issues on SPARC.
      
      Alex Duyck cleans up some of the Hyper-V implementation from KY so that
      we can just use function pointers instead of having to identify if a
      given VF is running on a Linux or Windows PF.
      
      Usha makes sure that DCB and FCoE is disabled for X550EM_x/a MACs and
      cleans up the DCB initialization in the process.
      
      Tony cleans up the API for ixgbevf_update_xcast_mode() so we do not
      have to pass in the netdev parameter, since it was never used in the
      function.
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      aa8a8b05
    • F
      drivers: fix dev->trans_start removal fallout · 3e66bab3
      Florian Westphal 提交于
      kbuild test robot reported a build failure on s390.
      While at it, also fix missing conversion in the tilera driver.
      
      Fixes: 9b36627a ("net: remove dev->trans_start")
      Reported-by: Nkbuild test robot <fengguang.wu@intel.com>
      Signed-off-by: NFlorian Westphal <fw@strlen.de>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      3e66bab3
    • F
      bonding: update documentation section after dev->trans_start removal · 5c2a9644
      Florian Westphal 提交于
      Drivers that use LLTX need to update trans_start of the netdev_queue.
      (Most drivers don't use LLTX; stack does this update if .ndo_start_xmit
       returned TX_OK).
      Signed-off-by: NFlorian Westphal <fw@strlen.de>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5c2a9644
    • D
      usbnet: smsc95xx: silence an uninitialized variable warning · 5a36b68b
      Dan Carpenter 提交于
      If the call to fn() fails then "buf" is uninitialized.  Just return the
      error code in that case.
      Signed-off-by: NDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5a36b68b
    • D
      usbnet/smsc75xx: silence uninitialized variable warning · 58ef6a3f
      Dan Carpenter 提交于
      If the fn() calls fail then "buf" is uninitialized.  Just return early
      in that situation.
      Signed-off-by: NDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      58ef6a3f
    • E
      tcp: must block bh in __inet_twsk_hashdance() · 614bdd4d
      Eric Dumazet 提交于
      __inet_twsk_hashdance() might be called from process context,
      better block BH before acquiring bind hash and established locks
      
      Fixes: c10d9310 ("tcp: do not assume TCP code is non preemptible")
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      614bdd4d
    • E
      tcp: fix lockdep splat in tcp_snd_una_update() · 46cc6e49
      Eric Dumazet 提交于
      tcp_snd_una_update() and tcp_rcv_nxt_update() call
      u64_stats_update_begin() either from process context or BH handler.
      
      This triggers a lockdep splat on 32bit & SMP builds.
      
      We could add u64_stats_update_begin_bh() variant but this would
      slow down 32bit builds with useless local_disable_bh() and
      local_enable_bh() pairs, since we own the socket lock at this point.
      
      I add sock_owned_by_me() helper to have proper lockdep support
      even on 64bit builds, and new u64_stats_update_begin_raw()
      and u64_stats_update_end_raw methods.
      
      Fixes: c10d9310 ("tcp: do not assume TCP code is non preemptible")
      Reported-by: NFabio Estevam <festevam@gmail.com>
      Diagnosed-by: NFrancois Romieu <romieu@fr.zoreil.com>
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Tested-by: NFabio Estevam <fabio.estevam@nxp.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      46cc6e49
    • D
      Merge tag 'batman-adv-for-davem' of git://git.open-mesh.org/linux-merge · 5332174a
      David S. Miller 提交于
      Antonio Quartulli says:
      
      ====================
      pull request: batman-adv 20160504
      
      In this pull request you have:
      - two changes to the MAINTAINERS file where one marks our mailing list
        as moderated and the other adds a missing documentation file
      - kernel-doc fixes
      - code refactoring and various cleanups
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5332174a
    • S
      mdio_bus: don't return NULL from mdiobus_scan() · e98a3aab
      Sergei Shtylyov 提交于
      I've finally noticed that mdiobus_scan() also returns either NULL or error
      value on failure.  Return ERR_PTR(-ENODEV) instead of NULL since this is
      the  error value  already filtered out by the callers that want to ignore
      the  MDIO address scan failure...
      Signed-off-by: NSergei Shtylyov <sergei.shtylyov@cogentembedded.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e98a3aab
    • D
      Merge branch 'kill_trans_start' · 4d659fcb
      David S. Miller 提交于
      Florian Westphal says:
      
      ====================
      net: remove trans_start from struct net_device
      
      We currently have two instances for trans_start, once in
      net_device and once in netdev_queue.
      
      This series removes trans_start from net_device.
      Updates to dev->trans_start are replaced with updates to netdev queue 0.
      
      This series is compile-tested only.
      Replacement is done in 3 steps:
      
      1. Replace read-accesses:
        x = dev->trans_start
      
        gets replaced by
        x = dev_trans_start(dev)
      
      2. Replace write accesses:
        dev->trans_start = jiffies;
      
        gets replaced with new helper:
        netif_trans_update(dev);
      
      3. This helper is then changed to set
         netdev_get_tx_queue(dev, 0)->trans_start
         instead of dev->trans_start.
      
      After this dev->trans_start can be removed.
      
      It should be noted that after this series several instances
      of netif_trans_update() are useless (if they occur in
      .ndo_start_xmit and driver doesn't set LLTX flag -- stack already
      did an update).
      
      Comments welcome.
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4d659fcb
    • F
      net: remove dev->trans_start · 9b36627a
      Florian Westphal 提交于
      previous patches removed all direct accesses to dev->trans_start,
      so change the netif_trans_update helper to update trans_start of
      netdev queue 0 instead and then remove trans_start from struct net_device.
      
      AFAICS a lot of the netif_trans_update() invocations are now useless
      because they occur in ndo_start_xmit and driver doesn't set LLTX
      (i.e. stack already took care of the update).
      
      As I can't test any of them it seems better to just leave them alone.
      Signed-off-by: NFlorian Westphal <fw@strlen.de>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9b36627a
    • F
      treewide: replace dev->trans_start update with helper · 860e9538
      Florian Westphal 提交于
      Replace all trans_start updates with netif_trans_update helper.
      change was done via spatch:
      
      struct net_device *d;
      @@
      - d->trans_start = jiffies
      + netif_trans_update(d)
      
      Compile tested only.
      
      Cc: user-mode-linux-devel@lists.sourceforge.net
      Cc: linux-xtensa@linux-xtensa.org
      Cc: linux1394-devel@lists.sourceforge.net
      Cc: linux-rdma@vger.kernel.org
      Cc: netdev@vger.kernel.org
      Cc: MPT-FusionLinux.pdl@broadcom.com
      Cc: linux-scsi@vger.kernel.org
      Cc: linux-can@vger.kernel.org
      Cc: linux-parisc@vger.kernel.org
      Cc: linux-omap@vger.kernel.org
      Cc: linux-hams@vger.kernel.org
      Cc: linux-usb@vger.kernel.org
      Cc: linux-wireless@vger.kernel.org
      Cc: linux-s390@vger.kernel.org
      Cc: devel@driverdev.osuosl.org
      Cc: b.a.t.m.a.n@lists.open-mesh.org
      Cc: linux-bluetooth@vger.kernel.org
      Signed-off-by: NFlorian Westphal <fw@strlen.de>
      Acked-by: NFelipe Balbi <felipe.balbi@linux.intel.com>
      Acked-by: NMugunthan V N <mugunthanvnm@ti.com>
      Acked-by: NAntonio Quartulli <a@unstable.cc>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      860e9538
    • F
      netdevice: add helper to update trans_start · ba162f8e
      Florian Westphal 提交于
      trans_start exists twice:
      - as member of net_device (legacy)
      - as member of netdev_queue
      
      In order to get rid of the legacy case, add a helper for the
      dev->trans_update (this patch), then convert spots that do
      
      dev->trans_start = jiffies
      
      to use this helper (next patch).
      
      This would then allow us to change the helper so that it updates the
      trans_stamp of netdev queue 0 instead.
      Signed-off-by: NFlorian Westphal <fw@strlen.de>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      ba162f8e
    • F
      drivers: replace dev->trans_start accesses with dev_trans_start · 4d0e9657
      Florian Westphal 提交于
      a trans_start struct member exists twice:
      - in struct net_device (legacy)
      - in struct netdev_queue
      
      Instead of open-coding dev->trans_start usage to obtain the current
      trans_start value, use dev_trans_start() instead.
      
      This is not exactly the same, as dev_trans_start also considers
      the trans_start values of the netdev queues owned by the device
      and provides the most recent one.
      
      For legacy devices this doesn't matter as dev_trans_start can cope
      with netdev trans_start values of 0 (they are ignored).
      
      This is a prerequisite to eventual removal of dev->trans_start.
      
      Cc: linux-rdma@vger.kernel.org
      Signed-off-by: NFlorian Westphal <fw@strlen.de>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4d0e9657
    • F
      dmfe: kill DEVICE define · a6e5472d
      Florian Westphal 提交于
      use net_device directly. Compile tested, objdiff shows no changes.
      Signed-off-by: NFlorian Westphal <fw@strlen.de>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a6e5472d
    • A
      gre6: add Kconfig dependency for NET_IPGRE_DEMUX · 8bf42e9e
      Arnd Bergmann 提交于
      The ipv6 gre implementation was cleaned up to share more code
      with the ipv4 version, but it can be enabled even when NET_IPGRE_DEMUX
      is disabled, resulting in a link error:
      
      net/built-in.o: In function `gre_rcv':
      :(.text+0x17f5d0): undefined reference to `gre_parse_header'
      ERROR: "gre_parse_header" [net/ipv6/ip6_gre.ko] undefined!
      
      This adds a Kconfig dependency to prevent that now invalid
      configuration.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Fixes: 308edfdf ("gre6: Cleanup GREv6 receive path, call common GRE functions")
      Acked-by: NTom Herbert <tom@herbertland.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      8bf42e9e
    • D
      Merge branch 'gre-teb' · b8223bd1
      David S. Miller 提交于
      Jiri Benc says:
      
      ====================
      gre: receive also TEB packets for lwtunnels
      
      NOTE: this patchset needs net merged to net-next.
      
      This allows lwtunnel users to get also packets with ETH_P_TEB protocol
      specified in GRE header through an ipgre interface. There's really nothing
      special about these packets in the case of lwtunnels - it's just an inner
      protocol like any other. The only complications stem from keeping
      compatibility with other uses of GRE.
      
      This will be used by openvswitch to support eth_push and eth_pop actions.
      I'd also like to see tc support for lwtunnels (this feature included) in the
      future.
      
      The first patch is not directly related and can be submitted standalone if
      needed.
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b8223bd1
    • J
      gre: receive also TEB packets for lwtunnels · 125372fa
      Jiri Benc 提交于
      For ipgre interfaces in collect metadata mode, receive also traffic with
      encapsulated Ethernet headers. The lwtunnel users are supposed to sort this
      out correctly. This allows to have mixed Ethernet + L3-only traffic on the
      same lwtunnel interface. This is the same way as VXLAN-GPE behaves.
      
      To keep backwards compatibility and prevent any surprises, gretap interfaces
      have priority in receiving packets with Ethernet headers.
      Signed-off-by: NJiri Benc <jbenc@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      125372fa
    • J
      gre: move iptunnel_pull_header down to ipgre_rcv · 244a797b
      Jiri Benc 提交于
      This will allow to make the pull dependent on the tunnel type.
      Signed-off-by: NJiri Benc <jbenc@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      244a797b
    • J
      gre: remove superfluous pskb_may_pull · 00b20340
      Jiri Benc 提交于
      The call to gre_parse_header is either followed by iptunnel_pull_header, or
      in the case of ICMP error path, the actual header is not accessed at all.
      
      In the first case, iptunnel_pull_header will call pskb_may_pull anyway and
      it's pointless to do it twice. The only difference is what call will fail
      with what error code but the net effect is still the same in all call sites.
      
      In the second case, pskb_may_pull is pointless, as skb->data is at the outer
      IP header and not at the GRE header.
      Signed-off-by: NJiri Benc <jbenc@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      00b20340
    • D
      Merge branch 'mlx5-sriov-updates' · 3f7496aa
      David S. Miller 提交于
      Saeed Mahameed says:
      
      ====================
      Mellanox 100G ethernet SRIOV Upgrades
      
      This series introduces new features and upgrades for mlx5 etherenet SRIOV,
      while the first patch provides a bug fixes for a compilation issue introduced
      buy the previous aRFS series for when CONFIG_RFS_ACCEL=y and CONFIG_MLX5_CORE_EN=n.
      
      Changes from V0:
          - 1st patch: Don't add a new Kconfig flag.  Instead, compile out en_arfs.c \
      contents when CONFIG_RFS_ACCEL=n
      
      SRIOV upgrades:
          - Use synchronize_irq instead of the vport events spin_lock
          - Fix memory leak in error flow
          - Added full VST support
          - Spoofcheck support
          - Trusted VF promiscuous and allmulti support
      
      VST and Spoofcheck in details:
          - Adding Low level firmware commands support for creating ACLs
           (Access Control Lists) Flow tables.  ACLs are regular flow tables with
           the only exception that they are bound to a specific e-Switch vport (VF)
           and they can be one of two types
              > egress ACL: filters traffic going from e-Switch to VF.
              > ingress ACL: filters traffic going from VF to e-Switch.
          - Ingress/Egress ACLs (per vport) for VF VST mode filtering.
          - Ingress/Egress ACLs (per vport) for VF spoofcheck filtering.
          - Ingress/Egress ACLs (per vport) configuration:
              > Created only when at least one of (VST, spoofcheck) is configured.
      	> if (!spoofchk && !vst) allow all traffic.  i.e. no ACLs.
              > if (spoofchk && vst) allow only untagged traffic with smac=original mac \
                      sent from the VF.
              > if (spoofchk && !vst) allow only traffic with smac=original mac sent from \
      the VF.  > if (!spoofchk && vst) allow only untagged traffic.
      
      Trusted VF promiscuous and allmulti support in details:
          - Added two flow groups for allmulti and promisc VFs to the e-Switch FDB table
              > Allmulti group: One rule that forwards any mcast traffic coming from
                                either uplink or VFs/PF vports.
              > Promisc group: One rule that forwards all unmatched traffic coming from \
                      uplink.
          - Add vport context change event handling for promisc and allmulti
            If VF is trusted respect the request and:
              > if allmulti request: add the vport to the allmulti group.
                and to all other L2 mcast address in the FDB table.
              > if promisc request: add the vport to the promisc group.
              > Note: A promisc VF can only see traffic that was not explicitly matched to
                      or requested by any other VF.
      ====================
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      3f7496aa
    • M
      net/mlx5: E-Switch, Implement trust vf ndo · 1edc57e2
      Mohamad Haj Yahia 提交于
      - Add support to configure trusted vf attribute through trust_vf_ndo.
      
      - Upon VF trust setting change we update vport context to refresh
       allmulti/promisc or any trusted vf attributes that we didn't trust the
       VF for before.
      
      - Lock the eswitch state lock on vport event in order to synchronise the
       vport context updates , this will prevent contention with vport trust
       setting change which will trigger vport mac list update.
      Signed-off-by: NMohamad Haj Yahia <mohamad@mellanox.com>
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      1edc57e2
    • M
      net/mlx5: E-Switch, Implement promiscuous rx modes vf request handling · a35f71f2
      Mohamad Haj Yahia 提交于
      Add promisc_change as a trigger to vport context change event.
      Add set vport promisc/allmulti functions to add vport to promiscuous
      flowtable rules.
      Upon promisc/allmulti rx mode vf request add the vport to
      the relevant promiscuous group (Allmulti/Promisc group) so the relevant
      traffic will be forwarded to it.
      Upon allmulti vf request add the vport to each existing multicast fdb
      rule.
      Upon adding/removing mcast address from a vport, update all other
      allmulti vports.
      Signed-off-by: NMohamad Haj Yahia <mohamad@mellanox.com>
      Signed-off-by: NSaeed Mahameed <saeedm@mellanox.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a35f71f2