1. 11 Jun, 2014 40 commits
    • Octavian Purdila's avatar
      net: add __pskb_copy_fclone and pskb_copy_for_clone · bad93e9d
      Octavian Purdila authored
      There are several instances where a pskb_copy or __pskb_copy is
      immediately followed by an skb_clone.
      
      Add a couple of new functions to allow the copy skb to be allocated
      from the fclone cache and thus speed up subsequent skb_clone calls.
      
      Cc: Alexander Smirnov <alex.bluesman.smirnov@gmail.com>
      Cc: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
      Cc: Marek Lindner <mareklindner@neomailbox.ch>
      Cc: Simon Wunderlich <sw@simonwunderlich.de>
      Cc: Antonio Quartulli <antonio@meshcoding.com>
      Cc: Marcel Holtmann <marcel@holtmann.org>
      Cc: Gustavo Padovan <gustavo@padovan.org>
      Cc: Johan Hedberg <johan.hedberg@gmail.com>
      Cc: Arvid Brodin <arvid.brodin@alten.se>
      Cc: Patrick McHardy <kaber@trash.net>
      Cc: Pablo Neira Ayuso <pablo@netfilter.org>
      Cc: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
      Cc: Lauro Ramos Venancio <lauro.venancio@openbossa.org>
      Cc: Aloisio Almeida Jr <aloisio.almeida@openbossa.org>
      Cc: Samuel Ortiz <sameo@linux.intel.com>
      Cc: Jon Maloy <jon.maloy@ericsson.com>
      Cc: Allan Stephens <allan.stephens@windriver.com>
      Cc: Andrew Hendry <andrew.hendry@gmail.com>
      Cc: Eric Dumazet <edumazet@google.com>
      Reviewed-by: default avatarChristoph Paasch <christoph.paasch@uclouvain.be>
      Signed-off-by: default avatarOctavian Purdila <octavian.purdila@intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bad93e9d
    • David S. Miller's avatar
      Merge branch 'bridge-next' · 1a0b20b2
      David S. Miller authored
      Toshiaki Makita says:
      
      ====================
      bridge: 802.1ad vlan protocol support
      
      Currently bridge vlan filtering doesn't work fine with 802.1ad protocol.
      Only if a bridge is configured without pvid, the bridge receives only
      802.1ad tagged frames and no STP is used, it will work.
      Otherwise:
      - If pvid is configured, it can put only 802.1Q tags but cannot put 802.1ad
        tags.
      - If 802.1Q and 802.1ad tagged frames arrive in mixture, it applies filtering
        regardless of their protocols.
      - While an 802.1ad bridge should use another mac address for STP BPDU and
        should forward customer's BPDU frames, it can't.
      Thus, we can't properly handle frames once 802.1ad is used.
      
      Handling 802.1ad is useful if we want to allow stacked vlans to be used,
      e.g., guest VMs wants to use vlan tags and the host also wants to segregate
      guest's traffic from other guests' by vlan tags.
      
      Here is the image describing how to configure a bridge to filter VMs traffic.
      
               +-------+p/u   +-----+  +---------+
       +----+  |       |------|vnet0|--|User A VM|
       |eth0|--|802.1ad|      +-----+  +---------+
       +----+  |bridge |p/u   +-----+  +---------+
               |       |------|vnet1|--|User B VM|
               +-------+      +-----+  +---------+
      p/u: pvid/untagged
      
      This patch set enables us to set vlan protocols per bridge.
      This tries to implement a bridge like S-VLAN component in IEEE 802.1Q-2011
      spec.
      
      Note that there is another possible implementation that sets vlan protocols
      per port. Some HW switches seem to take that approach.
      However, I think per-bridge approach is better, because;
      - I think the typical usage of an 802.1ad bridge is segregating 802.1Q tagged
        traffic (like what is described above), and this doesn't need the ability to
        be set protocols per port. Also, If a bridge has many ports and it supports
        per-port setting, we might have to make much more extra configurations to
        change protocols of all ports.
      
      - I assume that the main perpose to set protocol per port is to assign S-VID
        according to C-VID, or to realize two logical bridges (one is an 802.1Q
        filtering bridge and the other is an 802.1ad filtering bridge) in one bridge.
        The former usually needs additional features such as vlan id mapping, and
        is likely to make bridge's code complicated. If a user wants, such enhanced
        features can be accomplished by a combination of multiple bridges, so it is
        not absolutely necessary to implement these features in a bridge itself.
        The latter is simply unnecessary because we can easily make two bridges of
        which one is an 802.1Q bridge and the other is an 802.1ad bridge.
      
      Here is an example of the enhanced feature that we can realize by using
      multiple bridges and veth interfaces. This way is documented in
      IEEE 802.1Q-2011 clause 15.4 (C-tagged service interface).
      
       +----+  +-------+p/u         +------+  +----+  +--+
       |eth0|--|802.1ad|----veth----|802.1Q|--|vnet|--|VM|
       +----+  |bridge |----veth----|bridge|  +----+  +--+
               +-------+p/u         +------+
      p/u: pvid/untagged
      
      In this configuration, we can map C-VIDs to any S-VID.
      For example;
       C-VID 10 and 20 to S-VID 100
       C-VID 30 to S-VID 110
      This is achieved through the 802.1Q bridge that forwards C-tagged frames to
      proper ports of the 802.1ad bridge.
      
      Changes:
      v1 -> v2:
      - Make the way to forward bridge group addresses more generic by introducing
        new mask, group_fwd_mask_required.
      
      RFC -> v1:
      - Add S-TAG tx offload.
      - Remove a fix around stacked vlan which has already been fixed.
      - Take into account Bridge Group Addresses.
      - Separate handling of protocol-mismatch from br_vlan_get_tag().
      - Change the way to set vlan_proto from netlink to sysfs because no other
        existing configuration per bridge can be set by netlink.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1a0b20b2
    • Toshiaki Makita's avatar
      bridge: Support 802.1ad vlan filtering · 204177f3
      Toshiaki Makita authored
      This enables us to change the vlan protocol for vlan filtering.
      We come to be able to filter frames on the basis of 802.1ad vlan tags
      through a bridge.
      
      This also changes br->group_addr if it has not been set by user.
      This is needed for an 802.1ad bridge.
      (See IEEE 802.1Q-2011 8.13.5.)
      
      Furthermore, this sets br->group_fwd_mask_required so that an 802.1ad
      bridge can forward the Nearest Customer Bridge group addresses except
      for br->group_addr, which should be passed to higher layer.
      
      To change the vlan protocol, write a protocol in sysfs:
      # echo 0x88a8 > /sys/class/net/br0/bridge/vlan_protocol
      Signed-off-by: default avatarToshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      204177f3
    • Toshiaki Makita's avatar
      bridge: Prepare for forwarding another bridge group addresses · f2808d22
      Toshiaki Makita authored
      If a bridge is an 802.1ad bridge, it must forward another bridge group
      addresses (the Nearest Customer Bridge group addresses).
      (For details, see IEEE 802.1Q-2011 8.6.3.)
      
      As user might not want group_fwd_mask to be modified by enabling 802.1ad,
      introduce a new mask, group_fwd_mask_required, which indicates addresses
      the bridge wants to forward. This will be set by enabling 802.1ad.
      Signed-off-by: default avatarToshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f2808d22
    • Toshiaki Makita's avatar
      bridge: Prepare for 802.1ad vlan filtering support · 8580e211
      Toshiaki Makita authored
      This enables a bridge to have vlan protocol informantion and allows vlan
      tag manipulation (retrieve, insert and remove tags) according to the vlan
      protocol.
      Signed-off-by: default avatarToshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8580e211
    • Toshiaki Makita's avatar
      bridge: Add 802.1ad tx vlan acceleration · 1c5abb6c
      Toshiaki Makita authored
      Bridge device doesn't need to embed S-tag into skb->data.
      Signed-off-by: default avatarToshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1c5abb6c
    • Arnd Bergmann's avatar
      net: xen-netback: include linux/vmalloc.h again · e7b599d7
      Arnd Bergmann authored
      commit e9ce7cb6 ("xen-netback: Factor queue-specific data into
      queue struct") added a use of vzalloc/vfree to interface.c, but
      removed the #include <linux/vmalloc.h> statement at the same time,
      which causes this build error:
      
      drivers/net/xen-netback/interface.c: In function 'xenvif_free':
      drivers/net/xen-netback/interface.c:754:2: error: implicit declaration of function 'vfree' [-Werror=implicit-function-declaration]
        vfree(vif->queues);
        ^
      cc1: some warnings being treated as errors
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Cc: Wei Liu <wei.liu2@citrix.com>
      Cc: Andrew J. Bennieston <andrew.bennieston@citrix.com>
      Acked-by: default avatarWei Liu <wei.liu2@citrix.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e7b599d7
    • Jongsung Kim's avatar
      net: phy: realtek: register/unregister multiple drivers properly · 71b9c4a8
      Jongsung Kim authored
      Using phy_drivers_register/_unregister functions is proper way to
      handle multiple PHY drivers registration. For Realtek PHY drivers
      module, it fixes incomplete current error-handlings up and adds
      missed unregistration for the RTL8201CP driver.
      Signed-off-by: default avatarJongsung Kim <neidhard.kim@lge.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      71b9c4a8
    • Yoshihiro Shimoda's avatar
      net: sh_eth: Fix timing of RACT setting in sh_eth_rx() · 1b72a0fc
      Yoshihiro Shimoda authored
      This patch fixes an issue that we cannot use nfs rootfs correctly
      on r8a7790 when the command below runs on a host PC.
      
       $ sudo ping -f -l 8 $BOARD_IP_ADDR
      
      Since the driver sets the RACT to 1 in the first while loop of
      sh_eth_rx(), the controller accepts a next frame into the next RX
      descriptor during the while loop. But, in the first while loop
      doesn't allocate a next skb. So, this patch removes the RACT setting
      in the first while loop of sh_eth_rx().
      Signed-off-by: default avatarYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1b72a0fc
    • Yoshihiro Shimoda's avatar
      net: sh_eth: Fix receive packet "exceeded" condition in sh_eth_rx() · 4f809cea
      Yoshihiro Shimoda authored
      This patch fixes the packet "exceeded" condition in sh_eth_rx() when
      RACT in an RX descriptor is not set and the "quota" is 0.
      Otherwise, kernel panic happens because the "&n->poll_list" is deleted
      twice in sh_eth_poll() which calls napi_complete() and net_rx_action().
      Signed-off-by: default avatarKouei Abe <kouei.abe.cp@renesas.com>
      Signed-off-by: default avatarYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4f809cea
    • Alexei Starovoitov's avatar
      net: filter: fix warning on 32-bit arch · 61f83d0d
      Alexei Starovoitov authored
      fix compiler warning on 32-bit architectures:
      
      net/core/filter.c: In function '__sk_run_filter':
      net/core/filter.c:540:22: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
      net/core/filter.c:550:22: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
      net/core/filter.c:560:22: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
      Reported-by: default avatarFengguang Wu <fengguang.wu@intel.com>
      Signed-off-by: default avatarAlexei Starovoitov <ast@plumgrid.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      61f83d0d
    • Jon Paul Maloy's avatar
      tipc: fix potential bug in function tipc_backlog_rcv · 02c00c2a
      Jon Paul Maloy authored
      In commit 4f4482dc ("tipc: compensate
      for double accounting in socket rcv buffer") we access 'truesize' of
      a received buffer after it might have been released by the function
      filter_rcv().
      
      In this commit we correct this by reading the value of 'truesize' to
      the stack before delivering the buffer to filter_rcv().
      Signed-off-by: default avatarJon Maloy <jon.maloy@ericsson.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      02c00c2a
    • Dan Carpenter's avatar
      net: sxgbe: remove duplicate SXGBE_CORE_L34_ADDCTL_REG define · cf97b8ff
      Dan Carpenter authored
      The SXGBE_CORE_L34_ADDCTL_REG define is cut and pasted twice so we can
      delete the second instance.
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      cf97b8ff
    • Dan Carpenter's avatar
      qlcnic: remove duplicate QLC_83XX_GET_LSO_CAPABILITY define · 5e3ec11b
      Dan Carpenter authored
      The QLC_83XX_GET_LSO_CAPABILITY define is cut and pasted twice so we can
      delete the second instance.
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Acked-by: default avatarSony Chacko <sony.chacko@qlogic.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5e3ec11b
    • David S. Miller's avatar
      Merge branch 'mlx4' · 9b07d735
      David S. Miller authored
      Amir Vadai says:
      
      ====================
      cpumask,net: affinity hint helper function
      
      This patchset will set affinity hint to influence IRQs to be allocated on the
      same NUMA node as the one where the card resides. As discussed in
      http://www.spinics.net/lists/netdev/msg271497.html
      
      If number of IRQs allocated is greater than the number of local NUMA cores, all
      local cores will be used first, and the rest of the IRQs will be on a remote
      NUMA node.
      If no NUMA support - IRQ's and cores will be mapped 1:1
      
      Since the utility function to calculate the mapping could be useful in other mq
      drivers in the kernel, it was added to cpumask.[ch]
      
      This patchset was tested and applied on top of net-next since the first
      consumer is a network device (mlx4_en).  Over commit fff1f59b "mac802154:
      llsec: add forgotten list_del_rcu in key removal"
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9b07d735
    • Yuval Atias's avatar
      net/mlx4_en: Use affinity hint · 9e311e77
      Yuval Atias authored
      The “affinity hint” mechanism is used by the user space
      daemon, irqbalancer, to indicate a preferred CPU mask for irqs.
      Irqbalancer can use this hint to balance the irqs between the
      cpus indicated by the mask.
      
      We wish the HCA to preferentially map the IRQs it uses to numa cores
      close to it.  To accomplish this, we use cpumask_set_cpu_local_first(), that
      sets the affinity hint according the following policy:
      First it maps IRQs to “close” numa cores.  If these are exhausted, the
      remaining IRQs are mapped to “far” numa cores.
      Signed-off-by: default avatarYuval Atias <yuvala@mellanox.com>
      Signed-off-by: default avatarAmir Vadai <amirv@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9e311e77
    • Amir Vadai's avatar
      cpumask: Utility function to set n'th cpu - local cpu first · da91309e
      Amir Vadai authored
      This function sets the n'th cpu - local cpu's first.
      For example: in a 16 cores server with even cpu's local, will get the
      following values:
      cpumask_set_cpu_local_first(0, numa, cpumask) => cpu 0 is set
      cpumask_set_cpu_local_first(1, numa, cpumask) => cpu 2 is set
      ...
      cpumask_set_cpu_local_first(7, numa, cpumask) => cpu 14 is set
      cpumask_set_cpu_local_first(8, numa, cpumask) => cpu 1 is set
      cpumask_set_cpu_local_first(9, numa, cpumask) => cpu 3 is set
      ...
      cpumask_set_cpu_local_first(15, numa, cpumask) => cpu 15 is set
      
      Curently this function will be used by multi queue networking devices to
      calculate the irq affinity mask, such that as many local cpu's as
      possible will be utilized to handle the mq device irq's.
      Signed-off-by: default avatarAmir Vadai <amirv@mellanox.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      da91309e
    • David S. Miller's avatar
      Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next · d4f38620
      David S. Miller authored
      Jeff Kirsher says:
      
      ====================
      Intel Wired LAN Driver Updates 2014-06-11
      
      This series contains updates to igb, i40e and i40evf.
      
      Todd makes a change to igb to un-hide invariant returns by getting rid of
      the E1000_SUCCESS define and converting those returns to return 0.
      
      Jacob separates the hardware logic from the set function, so that we can
      re-use it during a ptp_reset in igb.  This enables the reset to return
      functionality to the last know timestamp mode, rather than resetting the
      value.
      
      Ashish implements context flags for headwb and headwb_addr so that we
      do not have to keep them always enabled.
      
      Shannon updates the admin queue API for the new firmware, which adds
      set_pf_content, nvm_config_read/write, replaces set_phy_reset with
      set_phy_debug and removes nvm_read/write_reg_se.  Cleans up the driver
      to use the stored base_queue value since there is no need to read the
      PCI register for the PF's base queue on every single transmit queue
      enable and disable as we already have the value stored from reading
      the capability features at startup.
      
      Anjali changes the notion of source and destination for FD_SB in ethtool
      to align i40e with other drivers.  Adds flow director statistics to
      the PF stats.  Fixes a bug in ethtool for flow director drop packet
      filter where the drop action comes down as a ring_cookie value, so allow
      it as a special value that can be used to configure destination control.
      
      Mitch fixes the i40evf to keep the driver from going down when it is
      already in a down state.  This prevents a CPU soft lock in napi_disable().
      Also change the i40evf to check the admin queue error bits since the
      firmware can indicate any admin queue error states to the driver via
      some bits in the length registers.
      
      Neerav separates out the DCB capability and enabled flags because currently
      if the firmware reports DCB capability the driver enables
      I40E_FLAG_DCB_ENABLED flag.  When this flag is enabled the driver inserts
      a tag when transmitting a packet from the port even if there are no DCB
      traffic classes configured at the port.  So by adding the additional flag,
      I40E_FLAG_DCB_CAPABLE, that will be set when the DCB capability is present
      and the existing enabled flag will only be set if there are more than one
      traffic classes configured at the port.
      
      Greg fixes the i40e driver to not automatically accept tagged packets by
      default so that the system must request a VLAN tag packet filter to get
      packets with that tag.  Greg also converts i40e to use the in-kernel
      ether_addr_copy() instead of mempcy().
      
      Jesse removes the FTYPE field from the receive descriptor to match the
      hardware implementation.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d4f38620
    • David S. Miller's avatar
      Merge branch 'sctp-next' · 813ebbbf
      David S. Miller authored
      Daniel Borkmann says:
      
      ====================
      SCTP update
      
      This set contains transport path selection improvements in
      SCTP. Please see individual patches for details.
      ====================
      Acked-by: default avatarVlad Yasevich <vyasevich@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      813ebbbf
    • Daniel Borkmann's avatar
      net: sctp: fix incorrect type in gfp initializer · 9b87d465
      Daniel Borkmann authored
      This fixes the following sparse warning:
      
        net/sctp/associola.c:1556:29: warning: incorrect type in initializer (different base types)
        net/sctp/associola.c:1556:29:    expected bool [unsigned] [usertype] preload
        net/sctp/associola.c:1556:29:    got restricted gfp_t
      Signed-off-by: default avatarDaniel Borkmann <dborkman@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9b87d465
    • Daniel Borkmann's avatar
      net: sctp: improve sctp_select_active_and_retran_path selection · a7288c4d
      Daniel Borkmann authored
      In function sctp_select_active_and_retran_path(), we walk the
      transport list in order to look for the two most recently used
      ACTIVE transports (trans_pri, trans_sec). In case we didn't find
      anything ACTIVE, we currently just camp on a possibly PF or
      INACTIVE transport that is primary path; this behavior actually
      dates back to linux-history tree of the very early days of
      lksctp, and can yield a behavior that chooses suboptimal
      transport paths.
      
      Instead, be a bit more clever by reusing and extending the
      recently introduced sctp_trans_elect_best() handler. In case
      both transports are evaluated to have the same score resulting
      from their states, break the tie by looking at: 1) transport
      patch error count 2) last_time_heard value from each transport.
      
      This is analogous to Nishida's Quick Failover draft [1],
      section 5.1, 3:
      
        The sender SHOULD avoid data transmission to PF destinations.
        When all destinations are in either PF or Inactive state,
        the sender MAY either move the destination from PF to active
        state (and transmit data to the active destination) or the
        sender MAY transmit data to a PF destination. In the former
        scenario, (i) the sender MUST NOT notify the ULP about the
        state transition, and (ii) MUST NOT clear the destination's
        error counter. It is recommended that the sender picks the
        PF destination with least error count (fewest consecutive
        timeouts) for data transmission. In case of a tie (multiple PF
        destinations with same error count), the sender MAY choose the
        last active destination.
      
      Thus for sctp_select_active_and_retran_path(), we keep track of
      the best, if any, transport that is in PF state and in case no
      ACTIVE transport has been found (hence trans_{pri,sec} is NULL),
      we select the best out of the three: current primary_path and
      retran_path as well as a possible PF transport.
      
      The secondary may still camp on the original primary_path as
      before. The change in sctp_trans_elect_best() with a more fine
      grained tie selection also improves at the same time path selection
      for sctp_assoc_update_retran_path() in case of non-ACTIVE states.
      
        [1] http://tools.ietf.org/html/draft-nishida-tsvwg-sctp-failover-05Signed-off-by: default avatarDaniel Borkmann <dborkman@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a7288c4d
    • Daniel Borkmann's avatar
      net: sctp: migrate most recently used transport to ktime · e575235f
      Daniel Borkmann authored
      Be more precise in transport path selection and use ktime
      helpers instead of jiffies to compare and pick the better
      primary and secondary recently used transports. This also
      avoids any side-effects during a possible roll-over, and
      could lead to better path decision-making.
      Signed-off-by: default avatarDaniel Borkmann <dborkman@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e575235f
    • Daniel Borkmann's avatar
      net: sctp: refactor active path selection · b82e8f31
      Daniel Borkmann authored
      This patch just refactors and moves the code for the active
      path selection into its own helper function outside of
      sctp_assoc_control_transport() which is already big enough.
      No functional changes here.
      Signed-off-by: default avatarDaniel Borkmann <dborkman@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b82e8f31
    • Daniel Borkmann's avatar
      ktime: add ktime_after and ktime_before helper · 67cb9366
      Daniel Borkmann authored
      Add two minimal helper functions analogous to time_before() and
      time_after() that will later on both be needed by SCTP code.
      Signed-off-by: default avatarDaniel Borkmann <dborkman@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      67cb9366
    • David S. Miller's avatar
      Merge branch 'mac802154' · 9181a6bd
      David S. Miller authored
      Phoebe Buckheister says:
      
      ====================
      Recent llsec code introduced a memory leak on decryption failures during rx.
      This fixes said leak, and optimizes the receive loops for monitor and wpan
      devices to only deliver skbs to devices that are actually up. Also changes a
      dev_kfree_skb to kfree_skb when an invalid packet is dropped before being
      pushed into the stack.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9181a6bd
    • Phoebe Buckheister's avatar
      mac802154: don't deliver packets to devices that are down · 2d3b5b0a
      Phoebe Buckheister authored
      Only one WPAN devices can be active at any given time, so only deliver
      packets to that one interface that is actually up. Multiple monitors may
      be up at any given time, but we don't have to deliver to monitors that
      are down either.
      Signed-off-by: default avatarPhoebe Buckheister <phoebe.buckheister@itwm.fraunhofer.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2d3b5b0a
    • Phoebe Buckheister's avatar
      mac802154: properly free incoming skbs on decryption failure · a374eeb5
      Phoebe Buckheister authored
      mac802154 RX did not free skbs on decryption failure, assuming that the
      caller would when the local rx handler returned _DROP. This was false.
      Signed-off-by: default avatarPhoebe Buckheister <phoebe.buckheister@itwm.fraunhofer.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a374eeb5
    • Catherine Sullivan's avatar
      i40e/i40evf: Bump i40e to version 0.4.10 and i40evf to 0.9.34 · f8320902
      Catherine Sullivan authored
      Bump versions.
      
      Change-ID: Ic4a84354955061ca18321b1e97c9c30fe1563b5c
      Signed-off-by: default avatarCatherine Sullivan <catherine.sullivan@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      f8320902
    • Shannon Nelson's avatar
      i40e: use stored base_queue value · dfb699f9
      Shannon Nelson authored
      No need to read the PCI register for the PF's base queue on every single Tx
      queue enable and disable as we already have the value stored from reading
      the capability features at startup.
      
      Change-ID: Ic02fb622757742f43cb8269369c3d972d4f66555
      Signed-off-by: default avatarShannon Nelson <shannon.nelson@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      dfb699f9
    • Anjali Singhai Jain's avatar
      i40e: Fix a bug in ethtool for FD drop packet filter action · 387ce1a9
      Anjali Singhai Jain authored
      A drop action comes down as a ring_cookie value, so allow it as
      a special value that can be used to configure destination control.
      
      Also fix the output to filter read command accordingly.
      
      Change-ID: I9956723cee42f3194885403317dd21ed4a151144
      Signed-off-by: default avatarAnjali Singhai Jain <anjali.singhai@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      387ce1a9
    • Anjali Singhai Jain's avatar
      i40e/i40evf: Add Flow director stats to PF stats · 433c47de
      Anjali Singhai Jain authored
      Add members to stat struct to keep track of Flow director ATR and
      SideBand filter packet matches.
      
      Change-ID: Ibbb31a53c7adcc2bb96991dd80565442a2f2513c
      Signed-off-by: default avatarAnjali Singhai Jain <anjali.singhai@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      433c47de
    • Jesse Brandeburg's avatar
      i40e/i40evf: remove FTYPE · 2c50ef80
      Jesse Brandeburg authored
      This change drops the FTYPE field from the Rx descriptor, to
      match the hardware implementation.
      
      Change-ID: I66d31d2b43861da45e8ace4fb03df033abe88bab
      Signed-off-by: default avatarJesse Brandeburg <jesse.brandeburg@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      2c50ef80
    • Mitch Williams's avatar
      i40evf: check admin queue error bits · 912257e5
      Mitch Williams authored
      FW can indicate any admin queue error states to the driver via some bits
      in the length registers. Each time we process an admin queue message,
      check these bits and log any errors we find. Since the VF really can't
      do much, we just print the message and depend on the PF driver to clear
      things up on our behalf.
      
      Change-ID: I92bc6c53ce3b4400544e0ca19c5de2d27490bd0d
      Signed-off-by: default avatarMitch Williams <mitch.a.williams@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      912257e5
    • Greg Rose's avatar
      i40e/i40evf: User ether_addr_copy instead of memcpy · 9a173901
      Greg Rose authored
      Linux gives us a function to copy Ethernet MAC addresses, let's use it.
      
      Change-ID: I0c861900029ca5ea65a53ca39565852fb633f6fd
      Signed-off-by: default avatarGreg Rose <gregory.v.rose@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      9a173901
    • Greg Rose's avatar
      i40e: Do not accept tagged packets by default · 8c27d42e
      Greg Rose authored
      Remove the filter created by the firmware with the default MAC address it
      reads out of the NVM storage and a promiscuous VLAN tag and replace it
      with a filter that will not accept tagged packets by default.  The system
      must request a VLAN tag packet filter to get packets with that tag.
      
      Change-ID: I119e6c3603a039bd68282ba31bf26f33a575490a
      Signed-off-by: default avatarGreg Rose <gregory.v.rose@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      8c27d42e
    • Neerav Parikh's avatar
      i40e: Separate out DCB capability and enabled flags · 4d9b6043
      Neerav Parikh authored
      Currently if the firmware reports DCB capability the driver enables
      I40E_FLAG_DCB_ENABLED flag. When this flag is enabled the driver
      inserts a tag when transmitting a packet from the port even if there
      are no DCB traffic classes configured at the port.
      
      This patch adds a new flag I40E_FLAG_DCB_CAPABLE that will be set
      when the DCB capability is present and the existing flag
      I40E_FLAG_DCB_ENABLED will be set only if there are more than one
      traffic classes configured at the port.
      
      Change-ID: I24ccbf53ef293db2eba80c8a9772acf729795bd5
      Signed-off-by: default avatarNeerav Parikh <neerav.parikh@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      4d9b6043
    • Mitch Williams's avatar
      i40evf: don't go further down · ddf0b3a6
      Mitch Williams authored
      If the device is down, there's no place to go but up, so don't try to go
      down even more. This prevents a CPU soft lock in napi_disable().
      
      Change-ID: I8b058b9ee974dfa01c212fae2597f4f54b333314
      Signed-off-by: default avatarMitch Williams <mitch.a.williams@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      ddf0b3a6
    • Anjali Singhai Jain's avatar
      i40e: Change the notion of src and dst for FD_SB in ethtool · 04b73bd7
      Anjali Singhai Jain authored
      In XL710 devices we program FD filter's fields from Tx perspective of the flow.
      However the user interface exposed in ethtool should be compliant with the
      previous generation of drivers where a filter src and dst field are from
      the RX perspective. This patch changes the ethtool interface in this regard
      to match the other drivers.
      
      Change-ID: Iec6ccddd87357c4fb53ccf33aa0fae699faf70cf
      Signed-off-by: default avatarAnjali Singhai Jain <anjali.singhai@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      04b73bd7
    • Shannon Nelson's avatar
      i40e/i40evf: AdminQ API update for new FW · f94234ee
      Shannon Nelson authored
      Add set_pf_context, replace set_phy_reset with set_phy_debug, add
      nvm_config_read/write, remove nvm_read/write_reg_se and add some
      PHY types.
      
      With these changes we bump the API version to 1.2.
      
      Change-ID: I4dc3aec175c2316f66fc9b726b3f7d594699d84e
      Signed-off-by: default avatarShannon Nelson <shannon.nelson@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      f94234ee
    • Ashish Shah's avatar
      i40e/i40evf: set headwb Tx context flags and use them · 5d29896a
      Ashish Shah authored
      Set appropriate fields in Tx queue configuration virtchnl message
      to pf to enable headwb and setup headwb addr.
      Then use that info from the VF to set headwb and headwb_addr instead of
      always enabling them.
      
      Change-ID: I7d393d1b2b07f0f3355b3a4f7c2d3c6ee3b0d622
      Signed-off-by: default avatarAshish Shah <ashish.n.shah@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      5d29896a