1. 28 4月, 2018 4 次提交
  2. 23 4月, 2018 2 次提交
    • J
      s390/qeth: fix request-side race during cmd IO timeout · db71bbbd
      Julian Wiedmann 提交于
      Submitting a cmd IO request (usually on the WRITE device, but for IDX
      also on the READ device) is currently done with ccw_device_start()
      and a manual timeout in the caller.
      On timeout, the caller cleans up the related resources (eg. IO buffer).
      But 1) the IO might still be active and utilize those resources, and
          2) when the IO completes, qeth_irq() will attempt to clean up the
             same resources again.
      
      Instead of introducing additional resource locking, switch to
      ccw_device_start_timeout() to ensure IO termination after timeout, and
      let the IRQ handler alone deal with cleaning up after a request.
      
      This also removes a stray write->irq_pending reset from
      clear_ipacmd_list(). The routine doesn't terminate any pending IO on
      the WRITE device, so this should be handled properly via IO timeout
      in the IRQ handler.
      Signed-off-by: NJulian Wiedmann <jwi@linux.vnet.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      db71bbbd
    • J
      s390/qeth: fix MAC address update sequence · bcacfcbc
      Julian Wiedmann 提交于
      When changing the MAC address on a L2 qeth device, current code first
      unregisters the old address, then registers the new one.
      If HW rejects the new address (or the IO fails), the device ends up with
      no operable address at all.
      
      Re-order the code flow so that the old address only gets dropped if the
      new address was registered successfully. While at it, add logic to catch
      some corner-cases.
      Signed-off-by: NJulian Wiedmann <jwi@linux.vnet.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      bcacfcbc
  3. 16 4月, 2018 1 次提交
  4. 22 3月, 2018 1 次提交
  5. 10 3月, 2018 6 次提交
  6. 21 12月, 2017 4 次提交
  7. 03 12月, 2017 2 次提交
    • J
      s390/qeth: build max size GSO skbs on L2 devices · 0cbff6d4
      Julian Wiedmann 提交于
      The current GSO skb size limit was copy&pasted over from the L3 path,
      where it is needed due to a TSO limitation.
      As L2 devices don't offer TSO support (and thus all GSO skbs are
      segmented before they reach the driver), there's no reason to restrict
      the stack in how large it may build the GSO skbs.
      
      Fixes: d52aec97 ("qeth: enable scatter/gather in layer 2 mode")
      Signed-off-by: NJulian Wiedmann <jwi@linux.vnet.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0cbff6d4
    • J
      s390/qeth: fix GSO throughput regression · 6d69b1f1
      Julian Wiedmann 提交于
      Using GSO with small MTUs currently results in a substantial throughput
      regression - which is caused by how qeth needs to map non-linear skbs
      into its IO buffer elements:
      compared to a linear skb, each GSO-segmented skb effectively consumes
      twice as many buffer elements (ie two instead of one) due to the
      additional header-only part. This causes the Output Queue to be
      congested with low-utilized IO buffers.
      
      Fix this as follows:
      If the MSS is low enough so that a non-SG GSO segmentation produces
      order-0 skbs (currently ~3500 byte), opt out from NETIF_F_SG. This is
      where we anticipate the biggest savings, since an SG-enabled
      GSO segmentation produces skbs that always consume at least two
      buffer elements.
      
      Larger MSS values continue to get a SG-enabled GSO segmentation, since
      1) the relative overhead of the additional header-only buffer element
      becomes less noticeable, and
      2) the linearization overhead increases.
      
      With the throughput regression fixed, re-enable NETIF_F_SG by default to
      reap the significant CPU savings of GSO.
      
      Fixes: 5722963a ("qeth: do not turn on SG per default")
      Reported-by: NNils Hoppmann <niho@de.ibm.com>
      Signed-off-by: NJulian Wiedmann <jwi@linux.vnet.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      6d69b1f1
  8. 24 11月, 2017 1 次提交
    • G
      s390: net: add SPDX identifiers to the remaining files · ab9953ff
      Greg Kroah-Hartman 提交于
      It's good to have SPDX identifiers in all files to make it easier to
      audit the kernel tree for correct licenses.
      
      Update the drivers/s390/net/ files with the correct SPDX license
      identifier based on the license text in the file itself.  The SPDX
      identifier is a legally binding shorthand, which can be used instead of
      the full boiler plate text.
      
      This work is based on a script and data from Thomas Gleixner, Philippe
      Ombredanne, and Kate Stewart.
      
      Cc: Julian Wiedmann <jwi@linux.vnet.ibm.com>
      Cc: Ursula Braun <ubraun@linux.vnet.ibm.com>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Kate Stewart <kstewart@linuxfoundation.org>
      Cc: Philippe Ombredanne <pombredanne@nexb.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      ab9953ff
  9. 20 10月, 2017 2 次提交
  10. 19 9月, 2017 5 次提交
    • J
      s390/qeth: translate SETVLAN/DELVLAN errors · 2aa48671
      Julian Wiedmann 提交于
      Properly return any error encountered during VLAN processing to the
      the caller.
      Resulting change in behaviour: if SETVLAN fails while registering a
      new VLAN ID, the stack no longer creates the corresponding vlan device.
      Signed-off-by: NJulian Wiedmann <jwi@linux.vnet.ibm.com>
      Reviewed-by: NUrsula Braun <ubraun@linux.vnet.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      2aa48671
    • J
      s390/qeth: don't take queue lock in send_packet_fast() · 7c2e9ba3
      Julian Wiedmann 提交于
      Locking the output queue prior to TX is needed on OSA devices,
      to synchronize against a packing flush from the TX completion code
      (via qeth_check_outbound_queue()).
      But send_packet_fast() is only used for IQDs, which don't do packing.
      So remove the locking, and apply some easy cleanups.
      Signed-off-by: NJulian Wiedmann <jwi@linux.vnet.ibm.com>
      Reviewed-by: NUrsula Braun <ubraun@linux.vnet.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7c2e9ba3
    • H
      s390/qeth: add VNICC get/set timeout support · 349d13d5
      Hans Wippel 提交于
      HiperSockets allow configuring so called VNIC Characteristics (VNICC)
      that influence how the underlying hardware handles packets. For VNICCs,
      additional commands for getting and setting timeouts are available.
      Currently, the learning VNICC uses these commands.
      
      * Learning VNICC: If learning is enabled on a qeth device, the device
        learns the source MAC addresses of outgoing packets and incoming
        packets to those learned MAC addresses are received.
      
      For learning, the timeout specifies the idle period in seconds, after
      which the underlying hardware removes a learned MAC address again.
      
      This patch adds support for the IPA commands that are required to get
      and set the current timeout values for the learning VNIC characteristic.
      Also, it introduces the sysfs interface that allows users to configure
      the timeout.
      Signed-off-by: NHans Wippel <hwippel@linux.vnet.ibm.com>
      Reviewed-by: NJulian Wiedmann <jwi@linux.vnet.ibm.com>
      Signed-off-by: NJulian Wiedmann <jwi@linux.vnet.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      349d13d5
    • H
      s390/qeth: add VNICC enable/disable support · caa1f0b1
      Hans Wippel 提交于
      HiperSocket devices allow enabling and disabling so called VNIC
      Characteristics (VNICC) that influence how the underlying hardware
      handles packets. These VNICCs are:
      
      * Flooding VNICC: Flooding allows specifying if packets to unknown
        destination MAC addresses are received by the qeth device.
      
      * Multicast flooding VNICC: Multicast flooding allows specifying if
        packets to multicast MAC addresses are received by the qeth device.
      
      * Learning VNICC: If learning is enabled on a qeth device, the device
        learns the source MAC addresses of outgoing packets and incoming
        packets to those learned MAC addresses are received.
      
      * Takeover setvmac VNICC: If takeover setvmac is configured on a qeth
        device, the MAC address of this device can be configured on a
        different qeth device with the setvmac IPA command.
      
      * Takeover by learning VNICC: If takeover learning is enabled on a qeth
        device, the MAC address of this device can be learned (learning VNICC)
        on a different qeth device.
      
      * BridgePort invisible VNICC: If BridgePort invisible is enabled on a
        qeth device, (1) packets from this device are not sent to a BridgePort
        enabled qeth device and (2) packets coming from a BridgePort enabled
        qeth device are not received by this device.
      
      * Receive broadcast VNICC: Receive broadcast allows configuring if a
        qeth device receives packets with the broadcast destination MAC
        address.
      
      This patch adds support for the IPA commands that are required to enable
      and disable these VNIC characteristics on qeth devices. As a
      prerequisite, it also adds the query commands IPA command.
      
      The query commands IPA command allows requesting the supported commands
      for each characteristic from the underlying hardware.
      
      Additionally, this patch provides users with a sysfs user interface to
      enable/disable the VNICCs mentioned above.
      Signed-off-by: NHans Wippel <hwippel@linux.vnet.ibm.com>
      Reviewed-by: NJulian Wiedmann <jwi@linux.vnet.ibm.com>
      Signed-off-by: NJulian Wiedmann <jwi@linux.vnet.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      caa1f0b1
    • H
      s390/qeth: add basic VNICC support · a45b3faf
      Hans Wippel 提交于
      VNIC Characteristics (VNICC) are features of HiperSockets that define
      how packets are handled by the underlying network hardware. For example,
      if the VNICC flooding is configured on a qeth device, ethernet frames to
      unknown destination MAC addresses are received.
      
      Currently, there is support for seven VNICCs: flooding, multicast
      flooding, receive broadcast, learning, takeover learning, takeover
      setvmac, bridge invisible. Also, six IPA commands exist for configuring
      VNICCs on a qeth device: query characteristics, query commands, enable
      characteristic, disable characteristic, set timeout, get timeout.
      
      This patch adds the basic code infrastructure for VNICC support to qeth.
      It allows querying VNICC support from the underlying hardware. To this
      end, it adds:
      
      * basic message formats for IPA commands
      * basic data structures
      * basic error handling
      * query characteristics IPA command support
      
      The query characteristics IPA command allows requesting the currently
      supported and currently enabled VNIC characteristics from the underlying
      hardware.
      
      Support for the other IPA commands and for the configuration of VNICCs
      is added in follow-up patches together with the respective user
      interface functions.
      Signed-off-by: NHans Wippel <hwippel@linux.vnet.ibm.com>
      Reviewed-by: NJulian Wiedmann <jwi@linux.vnet.ibm.com>
      Signed-off-by: NJulian Wiedmann <jwi@linux.vnet.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a45b3faf
  11. 19 8月, 2017 6 次提交
  12. 16 8月, 2017 5 次提交
  13. 21 6月, 2017 1 次提交