1. 14 May, 2018 31 commits
    • Marcelo Ricardo Leitner's avatar
      sched: cls: enable verbose logging · 81c7288b
      Marcelo Ricardo Leitner authored
      Currently, when the rule is not to be exclusively executed by the
      hardware, extack is not passed along and offloading failures don't
      get logged. The idea was that hardware failures are okay because the
      rule will get executed in software then and this way it doesn't confuse
      unware users.
      
      But this is not helpful in case one needs to understand why a certain
      rule failed to get offloaded. Considering it may have been a temporary
      failure, like resources exceeded or so, reproducing it later and knowing
      that it is triggering the same reason may be challenging.
      
      The ultimate goal is to improve Open vSwitch debuggability when using
      flower offloading.
      
      This patch adds a new flag to enable verbose logging. With the flag set,
      extack will be passed to the driver, which will be able to log the
      error. As the operation itself probably won't fail (not because of this,
      at least), current iproute will already log it as a Warning.
      
      The flag is generic, so it can be reused later. No need to restrict it
      just for HW offloading. The command line will follow the syntax that
      tc-ebpf already uses, tc ... [ verbose ] ... , and extend its meaning.
      
      For example:
      # ./tc qdisc add dev p7p1 ingress
      # ./tc filter add dev p7p1 parent ffff: protocol ip prio 1 \
      	flower verbose \
      	src_mac ed:13:db:00:00:00 dst_mac 01:80:c2:00:00:d0 \
      	src_ip 56.0.0.0 dst_ip 55.0.0.0 action drop
      Warning: TC offload is disabled on net device.
      # echo $?
      0
      # ./tc filter add dev p7p1 parent ffff: protocol ip prio 1 \
      	flower \
      	src_mac ff:13:db:00:00:00 dst_mac 01:80:c2:00:00:d0 \
      	src_ip 56.0.0.0 dst_ip 55.0.0.0 action drop
      # echo $?
      0
      Signed-off-by: default avatarMarcelo Ricardo Leitner <marcelo.leitner@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      81c7288b
    • David S. Miller's avatar
      Merge branch 'stmmac-dwmac-sun8i-Support-R40' · 4def4783
      David S. Miller authored
      Chen-Yu Tsai says:
      
      ====================
      net: stmmac: dwmac-sun8i: Support R40
      
      This is a resend of the patches for net-next split out from my R40
      Ethernet support v2 series, as requested by David Miller. The arm-soc
      bits will follow, once I rework the A64 system controller compatible.
      
      Patches 1, 2, and 3 clean up the dwmac-sun8i binding.
      
      Patch 4 adds device tree binding for Allwinner R40's Ethernet
      controller.
      
      Patch 5 converts regmap access of the syscon region in the dwmac-sun8i
      driver to regmap_field, in anticipation of different field widths on
      the R40.
      
      Patch 6 introduces custom plumbing in the dwmac-sun8i driver to fetch
      a regmap from another device, by looking up said device via a phandle,
      then getting the regmap associated with that device.
      
      Patch 7 adds support for different or absent TX/RX delay chain ranges
      to the dwmac-sun8i driver.
      
      Patch 8 adds support for the R40's ethernet controller.
      
      Excerpt from original cover letter:
      
      Changes since v1:
      
        - Default to fetching regmap from device pointed to by syscon phandle,
          and falling back to syscon API if that fails.
      
        - Dropped .syscon_from_dev field in device data as a result of the
          previous change.
      
        - Added a large comment block explaining the first change.
      
        - Simplified description of syscon property in sun8i-dwmac binding.
      
        - Regmap now only exposes the EMAC/GMAC register, but retains the
          offset within its address space.
      
        - Added patches for A64, which reuse the same sun8i-dwmac changes.
      
      This series adds support for the DWMAC based Ethernet controller found
      on the Allwinner R40 SoC. The controller is either a DWMAC clone or
      DWMAC core with its registers rearranged. This is already supported by
      the dwmac-sun8i driver. The glue layer control registers, unlike other
      sun8i family SoCs, is not in the system controller region, but in the
      clock control unit, like with the older A20 and A31 SoCs.
      
      While we reuse the bindings for dwmac-sun8i using a syscon phandle
      reference, we need some custom plumbing for the clock driver to export
      a regmap that only allows access to the GMAC register to the dwmac-sun8i
      driver. An alternative would be to allow drivers to register custom
      syscon devices with their own regmap and locking.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4def4783
    • Chen-Yu Tsai's avatar
      net: stmmac: dwmac-sun8i: Add support for GMAC on Allwinner R40 SoC · 9bf5085a
      Chen-Yu Tsai authored
      The Allwinner R40 SoC has the EMAC controller supported by dwmac-sun8i.
      It is named "GMAC", while EMAC refers to the 10/100 Mbps Ethernet
      controller supported by sun4i-emac. The controller is the same, but
      the R40 has the glue layer controls in the clock control unit (CCU),
      with a reduced RX delay chain, and no TX delay chain.
      
      This patch adds support for it using the framework laid out by previous
      patches to map the differences.
      Signed-off-by: default avatarChen-Yu Tsai <wens@csie.org>
      Acked-by: default avatarMaxime Ripard <maxime.ripard@bootlin.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9bf5085a
    • Chen-Yu Tsai's avatar
      net: stmmac: dwmac-sun8i: Support different ranges for TX/RX delay chains · 7b270b72
      Chen-Yu Tsai authored
      On the R40 SoC, the RX delay chain only has a range of 0~7 (hundred
      picoseconds), instead of 0~31. Also the TX delay chain is completely
      absent.
      
      This patch adds support for different ranges by adding per-compatible
      maximum values in the variant data. A maximum of 0 indicates that the
      delay chain is not supported or absent.
      Signed-off-by: default avatarChen-Yu Tsai <wens@csie.org>
      Acked-by: default avatarMaxime Ripard <maxime.ripard@bootlin.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7b270b72
    • Chen-Yu Tsai's avatar
      net: stmmac: dwmac-sun8i: Allow getting syscon regmap from external device · 49a06cae
      Chen-Yu Tsai authored
      On the Allwinner R40 SoC, the "GMAC clock" register is in the CCU
      address space. Using a standard syscon to access it provides no
      coordination with the CCU driver for register access. Neither does
      it prevent this and other drivers from accessing other, maybe critical,
      clock control registers. On other SoCs, the register is in the "system
      control" address space, which might also contain controls for mapping
      SRAM to devices or the CPU. This hardware has the same issues.
      
      Instead, for these types of setups, we let the device containing the
      control register create a regmap tied to it. We can then get the device
      from the existing syscon phandle, and retrieve the regmap with
      dev_get_regmap().
      Signed-off-by: default avatarChen-Yu Tsai <wens@csie.org>
      Acked-by: default avatarMaxime Ripard <maxime.ripard@bootlin.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      49a06cae
    • Chen-Yu Tsai's avatar
      net: stmmac: dwmac-sun8i: Use regmap_field for syscon register access · 25ae15fb
      Chen-Yu Tsai authored
      On the Allwinner R40, the "GMAC clock" register is located in the CCU
      block, at a different register address than the other SoCs that have
      it in the "system control" block.
      
      This patch converts the use of regmap to regmap_field for mapping and
      accessing the syscon register, so we can have the register address in
      the variants data, and not in the actual register manipulation code.
      
      This patch only converts regmap_read() and regmap_write() calls to
      regmap_field_read() and regmap_field_write() calls. There are some
      places where it might make sense to switch to regmap_field_update_bits(),
      but this is not done here to keep the patch simple.
      Signed-off-by: default avatarChen-Yu Tsai <wens@csie.org>
      Acked-by: default avatarMaxime Ripard <maxime.ripard@bootlin.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      25ae15fb
    • Chen-Yu Tsai's avatar
      dt-bindings: net: dwmac-sun8i: Add binding for GMAC on Allwinner R40 SoC · eef8811d
      Chen-Yu Tsai authored
      The Allwinner R40 SoC has the EMAC controller supported by dwmac-sun8i.
      It is named "GMAC", while EMAC refers to the 10/100 Mbps Ethernet
      controller supported by sun4i-emac. The controller is the same, but
      the R40 has the glue layer controls in the clock control unit (CCU),
      with a reduced RX delay chain, and no TX delay chain.
      
      This patch adds the R40 specific bits to the dwmac-sun8i binding.
      Signed-off-by: default avatarChen-Yu Tsai <wens@csie.org>
      Reviewed-by: default avatarRob Herring <robh@kernel.org>
      Acked-by: default avatarMaxime Ripard <maxime.ripard@bootlin.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      eef8811d
    • Chen-Yu Tsai's avatar
      dt-bindings: net: dwmac-sun8i: simplify description of syscon property · a6fe692e
      Chen-Yu Tsai authored
      The syscon property is used to point to the device that holds the glue
      layer control register known as the "EMAC (or GMAC) clock register".
      
      We do not need to explicitly list what compatible strings are needed, as
      this information is readily available in the user manuals. Also the
      "syscon" device type is more of an implementation detail. There are many
      ways to access a register not in a device's address range, the syscon
      interface being the most generic and unrestricted one.
      
      Simplify the description so that it says what it is supposed to
      describe.
      Signed-off-by: default avatarChen-Yu Tsai <wens@csie.org>
      Reviewed-by: default avatarRob Herring <robh@kernel.org>
      Acked-by: default avatarMaxime Ripard <maxime.ripard@bootlin.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a6fe692e
    • Chen-Yu Tsai's avatar
      dt-bindings: net: dwmac-sun8i: Sort syscon compatibles by alphabetical order · 9ed3fec3
      Chen-Yu Tsai authored
      The A83T syscon compatible was appended to the syscon compatibles list,
      instead of inserted in to preserve the ordering.
      
      Move it to the proper place to keep the list sorted.
      Signed-off-by: default avatarChen-Yu Tsai <wens@csie.org>
      Reviewed-by: default avatarRob Herring <robh@kernel.org>
      Acked-by: default avatarMaxime Ripard <maxime.ripard@bootlin.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9ed3fec3
    • Chen-Yu Tsai's avatar
      dt-bindings: net: dwmac-sun8i: Clean up clock delay chain descriptions · a4a78a97
      Chen-Yu Tsai authored
      The clock delay chains found in the glue layer for dwmac-sun8i are only
      used with RGMII PHYs. They are not intended for non-RGMII PHYs, such as
      MII external PHYs or the internal PHY. Also, a recent SoC has a smaller
      range of possible values for the delay chain.
      
      This patch reformats the delay chain section of the device tree binding
      to make it clear that the delay chains only apply to RGMII PHYs, and
      make it easier to add the R40-specific bits later.
      Signed-off-by: default avatarChen-Yu Tsai <wens@csie.org>
      Reviewed-by: default avatarRob Herring <robh@kernel.org>
      Acked-by: default avatarMaxime Ripard <maxime.ripard@bootlin.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a4a78a97
    • David S. Miller's avatar
      Merge branch 'dsa-mv88e6xxx-remove-Global-1-setup' · 62150dfe
      David S. Miller authored
      Vivien Didelot says:
      
      ====================
      net: dsa: mv88e6xxx: remove Global 1 setup
      
      The mv88e6xxx driver is still writing arbitrary registers at setup time,
      e.g. priority override bits. Add ops for them and provide specific setup
      functions for priority and stats before getting rid of the erroneous
      mv88e6xxx_g1_setup code, as previously done with Global 2.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      62150dfe
    • Vivien Didelot's avatar
      net: dsa: mv88e6xxx: add a stats setup function · 447b1bb8
      Vivien Didelot authored
      Now that the Global 1 specific setup function only setup the statistics
      unit, kill it in favor of a mv88e6xxx_stats_setup function.
      Signed-off-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      447b1bb8
    • Vivien Didelot's avatar
      net: dsa: mv88e6xxx: add IEEE and IP mapping ops · 93e18d61
      Vivien Didelot authored
      All Marvell switch families except 88E6390 have direct registers in
      Global 1 for IEEE and IP priorities override mapping. The 88E6390 uses
      indirect tables instead.
      
      Add .ieee_pri_map and .ip_pri_map ops to distinct that and call them
      from a mv88e6xxx_pri_setup helper. Only non-6390 are concerned ATM.
      Signed-off-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      93e18d61
    • Vivien Didelot's avatar
      net: dsa: mv88e6xxx: use helper for 6390 histogram · 408d2deb
      Vivien Didelot authored
      The Marvell 88E6390 model has its histogram mode bits moved in the
      Global 1 Control 2 register. Use the previously introduced
      mv88e6xxx_g1_ctl2_mask helper to set them.
      
      At the same time complete the documentation of the said register.
      Signed-off-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      408d2deb
    • David S. Miller's avatar
      Merge branch '40GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue · 23548dab
      David S. Miller authored
      Jeff Kirsher says:
      
      ====================
      40GbE Intel Wired LAN Driver Updates 2018-05-14
      
      This series contains updates to virtchnl, i40e and i40evf.
      
      Bruce cleans up whitespace and unnecessary parentheses in virtchnl.
      
      Jake does a number of stat cleanups in the i40e driver, including
      cleanup of code indentation, whitespace issues, remove duplicate stats,
      fix grammar in code comment and general spring cleaning of the
      statistics code.
      
      Patryk fixes an issue where we recalculate vectors left and vectors
      wanted but do not take into account the reduced number of queue pairs
      per VSI.
      
      Harshitha adds tx_busy stat to ethtool stats to track the number of
      times we return NETDEV_TX_BUSY to the stack during transmit.
      
      Paweł fixes a potential system crash when unloading the VF driver after
      a hardware reset.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      23548dab
    • David S. Miller's avatar
      Merge branch 'kernel-add-support-to-collect-hardware-logs-in-crash-recovery-kernel' · 42b956fd
      David S. Miller authored
      Rahul Lakkireddy says:
      
      ====================
      kernel: add support to collect hardware logs in crash recovery kernel
      
      On production servers running variety of workloads over time, kernel
      panic can happen sporadically after days or even months. It is
      important to collect as much debug logs as possible to root cause
      and fix the problem, that may not be easy to reproduce. Snapshot of
      underlying hardware/firmware state (like register dump, firmware
      logs, adapter memory, etc.), at the time of kernel panic will be very
      helpful while debugging the culprit device driver.
      
      This series of patches add new generic framework that enable device
      drivers to collect device specific snapshot of the hardware/firmware
      state of the underlying device in the crash recovery kernel. In crash
      recovery kernel, the collected logs are added as elf notes to
      /proc/vmcore, which is copied by user space scripts for post-analysis.
      
      The sequence of actions done by device drivers to append their device
      specific hardware/firmware logs to /proc/vmcore are as follows:
      
      1. During probe (before hardware is initialized), device drivers
      register to the vmcore module (via vmcore_add_device_dump()), with
      callback function, along with buffer size and log name needed for
      firmware/hardware log collection.
      
      2. vmcore module allocates the buffer with requested size. It adds
      an elf note and invokes the device driver's registered callback
      function.
      
      3. Device driver collects all hardware/firmware logs into the buffer
      and returns control back to vmcore module.
      
      The device specific hardware/firmware logs can be seen as elf notes
      with note type 0x700, as shown below:
      
      Displaying notes found at file offset 0x00001000 with length 0x040032c0:
        Owner                 Data size	Description
        LINUX                0x02000fec	Unknown note type: (0x00000700)
        LINUX                0x02000fec	Unknown note type: (0x00000700)
        CORE                 0x00000150	NT_PRSTATUS (prstatus structure)
        CORE                 0x00000150	NT_PRSTATUS (prstatus structure)
        CORE                 0x00000150	NT_PRSTATUS (prstatus structure)
        CORE                 0x00000150	NT_PRSTATUS (prstatus structure)
        CORE                 0x00000150	NT_PRSTATUS (prstatus structure)
        CORE                 0x00000150	NT_PRSTATUS (prstatus structure)
        CORE                 0x00000150	NT_PRSTATUS (prstatus structure)
        CORE                 0x00000150	NT_PRSTATUS (prstatus structure)
        VMCOREINFO           0x00000785	Unknown note type: (0x00000000)
      
      Patch 1 adds API to vmcore module to allow drivers to register callback
      to collect the device specific hardware/firmware logs.  The logs will
      be added to /proc/vmcore as elf notes.
      
      Patch 2 updates read and mmap logic to append device specific hardware/
      firmware logs as elf notes.
      
      Patch 3 shows a cxgb4 driver example using the API to collect
      hardware/firmware logs in crash recovery kernel, before hardware is
      initialized.
      
      Thanks,
      Rahul
      
      ---
      v8:
      - Added missing linux/types.h header include.
      - Removed __vmcore_add_device_dump().
      
      v7:
      - Removed "CHELSIO" vendor identifier in Elf Note name. Instead,
        writing "LINUX".
      - Moved vmcoredd_header to new file include/uapi/linux/vmcore.h
      - Reworked vmcoredd_header to include Elf Note as part of the header
        itself.
      - Removed vmcoredd_get_note_size().
      - Renamed vmcoredd_write_note() to vmcoredd_write_header().
      - Replaced all "unsigned long" with "unsigned int" for device dump
        size since max size of Elf Word is u32.
      
      v6:
      - Reworked device dump elf note name to contain vendor identifier.
      - Added vmcoredd_header that precedes actual dump in the Elf Note.
      - Device dump's name is moved inside vmcoredd_header.
      - Added "CHELSIO" string as vendor identifier in the Elf Note name
        for cxgb4 device dumps.
      
      v5:
      - Removed enabling CONFIG_PROC_VMCORE_DEVICE_DUMP by default and
        updated help message.
      
      v4:
      - Made __vmcore_add_device_dump() static.
      - Moved compile check to define vmcore_add_device_dump() to
        crash_dump.h to fix compilation when vmcore.c is not compiled in.
      - Convert ---help--- to help in Kconfig as indicated by checkpatch.
      - Rebased to tip.
      
      v3:
      - Dropped sysfs crashdd module.
      - Exported dumps as elf notes. Suggested by Eric Biederman
        <ebiederm@xmission.com>.  Added as patch 2 in this version.
      - Added CONFIG_PROC_VMCORE_DEVICE_DUMP to allow configuring device
        dump support.
      - Moved logic related to adding dumps from crashdd to vmcore module.
      - Rename all crashdd* to vmcoredd*.
      - Updated comments.
      
      v2:
      - Added ABI Documentation for crashdd.
      - Directly use octal permission instead of macro.
      
      Changes since rfc v2:
      - Moved exporting crashdd from procfs to sysfs. Suggested by
        Stephen Hemminger <stephen@networkplumber.org>
      - Moved code from fs/proc/crashdd.c to fs/crashdd/ directory.
      - Replaced all proc API with sysfs API and updated comments.
      - Calling driver callback before creating the binary file under
        crashdd sysfs.
      - Changed binary dump file permission from S_IRUSR to S_IRUGO.
      - Changed module name from CRASH_DRIVER_DUMP to CRASH_DEVICE_DUMP.
      
      rfc v2:
      - Collecting logs in 2nd kernel instead of during kernel panic.
        Suggested by Eric Biederman <ebiederm@xmission.com>.
      - Added new crashdd module that exports /proc/crashdd/ containing
        driver's registered hardware/firmware logs in patch 1.
      - Replaced the API to allow drivers to register their hardware/firmware
        log collect routine in crash recovery kernel in patch 1.
      - Updated patch 2 to use the new API in patch 1.
      ====================
      Acked-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      42b956fd
    • Rahul Lakkireddy's avatar
      cxgb4: collect hardware dump in second kernel · 1dde532d
      Rahul Lakkireddy authored
      Register callback to collect hardware/firmware dumps in second kernel
      before hardware/firmware is initialized. The dumps for each device
      will be available as elf notes in /proc/vmcore in second kernel.
      Signed-off-by: default avatarRahul Lakkireddy <rahul.lakkireddy@chelsio.com>
      Signed-off-by: default avatarGanesh Goudar <ganeshgr@chelsio.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1dde532d
    • Rahul Lakkireddy's avatar
      vmcore: append device dumps to vmcore as elf notes · 7efe48df
      Rahul Lakkireddy authored
      Update read and mmap logic to append device dumps as additional notes
      before the other elf notes. We add device dumps before other elf notes
      because the other elf notes may not fill the elf notes buffer
      completely and we will end up with zero-filled data between the elf
      notes and the device dumps. Tools will then try to decode this
      zero-filled data as valid notes and we don't want that. Hence, adding
      device dumps before the other elf notes ensure that zero-filled data
      can be avoided. This also ensures that the device dumps and the
      other elf notes can be properly mmaped at page aligned address.
      
      Incorporate device dump size into the total vmcore size. Also update
      offsets for other program headers after the device dumps are added.
      
      Suggested-by: Eric Biederman <ebiederm@xmission.com>.
      Signed-off-by: default avatarRahul Lakkireddy <rahul.lakkireddy@chelsio.com>
      Signed-off-by: default avatarGanesh Goudar <ganeshgr@chelsio.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7efe48df
    • Rahul Lakkireddy's avatar
      vmcore: add API to collect hardware dump in second kernel · 2724273e
      Rahul Lakkireddy authored
      The sequence of actions done by device drivers to append their device
      specific hardware/firmware logs to /proc/vmcore are as follows:
      
      1. During probe (before hardware is initialized), device drivers
      register to the vmcore module (via vmcore_add_device_dump()), with
      callback function, along with buffer size and log name needed for
      firmware/hardware log collection.
      
      2. vmcore module allocates the buffer with requested size. It adds
      an Elf note and invokes the device driver's registered callback
      function.
      
      3. Device driver collects all hardware/firmware logs into the buffer
      and returns control back to vmcore module.
      
      Ensure that the device dump buffer size is always aligned to page size
      so that it can be mmaped.
      
      Also, rename alloc_elfnotes_buf() to vmcore_alloc_buf() to make it more
      generic and reserve NT_VMCOREDD note type to indicate vmcore device
      dump.
      
      Suggested-by: Eric Biederman <ebiederm@xmission.com>.
      Signed-off-by: default avatarRahul Lakkireddy <rahul.lakkireddy@chelsio.com>
      Signed-off-by: default avatarGanesh Goudar <ganeshgr@chelsio.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2724273e
    • Paweł Jabłoński's avatar
      i40evf: Fix a hardware reset support in VF driver · 27392e57
      Paweł Jabłoński authored
      This patch fixes a hardware reset support in VF driver.
      It is needed because when a hardware reset is detected
      adapter->state is in __I40EVF_RESETTING state before
      i40evf_reset_task is called. Without this patch
      unloading VF driver after a hardware reset ends
      with a system crash.
      Signed-off-by: default avatarPaweł Jabłoński <pawel.jablonski@intel.com>
      Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      27392e57
    • Jacob Keller's avatar
      i40e: free the skb after clearing the bitlock · c79756cb
      Jacob Keller authored
      In commit bbc4e7d2 ("i40e: fix race condition with PTP_TX_IN_PROGRESS
      bits") we modified the code which handles Tx timestamps so that we would
      clear the progress bit as soon as possible.
      
      A later commit 0bc0706b ("i40e: check for Tx timestamp timeouts during
      watchdog") introduced similar code for detecting and handling cleanup of
      a blocked Tx timestamp. This code did not use the same pattern for cleaning
      up the skb.
      
      Update this code to wait to free the skb until after the bit lock is
      free, by first setting the ptp_tx_skb to NULL and clearing the lock.
      Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
      Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      c79756cb
    • Jacob Keller's avatar
      i40e: cleanup wording in a header comment · 9c0c3b83
      Jacob Keller authored
      Fix up the English in the header comment for i40e_ptp_tx_hang.
      Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
      Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      9c0c3b83
    • Jacob Keller's avatar
      i40evf: remove MAX_QUEUES and just use I40EVF_MAX_REQ_QUEUES · aa4a0654
      Jacob Keller authored
      We don't really need to have separate definitions for MAX_QUEUES and
      I40EVF_MAX_REQ_QUEUES, since we'll always be limited by how many queues
      we request anyways. If we haven't enabled requesting the maximum number
      of queues, there's no reason to have our call to alloc_etherdev_mq
      actually pass the higher value, since we'd never enable those queues
      anyways.
      Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
      Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      aa4a0654
    • Harshitha Ramamurthy's avatar
      i40e: add tx_busy to ethtool stats · 3f76d01f
      Harshitha Ramamurthy authored
      This patch adds the tx_busy stat to the ethtool stats. The tx_busy
      stat tracks the number of times we return NETDEV_TX_BUSY to the stack
      during transmit.
      Signed-off-by: default avatarHarshitha Ramamurthy <harshitha.ramamurthy@intel.com>
      Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      3f76d01f
    • Patryk Małek's avatar
      i40e: Fix recalculation of MSI-X vectors for VMDq · ca12c9d4
      Patryk Małek authored
      This patch adds a recalculation of number of MSI-X
      vectors for VMDq in the case where we have less
      vectors available than we would want to reserve for
      VMDq.
      
      It fixes the issue where we recalculate vectors left
      and vectors wanted but we didn't take into account
      the reduced number of queue pairs per VSI.
      Signed-off-by: default avatarPatryk Małek <patryk.malek@intel.com>
      Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      ca12c9d4
    • Jacob Keller's avatar
      i40e: cleanup whitespace for some ethtool stat definitions · 132ee00e
      Jacob Keller authored
      A future patch is going to refactor some of the ethtool statistic code.
      To keep the patches easy to review, cleanup some of the indentation used
      for macro definitions first.
      Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
      Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      132ee00e
    • Jacob Keller's avatar
      i40e: remove duplicate pfc stats · 7e201881
      Jacob Keller authored
      The pfc related priority stats are already handled separately as these
      stats are actually arrays of length I40E_MAX_USER_PRIORITY. Thus,
      including them within i40e_gstrings_stats will just duplicate data.
      
      Worse, the sizeof will be incorrect, as it will be the total size of the
      stat arrays, which in this case is 8 * sizeof(u64), so we will only copy
      the stat contents as if they were a u32.
      
      Since we already correctly handle these stats else where, remove them
      from the i40e_gstrings_stats.
      Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
      Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      7e201881
    • Jacob Keller's avatar
      i40e: calculate ethtool stats size in a separate function · 0ded9c61
      Jacob Keller authored
      Use a separate function to calculate the number of stats for
      a particular device. This helps reduce the clutter in
      i40e_get_sset_count().
      Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
      Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      0ded9c61
    • Jeff Kirsher's avatar
      i40evf: Fix client header define · e691b771
      Jeff Kirsher authored
      Fix up the VF client header define, since it is the same as the PF
      client header.
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
      e691b771
    • Bruce Allan's avatar
      virtchnl: Whitespace and parenthesis cleanup · 0fccb85a
      Bruce Allan authored
      Clean up existing instances of unnecessary parentheses in if
      statement and change order of conditionals to make it easier to read
      
      The opening /* should be followed by a single space and the closing */
      should be preceded with a single space.
      Signed-off-by: default avatarBruce Allan <bruce.w.allan@intel.com>
      Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      0fccb85a
    • Anders Roxell's avatar
      net: ipv4: ipconfig: fix unused variable · 289e1f4e
      Anders Roxell authored
      When CONFIG_PROC_FS isn't set, variable ipconfig_dir isn't used.
      net/ipv4/ipconfig.c:167:31: warning: ‘ipconfig_dir’ defined but not used [-Wunused-variable]
       static struct proc_dir_entry *ipconfig_dir;
                                     ^~~~~~~~~~~~
      Move the declaration of ipconfig_dir inside the CONFIG_PROC_FS ifdef to
      fix the warning.
      
      Fixes: c04d2cb2 ("ipconfig: Write NTP server IPs to /proc/net/ipconfig/ntp_servers")
      Signed-off-by: default avatarAnders Roxell <anders.roxell@linaro.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      289e1f4e
  2. 12 May, 2018 1 commit
  3. 11 May, 2018 8 commits
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 4bc87198
      Linus Torvalds authored
      Pull networking fixes from David Miller:
      
       1) Verify lengths of keys provided by the user is AF_KEY, from Kevin
          Easton.
      
       2) Add device ID for BCM89610 PHY. Thanks to Bhadram Varka.
      
       3) Add Spectre guards to some ATM code, courtesy of Gustavo A. R.
          Silva.
      
       4) Fix infinite loop in NSH protocol code. To Eric Dumazet we are most
          grateful for this fix.
      
       5) Line up /proc/net/netlink headers properly. This fix from YU Bo, we
          do appreciate.
      
       6) Use after free in TLS code. Once again we are blessed by the
          honorable Eric Dumazet with this fix.
      
       7) Fix regression in TLS code causing stalls on partial TLS records.
          This fix is bestowed upon us by Andrew Tomt.
      
       8) Deal with too small MTUs properly in LLC code, another great gift
          from Eric Dumazet.
      
       9) Handle cached route flushing properly wrt. MTU locking in ipv4, to
          Hangbin Liu we give thanks for this.
      
      10) Fix regression in SO_BINDTODEVIC handling wrt. UDP socket demux.
          Paolo Abeni, he gave us this.
      
      11) Range check coalescing parameters in mlx4 driver, thank you Moshe
          Shemesh.
      
      12) Some ipv6 ICMP error handling fixes in rxrpc, from our good brother
          David Howells.
      
      13) Fix kexec on mlx5 by freeing IRQs in shutdown path. Daniel Juergens,
          you're the best!
      
      14) Don't send bonding RLB updates to invalid MAC addresses. Debabrata
          Benerjee saved us!
      
      15) Uh oh, we were leaking in udp_sendmsg and ping_v4_sendmsg. The ship
          is now water tight, thanks to Andrey Ignatov.
      
      16) IPSEC memory leak in ixgbe from Colin Ian King, man we've got holes
          everywhere!
      
      17) Fix error path in tcf_proto_create, Jiri Pirko what would we do
          without you!
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (92 commits)
        net sched actions: fix refcnt leak in skbmod
        net: sched: fix error path in tcf_proto_create() when modules are not configured
        net sched actions: fix invalid pointer dereferencing if skbedit flags missing
        ixgbe: fix memory leak on ipsec allocation
        ixgbevf: fix ixgbevf_xmit_frame()'s return type
        ixgbe: return error on unsupported SFP module when resetting
        ice: Set rq_last_status when cleaning rq
        ipv4: fix memory leaks in udp_sendmsg, ping_v4_sendmsg
        mlxsw: core: Fix an error handling path in 'mlxsw_core_bus_device_register()'
        bonding: send learning packets for vlans on slave
        bonding: do not allow rlb updates to invalid mac
        net/mlx5e: Err if asked to offload TC match on frag being first
        net/mlx5: E-Switch, Include VF RDMA stats in vport statistics
        net/mlx5: Free IRQs in shutdown path
        rxrpc: Trace UDP transmission failure
        rxrpc: Add a tracepoint to log ICMP/ICMP6 and error messages
        rxrpc: Fix the min security level for kernel calls
        rxrpc: Fix error reception on AF_INET6 sockets
        rxrpc: Fix missing start of call timeout
        qed: fix spelling mistake: "taskelt" -> "tasklet"
        ...
      4bc87198
    • Linus Torvalds's avatar
      Merge tag 'nfs-for-4.17-2' of git://git.linux-nfs.org/projects/anna/linux-nfs · a1f45efb
      Linus Torvalds authored
      Pull NFS client fixes from Anna Schumaker:
       "These patches fix both a possible corruption during NFSoRDMA MR
        recovery, and a sunrpc tracepoint crash.
      
        Additionally, Trond has a new email address to put in the MAINTAINERS
        file"
      
      * tag 'nfs-for-4.17-2' of git://git.linux-nfs.org/projects/anna/linux-nfs:
        Change Trond's email address in MAINTAINERS
        sunrpc: Fix latency trace point crashes
        xprtrdma: Fix list corruption / DMAR errors during MR recovery
      a1f45efb
    • Roman Mashak's avatar
      net sched actions: fix refcnt leak in skbmod · a52956df
      Roman Mashak authored
      When application fails to pass flags in netlink TLV when replacing
      existing skbmod action, the kernel will leak refcnt:
      
      $ tc actions get action skbmod index 1
      total acts 0
      
              action order 0: skbmod pipe set smac 00:11:22:33:44:55
               index 1 ref 1 bind 0
      
      For example, at this point a buggy application replaces the action with
      index 1 with new smac 00:aa:22:33:44:55, it fails because of zero flags,
      however refcnt gets bumped:
      
      $ tc actions get actions skbmod index 1
      total acts 0
      
              action order 0: skbmod pipe set smac 00:11:22:33:44:55
               index 1 ref 2 bind 0
      $
      
      Tha patch fixes this by calling tcf_idr_release() on existing actions.
      
      Fixes: 86da71b5 ("net_sched: Introduce skbmod action")
      Signed-off-by: default avatarRoman Mashak <mrv@mojatatu.com>
      Acked-by: default avatarCong Wang <xiyou.wangcong@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a52956df
    • Linus Torvalds's avatar
      Merge tag 'ceph-for-4.17-rc5' of git://github.com/ceph/ceph-client · ac428036
      Linus Torvalds authored
      Pull ceph fixes from Ilya Dryomov:
       "These patches fix two long-standing bugs in the DIO code path, one of
        which is a crash trivially triggerable with splice()"
      
      * tag 'ceph-for-4.17-rc5' of git://github.com/ceph/ceph-client:
        ceph: fix iov_iter issues in ceph_direct_read_write()
        libceph: add osd_req_op_extent_osd_data_bvecs()
        ceph: fix rsize/wsize capping in ceph_direct_read_write()
      ac428036
    • Dan Murphy's avatar
      net: phy: DP83TC811: Introduce support for the DP83TC811 phy · b753a9fa
      Dan Murphy authored
      Add support for the DP83811 phy.
      
      The DP83811 supports both rgmii and sgmii interfaces.
      There are 2 part numbers for this the DP83TC811R does not
      reliably support the SGMII interface but the DP83TC811S will.
      
      There is not a way to differentiate these parts from the
      hardware or register set.  So this is controlled via the DT
      to indicate which phy mode is required.  Or the part can be
      strapped to a certain interface.
      
      Data sheet can be found here:
      http://www.ti.com/product/DP83TC811S-Q1/description
      http://www.ti.com/product/DP83TC811R-Q1/descriptionSigned-off-by: default avatarDan Murphy <dmurphy@ti.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b753a9fa
    • Jiri Pirko's avatar
      net: sched: fix error path in tcf_proto_create() when modules are not configured · d68d75fd
      Jiri Pirko authored
      In case modules are not configured, error out when tp->ops is null
      and prevent later null pointer dereference.
      
      Fixes: 33a48927 ("sched: push TC filter protocol creation into a separate function")
      Signed-off-by: default avatarJiri Pirko <jiri@mellanox.com>
      Acked-by: default avatarCong Wang <xiyou.wangcong@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d68d75fd
    • Linus Torvalds's avatar
      Merge tag 'sh-for-4.17-fixes' of git://git.libc.org/linux-sh · 3f5f8596
      Linus Torvalds authored
      Pull arch/sh fixes from Rich Felker:
       "Fixes for critical regressions and a build failure.
      
        The regressions were introduced in 4.15 and 4.17-rc1 and prevented
        booting on affected systems"
      
      * tag 'sh-for-4.17-fixes' of git://git.libc.org/linux-sh:
        sh: switch to NO_BOOTMEM
        sh: mm: Fix unprotected access to struct device
        sh: fix build failure for J2 cpu with SMP disabled
      3f5f8596
    • Ganesh Goudar's avatar
      cxgb4: avoid schedule while atomic · 443e2dab
      Ganesh Goudar authored
      do not sleep while adding or deleting udp tunnel.
      
      Fixes: 846eac3f ("cxgb4: implement udp tunnel callbacks")
      Signed-off-by: default avatarGanesh Goudar <ganeshgr@chelsio.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      443e2dab