1. 06 May, 2016 10 commits
  2. 05 May, 2016 2 commits
  3. 04 May, 2016 28 commits
    • David S. Miller's avatar
      Merge branch '10GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue · aa8a8b05
      David S. Miller authored
      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: default avatarDavid S. Miller <davem@davemloft.net>
      aa8a8b05
    • Florian Westphal's avatar
      drivers: fix dev->trans_start removal fallout · 3e66bab3
      Florian Westphal authored
      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: default avatarkbuild test robot <fengguang.wu@intel.com>
      Signed-off-by: default avatarFlorian Westphal <fw@strlen.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3e66bab3
    • Florian Westphal's avatar
      bonding: update documentation section after dev->trans_start removal · 5c2a9644
      Florian Westphal authored
      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: default avatarFlorian Westphal <fw@strlen.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5c2a9644
    • Dan Carpenter's avatar
      usbnet: smsc95xx: silence an uninitialized variable warning · 5a36b68b
      Dan Carpenter authored
      If the call to fn() fails then "buf" is uninitialized.  Just return the
      error code in that case.
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5a36b68b
    • Dan Carpenter's avatar
      usbnet/smsc75xx: silence uninitialized variable warning · 58ef6a3f
      Dan Carpenter authored
      If the fn() calls fail then "buf" is uninitialized.  Just return early
      in that situation.
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      58ef6a3f
    • Eric Dumazet's avatar
      tcp: must block bh in __inet_twsk_hashdance() · 614bdd4d
      Eric Dumazet authored
      __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: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      614bdd4d
    • Eric Dumazet's avatar
      tcp: fix lockdep splat in tcp_snd_una_update() · 46cc6e49
      Eric Dumazet authored
      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: default avatarFabio Estevam <festevam@gmail.com>
      Diagnosed-by: default avatarFrancois Romieu <romieu@fr.zoreil.com>
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Tested-by: default avatarFabio Estevam <fabio.estevam@nxp.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      46cc6e49
    • David S. Miller's avatar
      Merge tag 'batman-adv-for-davem' of git://git.open-mesh.org/linux-merge · 5332174a
      David S. Miller authored
      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: default avatarDavid S. Miller <davem@davemloft.net>
      5332174a
    • Sergei Shtylyov's avatar
      mdio_bus: don't return NULL from mdiobus_scan() · e98a3aab
      Sergei Shtylyov authored
      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: default avatarSergei Shtylyov <sergei.shtylyov@cogentembedded.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e98a3aab
    • David S. Miller's avatar
      Merge branch 'kill_trans_start' · 4d659fcb
      David S. Miller authored
      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: default avatarDavid S. Miller <davem@davemloft.net>
      4d659fcb
    • Florian Westphal's avatar
      net: remove dev->trans_start · 9b36627a
      Florian Westphal authored
      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: default avatarFlorian Westphal <fw@strlen.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9b36627a
    • Florian Westphal's avatar
      treewide: replace dev->trans_start update with helper · 860e9538
      Florian Westphal authored
      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: default avatarFlorian Westphal <fw@strlen.de>
      Acked-by: default avatarFelipe Balbi <felipe.balbi@linux.intel.com>
      Acked-by: default avatarMugunthan V N <mugunthanvnm@ti.com>
      Acked-by: default avatarAntonio Quartulli <a@unstable.cc>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      860e9538
    • Florian Westphal's avatar
      netdevice: add helper to update trans_start · ba162f8e
      Florian Westphal authored
      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: default avatarFlorian Westphal <fw@strlen.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ba162f8e
    • Florian Westphal's avatar
      drivers: replace dev->trans_start accesses with dev_trans_start · 4d0e9657
      Florian Westphal authored
      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: default avatarFlorian Westphal <fw@strlen.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4d0e9657
    • Florian Westphal's avatar
      dmfe: kill DEVICE define · a6e5472d
      Florian Westphal authored
      use net_device directly. Compile tested, objdiff shows no changes.
      Signed-off-by: default avatarFlorian Westphal <fw@strlen.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a6e5472d
    • Arnd Bergmann's avatar
      gre6: add Kconfig dependency for NET_IPGRE_DEMUX · 8bf42e9e
      Arnd Bergmann authored
      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: default avatarArnd Bergmann <arnd@arndb.de>
      Fixes: 308edfdf ("gre6: Cleanup GREv6 receive path, call common GRE functions")
      Acked-by: default avatarTom Herbert <tom@herbertland.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8bf42e9e
    • David S. Miller's avatar
      Merge branch 'gre-teb' · b8223bd1
      David S. Miller authored
      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: default avatarDavid S. Miller <davem@davemloft.net>
      b8223bd1
    • Jiri Benc's avatar
      gre: receive also TEB packets for lwtunnels · 125372fa
      Jiri Benc authored
      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: default avatarJiri Benc <jbenc@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      125372fa
    • Jiri Benc's avatar
      gre: move iptunnel_pull_header down to ipgre_rcv · 244a797b
      Jiri Benc authored
      This will allow to make the pull dependent on the tunnel type.
      Signed-off-by: default avatarJiri Benc <jbenc@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      244a797b
    • Jiri Benc's avatar
      gre: remove superfluous pskb_may_pull · 00b20340
      Jiri Benc authored
      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: default avatarJiri Benc <jbenc@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      00b20340
    • David S. Miller's avatar
      Merge branch 'mlx5-sriov-updates' · 3f7496aa
      David S. Miller authored
      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: default avatarDavid S. Miller <davem@davemloft.net>
      3f7496aa
    • Mohamad Haj Yahia's avatar
      net/mlx5: E-Switch, Implement trust vf ndo · 1edc57e2
      Mohamad Haj Yahia authored
      - 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: default avatarMohamad Haj Yahia <mohamad@mellanox.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1edc57e2
    • Mohamad Haj Yahia's avatar
      net/mlx5: E-Switch, Implement promiscuous rx modes vf request handling · a35f71f2
      Mohamad Haj Yahia authored
      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: default avatarMohamad Haj Yahia <mohamad@mellanox.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a35f71f2
    • Mohamad Haj Yahia's avatar
      net/mlx5: E-Switch, Add promiscuous and allmulti FDB flowtable groups · 78a9199b
      Mohamad Haj Yahia authored
      Add promiscuous and allmulti steering groups in FDB table.
      Besides the full match L2 steering rules group, we added
      two more groups to catch the "miss" rules traffic:
      * 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.
      
      Needed for downstream privileged VF promisc and allmulti support.
      Signed-off-by: default avatarMohamad Haj Yahia <mohamad@mellanox.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      78a9199b
    • Mohamad Haj Yahia's avatar
      net/mlx5: E-Switch, Use vport event handler for vport cleanup · 586cfa7f
      Mohamad Haj Yahia authored
      Remove the usage of explicit cleanup function and use existing vport
      change handler. Calling vport change handler while vport
      is disabled will cleanup the vport resources.
      Signed-off-by: default avatarMohamad Haj Yahia <mohamad@mellanox.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      586cfa7f
    • Mohamad Haj Yahia's avatar
      net/mlx5: E-Switch, Enable/disable ACL tables on demand · 01f51f22
      Mohamad Haj Yahia authored
      Enable ingress/egress ACL tables only when we need to configure ACL
      rules.
      Disable ingress/egress ACL tables once all ACL rules are removed.
      
      All VF outgoing/incoming traffic need to go through the ingress/egress ACL
      tables.
      Adding/Removing these tables on demand will save unnecessary hops in the
      flow steering when the ACL tables are empty.
      Signed-off-by: default avatarMohamad Haj Yahia <mohamad@mellanox.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      01f51f22
    • Mohamad Haj Yahia's avatar
      net/mlx5: E-Switch, Vport ingress/egress ACLs rules for spoofchk · f942380c
      Mohamad Haj Yahia authored
      Configure ingress and egress vport ACL rules according to spoofchk
      admin parameters.
      
      Ingress ACL flow table rules:
      if (!spoofchk && !vst) allow all traffic.
      else :
      1) one of the following rules :
      * 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.
      2) drop all traffic that didn't hit #1.
      
      Add support for set vf spoofchk ndo.
      
      Add non zero mac validation in case of spoofchk to set mac ndo:
      when setting new mac we need to validate that the new mac is
      not zero while the spoofchk is on because it is illegal
      combination.
      Signed-off-by: default avatarMohamad Haj Yahia <mohamad@mellanox.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f942380c
    • Mohamad Haj Yahia's avatar
      net/mlx5: E-Switch, Vport ingress/egress ACLs rules for VST mode · dfcb1ed3
      Mohamad Haj Yahia authored
      Configure ingress and egress vport ACL rules according to
      vlan and qos admin parameters.
      
      Ingress ACL flow table rules:
      1) drop any tagged packet sent from the VF
      2) allow other traffic (default behavior)
      
      Egress ACL flow table rules:
      1) allow only tagged traffic with vlan_tag=vst_vid.
      2) drop other traffic.
      Signed-off-by: default avatarMohamad Haj Yahia <mohamad@mellanox.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      dfcb1ed3