20 Feb, 2016

11 commits

  • This is mainly testing bitmap construction and conversion to/from u32[]
    for now.

    Tested:
    qemu i386, x86_64, ppc, ppc64 BE and LE, ARM.

    Signed-off-by: David Decotigny
    Signed-off-by: David S. Miller

    David Decotigny
     
  • Aimed at transferring bitmaps to/from user-space in a 32/64-bit agnostic
    way.

    Tested:
    unit tests (next patch) on qemu i386, x86_64, ppc, ppc64 BE and LE,
    ARM.

    Signed-off-by: David Decotigny
    Reviewed-by: Ben Hutchings
    Signed-off-by: David S. Miller

    David Decotigny
     
  • Enable skb_tx_timestamp in hyperv netvsc.

    Signed-off-by: Simon Xiao
    Reviewed-by: K. Y. Srinivasan
    Reviewed-by: Haiyang Zhang
    Signed-off-by: David S. Miller

    sixiao@microsoft.com
     
  • In ipv4, when the machine receives a ICMP_FRAG_NEEDED message, the
    connected UDP socket will get EMSGSIZE message on its next read from the
    socket.
    However, this is not the case for ipv6.
    This fix modifies the udp err handler in Ipv6 for ICMP6_PKT_TOOBIG to
    make it similar to ipv4 behavior. That is when the machine gets an
    ICMP6_PKT_TOOBIG message, the connected UDP socket will get EMSGSIZE
    message on its next read from the socket.

    Signed-off-by: Wei Wang
    Acked-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Wei Wang
     
  • Interrupts registered by RoCE driver are not unregistered when
    msix interrupts are disabled during error recovery causing a
    crash. Detach the adapter instance from RoCE driver when error
    is detected to complete the cleanup. Attach the driver again after
    the adapter is recovered from error.

    Signed-off-by: Padmanabh Ratnakar
    Signed-off-by: David S. Miller

    Padmanabh Ratnakar
     
  • As requested by Rob Herring on patch
    https://patchwork.ozlabs.org/patch/580862/.

    This is a new property that it's still in net-next and has never been
    used in production, so we are not breaking anything with the
    incompatible binding change.

    Signed-off-by: Sergio Prado
    Acked-by: Rob Herring
    Signed-off-by: David S. Miller

    Sergio Prado
     
  • Nikolay Aleksandrov says:

    ====================
    bridge: mdb: add support for extended attributes

    This small set allows to extend the per mdb entry exported attributes,
    before this set we had only a structure exported which couldn't be changed
    because we would've broken user-space, after this we extend the attribute
    that was used for the structure and add per-mdb entry attributes after the
    struct has been added (see patch 02 for more details). Note that the reason
    we can't simply add an attribute after MDBA_MDB_ENTRY_INFO is that current
    users (e.g. iproute2) walk over the attribute list directly without
    checking for the attribute type.
    Patch 01 is a simple change to reduce one indentation level in order to
    avoid over 80 char lines.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • Currently mdb entries are exported directly as a structure inside
    MDBA_MDB_ENTRY_INFO attribute, we can't really extend it without
    breaking user-space. In order to export new mdb fields, I've converted
    the MDBA_MDB_ENTRY_INFO into a nested attribute which starts like before
    with struct br_mdb_entry (without header, as it's casted directly in
    iproute2) and continues with MDBA_MDB_EATTR_ attributes. This way we
    keep compatibility with older users and can export new data.
    I've tested this with iproute2, both with and without support for the
    added attribute and it works fine.
    So basically we again have MDBA_MDB_ENTRY_INFO with struct br_mdb_entry
    inside but it may contain also some additional MDBA_MDB_EATTR_ attributes
    such as MDBA_MDB_EATTR_TIMER which can be parsed by user-space.

    So the new structure is:
    [MDBA_MDB] = {
    [MDBA_MDB_ENTRY] = {
    [MDBA_MDB_ENTRY_INFO]
    [MDBA_MDB_ENTRY_INFO] {
    Signed-off-by: David S. Miller

    Nikolay Aleksandrov
     
  • Switch the port check and skip if it's null, this allows us to reduce one
    indentation level.

    Signed-off-by: Nikolay Aleksandrov
    Signed-off-by: David S. Miller

    Nikolay Aleksandrov
     
  • bpf_percpu_hash_update() expects rcu lock to be held and warns if it's not,
    which pointed out a missing rcu read lock.

    Fixes: 15a07b338 ("bpf: add lookup/update support for per-cpu hash and array maps")
    Signed-off-by: Sasha Levin
    Acked-by: Alexei Starovoitov
    Acked-by: Daniel Borkmann
    Signed-off-by: David S. Miller

    Sasha Levin
     
  • Jeff Kirsher says:

    ====================
    40GbE Intel Wired LAN Driver Updates 2016-02-19

    This series contains updates to i40e/i40evf only.

    Alex Duyck splits up the descriptor count function from the function that
    stops the ring to have access to the descriptor count used for the data
    portion of the frame. The rewrites the logic for how we determine if we
    can transmit the frame or if it needs to be linearized. Place the checksum
    close to TSO since they have a lot in common and it can help to reduce the
    decision tree for how to handle the frame as the first check in TSO is to
    see if checksumming is offloaded.

    Carolyn adds functions to blink leds on devices using 10GBaseT PHY since
    MAC registers used in other designs do not work in this device configuration.
    Fixes an issue where a previously removed message has returned.

    Kevin increases the timeout when checking GLGEN_RSTAT_DEVSTATE bit since
    linking with particular PHY types, the amount of time it takes for the
    GLGEN_RSTAT_DEVSTATE to be set increases greatly.

    Neerav changes the receive queues to not wait to be disabled before DCB
    has been reconfigured, like transmit queues.

    Anjali adds new register definitions for programming the parser, flow
    director and RSS blocks in the hardware.

    Shannon adds the new opcodes and structures used for asking the firmware
    to update receive control registers that need extra care when being
    accessed while under heavy traffic. Integrates the new AdminQ functions
    for safely accessing the receive control registers that may be affected
    by heavy small packet traffic.

    Mitch provides another colorful patch description on letting go of
    the stale local VSI pointer when the VF resets.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     

19 Feb, 2016

29 commits

  • Bump.

    Change-ID: Ifa19aadaa892ad103f1b96fe2361fa690912c6a3
    Signed-off-by: Jesse Brandeburg
    Tested-by: Andrew Bowers
    Signed-off-by: Jeff Kirsher

    Jesse Brandeburg
     
  • If we reset a VF, its VSI goes away, and it gets a new one. So don't
    hang on to the now-stale local VSI pointer. It just leads to suffering
    and kernel panics.

    Change-ID: Ia8823b4e85893e95e963acee284968022b29177a
    Signed-off-by: Mitch Williams
    Tested-by: Andrew Bowers
    Signed-off-by: Jeff Kirsher

    Mitch Williams
     
  • We need to suspend scheduling or any pending service task during driver
    unload process, so that new task will not be scheduled. This patch sets
    the suspend flag bit during reload which avoids service task execution.

    Change-ID: I017c57b5d6656564556e3c5387da671369a572ac
    Signed-off-by: Pandi Kumar Maharajan
    Tested-by: Andrew Bowers
    Signed-off-by: Jeff Kirsher

    Pandi Kumar Maharajan
     
  • Use the new AdminQ functions for safely accessing the Rx control
    registers that may be affected by heavy small packet traffic.

    We can't use AdminQ calls in i40e_clear_hw() because the HW is being
    initialized and the AdminQ is not alive. We recently added an AQ
    related replacement for reading PFLAN_QALLOC, and this patch puts
    back the original register read.

    Change-ID: Ib027168c954a5733299aa3a4ce5f8218c6bb5636
    Signed-off-by: Shannon Nelson
    Tested-by: Andrew Bowers
    Signed-off-by: Jeff Kirsher

    Shannon Nelson
     
  • Use the new AdminQ functions for safely accessing the Rx control
    registers that may be affected by heavy small packet traffic.

    Change-ID: Ibb00983e8dcba71f4b760222a609a5fcaa726f18
    Signed-off-by: Shannon Nelson
    Tested-by: Andrew Bowers
    Signed-off-by: Jeff Kirsher

    Shannon Nelson
     
  • Add the new opcodes and struct used for asking the firmware to update Rx
    control registers that need extra care when being accessed while under
    heavy traffic - e.g. sustained 64byte packets at line rate on all ports.
    The firmware will take extra steps to be sure the register accesses
    are successful.

    The registers involved are:
    PFQF_CTL_0
    PFQF_HENA
    PFQF_FDALLOC
    PFQF_HREGION
    PFLAN_QALLOC
    VPQF_CTL
    VFQF_HENA
    VFQF_HREGION
    VSIQF_CTL
    VSILAN_QBASE
    VSILAN_QTABLE
    VSIQF_TCREGION
    PFQF_HKEY
    VFQF_HKEY
    PRTQF_CTL_0
    GLFCOE_RCTL
    GLFCOE_RSOF
    GLQF_CTL
    GLQF_SWAP
    GLQF_HASH_MSK
    GLQF_HASH_INSET
    GLQF_HSYM
    GLQF_FC_MSK
    GLQF_FC_INSET
    GLQF_FD_MSK
    PRTQF_FD_INSET
    PRTQF_FD_FLXINSET
    PRTQF_FD_MSK

    Change-ID: I56c8144000da66ad99f68948d8a184b2ec2aeb3e
    Signed-off-by: Shannon Nelson
    Tested-by: Andrew Bowers
    Signed-off-by: Jeff Kirsher

    Shannon Nelson
     
  • Return from i40e_vsi_reinit_setup() if vsi param is NULL.
    This makes this code consistent with all the other code that
    checks for NULL before using one of the VSI pointers accessed
    with an indexed variable. (Indexed VSI pointers are
    intentionally set to NULL in i40e_vsi_clear() and
    i40e_remove().

    Change-ID: I3bc8b909c70fd2439334eeae994d151f61480985
    Signed-off-by: John Underwood
    Tested-by: Andrew Bowers
    Signed-off-by: Jeff Kirsher

    John Underwood
     
  • This patch adds 7 new register definitions for programming the
    parser, flow director and RSS blocks in the HW.

    Change-ID: I31e76673125275f3c69a14c646361919d04dc987
    Signed-off-by: Anjali Singhai Jain
    Tested-by: Andrew Bowers
    Signed-off-by: Jeff Kirsher

    Anjali Singhai Jain
     
  • This fixes an issue where a previously removed message
    has returned. Changing the message type to dev_dbg
    leaves the info, if desired, but takes it out of normal
    everyday usage. Also changed call to only provide port
    data when its valid and not when its not (delete case).

    Change-ID: Ief6f33b915f6364c24fa8e5789c2fc3168b5e2ed
    Signed-off-by: Carolyn Wyborny
    Tested-by: Andrew Bowers
    Signed-off-by: Jeff Kirsher

    Carolyn Wyborny
     
  • Just like Tx queues don't wait for Rx queues to be disabled before
    DCB has been reconfigured.
    Check the queues are disabled only after the DCB configuration has
    been applied to the VSI(s) managed by the PF driver.

    In case of any timeout issue a PF reset to recover.

    Change-ID: Ic51e94c25baf9a5480cee983f35d15575a88642c
    Signed-off-by: Neerav Parikh
    Tested-by: Andrew Bowers
    Signed-off-by: Jeff Kirsher

    Neerav Parikh
     
  • When linking with particular PHY types (ex: copper PHY), the amount of
    time it takes for the GLGEN_RSTAT_DEVSTATE to be set increases greatly,
    which can lead to a timeout and failure to load the driver.

    Change-ID: If02be0dfcd7c57fdde2d5c81cd63651260cd2029
    Signed-off-by: Kevin Scott
    Tested-by: Andrew Bowers
    Signed-off-by: Jeff Kirsher

    Kevin Scott
     
  • This patch fixes a problem where the ethtool identify adapter
    functionality did not work for some copper PHY's. Without this
    patch, the blink led functionality fails on some parts. This
    patch adds PHY write code to blink led's on parts where this
    functionality is contained in the PHY rather than the MAC.

    Change-ID: Iee7b3453f61d5ffd0b3d03f720ee4f17f919fcc2
    Signed-off-by: Carolyn Wyborny
    Tested-by: Andrew Bowers
    Signed-off-by: Jeff Kirsher

    Carolyn Wyborny
     
  • This patch adds functions to blink led on devices using
    10GBaseT PHY since MAC registers used in other designs
    do not work in this device configuration.

    Change-ID: Id4b88c93c649fd2b88073a00b42867a77c761ca3
    Signed-off-by: Carolyn Wyborny
    Tested-by: Andrew Bowers
    Signed-off-by: Jeff Kirsher

    Carolyn Wyborny
     
  • On all of the other Intel drivers we place checksum close to TSO as they
    have a significant amount in common and it can help to reduce the decision
    tree for how to handle the frame as the first check in TSO is to see if
    checksumming is offloaded, and if it is not we can skip _BOTH_ TSO and Tx
    checksum offload based on a single check.

    Signed-off-by: Alexander Duyck
    Tested-by: Andrew Bowers
    Signed-off-by: Jeff Kirsher

    Alexander Duyck
     
  • This patch is meant to rewrite the logic for how we determine if we can
    transmit the frame or if it needs to be linearized.

    The previous code for this function was using a mix of division and modulus
    division as a part of computing if we need to take the slow path. Instead
    I have replaced this by simply working with a sliding window which will
    tell us if the frame would be capable of causing a single packet to span
    several descriptors.

    The logic for the scan is fairly simple. If any given group of 6 fragments
    is less than gso_size - 1 then it is possible for us to have one byte
    coming out of the first fragment, 6 fragments, and one or more bytes coming
    out of the last fragment. This gives us a total of 8 fragments
    which exceeds what we can allow so we send such frames to be linearized.

    Arguably the use of modulus might be more exact as the approach I propose
    may generate some false positives. However the likelihood of us taking much
    of a hit for those false positives is fairly low, and I would rather not
    add more overhead in the case where we are receiving a frame composed of 4K
    pages.

    Signed-off-by: Alexander Duyck
    Tested-by: Andrew Bowers
    Signed-off-by: Jeff Kirsher

    Alexander Duyck
     
  • In an upcoming patch I would like to have access to the descriptor count
    used for the data portion of the frame. For this reason I am splitting up
    the descriptor count function from the function that stops the ring.

    Also in order to try and reduce unnecessary duplication of code I am moving
    the slow-path portions of the code out of being inline calls so that we can
    just jump to them and process them instead of having to build them into
    each function that calls them.

    Signed-off-by: Alexander Duyck
    Tested-by: Andrew Bowers
    Signed-off-by: Jeff Kirsher

    Alexander Duyck
     
  • Jeff Kirsher says:

    ====================
    40GbE Intel Wired LAN Driver Updates 2016-02-18

    This series contains updates to i40e and i40evf only.

    Alex Duyck provides all the patches in the series to update and fix the
    drivers. Fixed the driver to drop the outer checksum offload on UDP
    tunnels, since the issue is that the upper levels of the stack never
    requested such an offload and it results in possible errors. Updates the
    TSO function to just use u64 values, so we do not have to end up casting
    u32 values. In the TSO path, factored out the L4 header offsets allowing
    us to ignore the L4 header offsets when dealing with the L3 checksum and
    length update. Consolidates all of the spots where we were updating
    either the TCP or IP checksums in the TSO and checksum path into the TSO
    function. Fixed two issues by adding support for IPv4 encapsulated in
    IPv6, first issue was the fact that iphdr(skb)->protocol was being used to
    test for the outer transport protocol which breaks IPv6 support. The second
    was that we cleared the flag for v4 going to v6, but we did not take care
    of txflags going the other way. Added support for IPv6 extension headers
    in setting up the Tx checksum. Added exception handling to the Tx
    checksum path so that we can handle cases of TSO where the frame is bad,
    or Tx checksum where we did not recognize a protocol. Fixed a number of
    issues to make certain that we are using the correct protocols when
    parsing both the inner and outer headers of a frame that is mixed between
    IPv4 and IPv6 for inner and outer. Updated the feature flags to reflect
    the newly enabled/added features.

    Sorry, no witty patch descriptions this time around, probably should
    let Mitch help in writing patch descriptions for Alex. :-)
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • Commit e5d3a51cefbb ("bnx2x: extend DCBx support") was missing HSI
    changes for big-endian machine, breaking compilation on such
    platforms.

    Reported-by: kbuild test robot
    Signed-off-by: Yuval Mintz
    Signed-off-by: David S. Miller

    Yuval Mintz
     
  • This patch updates the code for determining the L4 protocol and L3 header
    length so that when IPv6 extension headers are being used we can determine
    the offset and type of the L4 protocol.

    Signed-off-by: Alexander Duyck
    Tested-by: Andrew Bowers
    Signed-off-by: Jeff Kirsher

    Alexander Duyck
     
  • Recent changes should have enabled support for IPv6 based tunnels and
    support for TSO with outer UDP checksums. As such we can update the
    feature flags to reflect that.

    In addition we can clean-up the flags that aren't needed such as SCTP and
    RXCSUM since having the bits there doesn't add any value.

    I also found one spot where we were setting the same flag twice. It looks
    like it was probably a git merge error that resulted in the line being
    duplicated. As such I have dropped it in this patch.

    Signed-off-by: Alexander Duyck
    Acked-by: Anjali Singhai Jain
    Tested-by: Andrew Bowers
    Signed-off-by: Jeff Kirsher

    Alexander Duyck
     
  • Recent changes should have enabled support for IPv6 based tunnels and
    support for TSO with outer UDP checksums. As such we can update the
    feature flags to reflect that.

    In addition we can clean-up the flags that aren't needed such as SCTP and
    RXCSUM since having the bits there doesn't add any value.

    Signed-off-by: Alexander Duyck
    Tested-by: Andrew Bowers
    Signed-off-by: Jeff Kirsher

    Alexander Duyck
     
  • All of the documentation in the datasheets for the XL710 do not call out
    any reason to exclude support for IPv6 based tunnels. As such I am
    dropping the code that was excluding these tunnel types from having their
    port numbers recognized. This way we can take advantage of things such as
    checksum offload for inner headers over IPv6 based VXLAN or GENEVE
    tunnels.

    Signed-off-by: Alexander Duyck
    Tested-by: Andrew Bowers
    Signed-off-by: Jeff Kirsher

    Alexander Duyck
     
  • This patch contains a number of fixes to make certain that we are using
    the correct protocols when parsing both the inner and outer headers of a
    frame that is mixed between IPv4 and IPv6 for inner and outer.

    Signed-off-by: Alexander Duyck
    Acked-by: Kiran Patil
    Tested-by: Andrew Bowers
    Signed-off-by: Jeff Kirsher

    Alexander Duyck
     
  • The XL722 has support for providing the outer UDP tunnel checksum on
    transmits. Make use of this feature to support segmenting UDP tunnels with
    outer checksums enabled.

    Signed-off-by: Alexander Duyck
    Tested-by: Andrew Bowers
    Signed-off-by: Jeff Kirsher

    Alexander Duyck
     
  • This is mostly a minor clean-up for the Rx checksum path in order to avoid
    some of the unnecessary conditional checks that were being applied.

    Signed-off-by: Alexander Duyck
    Tested-by: Andrew Bowers
    Signed-off-by: Jeff Kirsher

    Alexander Duyck
     
  • Yuval Mintz says:

    ====================
    qed{,e}: Add vlan filtering offload

    This series adds vlan filtering offload to qede.
    First patch introduces small additional infrastructure needed in
    qed to support it, while second contains the main bulk of driver changes.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • Device would start receiving only vlan-tagged traffic with tags matching
    that of one of the configured vlan IDs, unless:
    - Device is expliicly placed in PROMISC mode.
    - Device exhausts its vlan filter credits.

    Signed-off-by: Sudarsana Reddy Kalluru
    Signed-off-by: Yuval Mintz
    Signed-off-by: David S. Miller

    Sudarsana Reddy Kalluru
     
  • Today, interfaces are working in vlan-promisc mode; But once
    vlan filtering offloaded would be supported, we'll need a method to
    control it directly [e.g., when setting device to PROMISC, or when
    running out of vlan credits].

    This adds the necessary API for L2 client to manually choose whether to
    accept all vlans or only those for which filters were configured.

    Signed-off-by: Yuval Mintz
    Signed-off-by: David S. Miller

    Yuval Mintz
     
  • Files in sysfs are created using the name from the phy_driver struct,
    when two names are the same we may get a duplicate filename warning,
    fix this.

    Reported-by: kernel test robot
    Signed-off-by: Andrew F. Davis
    Signed-off-by: David S. Miller

    Andrew F. Davis