1. 07 12月, 2020 2 次提交
  2. 02 12月, 2020 6 次提交
  3. 21 11月, 2020 4 次提交
    • J
      s390/qeth: fix tear down of async TX buffers · 7ed10e16
      Julian Wiedmann 提交于
      When qeth_iqd_tx_complete() detects that a TX buffer requires additional
      async completion via QAOB, it might fail to replace the queue entry's
      metadata (and ends up triggering recovery).
      
      Assume now that the device gets torn down, overruling the recovery.
      If the QAOB notification then arrives before the tear down has
      sufficiently progressed, the buffer state is changed to
      QETH_QDIO_BUF_HANDLED_DELAYED by qeth_qdio_handle_aob().
      
      The tear down code calls qeth_drain_output_queue(), where
      qeth_cleanup_handled_pending() will then attempt to replace such a
      buffer _again_. If it succeeds this time, the buffer ends up dangling in
      its replacement's ->next_pending list ... where it will never be freed,
      since there's no further call to qeth_cleanup_handled_pending().
      
      But the second attempt isn't actually needed, we can simply leave the
      buffer on the queue and re-use it after a potential recovery has
      completed. The qeth_clear_output_buffer() in qeth_drain_output_queue()
      will ensure that it's in a clean state again.
      
      Fixes: 72861ae7 ("qeth: recovery through asynchronous delivery")
      Signed-off-by: NJulian Wiedmann <jwi@linux.ibm.com>
      Signed-off-by: NJakub Kicinski <kuba@kernel.org>
      7ed10e16
    • J
      s390/qeth: fix af_iucv notification race · 8908f36d
      Julian Wiedmann 提交于
      The two expected notification sequences are
      1. TX_NOTIFY_PENDING with a subsequent TX_NOTIFY_DELAYED_*, when
         our TX completion code first observed the pending TX and the QAOB
         then completes at a later time; or
      2. TX_NOTIFY_OK, when qeth_qdio_handle_aob() picked up the QAOB
         completion before our TX completion code even noticed that the TX
         was pending.
      
      But as qeth_iqd_tx_complete() and qeth_qdio_handle_aob() can run
      concurrently, we may end up with a race that results in a sequence of
      TX_NOTIFY_DELAYED_* followed by TX_NOTIFY_PENDING. Which would confuse
      the af_iucv code in its tracking of pending transmits.
      
      Rework the notification code, so that qeth_qdio_handle_aob() defers its
      notification if the TX completion code is still active.
      
      Fixes: b3332930 ("qeth: add support for af_iucv HiperSockets transport")
      Signed-off-by: NJulian Wiedmann <jwi@linux.ibm.com>
      Signed-off-by: NJakub Kicinski <kuba@kernel.org>
      8908f36d
    • J
      s390/qeth: make af_iucv TX notification call more robust · 34c7f50f
      Julian Wiedmann 提交于
      Calling into socket code is ugly already, at least check whether we are
      dealing with the expected sk_family. Only looking at skb->protocol is
      bound to cause troubles (consider eg. af_packet).
      
      Fixes: b3332930 ("qeth: add support for af_iucv HiperSockets transport")
      Signed-off-by: NJulian Wiedmann <jwi@linux.ibm.com>
      Signed-off-by: NJakub Kicinski <kuba@kernel.org>
      34c7f50f
    • A
      s390/qeth: Remove pnso workaround · 0d0e2b53
      Alexandra Winter 提交于
      Remove workaround that supported early hardware implementations
      of PNSO OC3. Rely on the 'enarf' feature bit instead.
      
      Fixes: fa115adf ("s390/qeth: Detect PNSO OC3 capability")
      Signed-off-by: NAlexandra Winter <wintera@linux.ibm.com>
      Reviewed-by: NJulian Wiedmann <jwi@linux.ibm.com>
      [jwi: use logical instead of bit-wise AND]
      Signed-off-by: NJulian Wiedmann <jwi@linux.ibm.com>
      Signed-off-by: NJakub Kicinski <kuba@kernel.org>
      0d0e2b53
  4. 19 11月, 2020 8 次提交
  5. 27 10月, 2020 1 次提交
    • K
      s390/ism: fix incorrect system EID · 1dc0d1cf
      Karsten Graul 提交于
      The system EID that is defined by the ISM driver is not correct. Using
      an incorrect system EID allows to communicate with remote Linux systems
      that use the same incorrect system EID, but when it comes to
      interoperability with other operating systems then the system EIDs do
      never match which prevents SMC-Dv2 communication.
      Using the correct system EID fixes this problem.
      
      Fixes: 201091eb ("net/smc: introduce System Enterprise ID (SEID)")
      Signed-off-by: NKarsten Graul <kgraul@linux.ibm.com>
      Signed-off-by: NJakub Kicinski <kuba@kernel.org>
      1dc0d1cf
  6. 03 10月, 2020 7 次提交
  7. 29 9月, 2020 2 次提交
  8. 24 9月, 2020 9 次提交
  9. 16 9月, 2020 1 次提交
    • A
      s390/qeth: implement ndo_bridge_setlink for learning_sync · 521c65b6
      Alexandra Winter 提交于
      Documentation/networking/switchdev.txt and 'man bridge' indicate that the
      learning_sync bridge attribute is used to control whether a given
      device will sync MAC addresses learned on its device port to a master
      bridge FDB, where they will show up as 'extern_learn offload'. So we map
      qeth_l2_dev2br_an_set() to the learning_sync bridge link attribute.
      
      Turning off learning_sync will flush all extern_learn entries from the
      bridge fdb and all pending events from the card's work queue.
      
      When the hardware interface goes offline with learning_sync on
      (e.g. for HW recovery), all extern_learn entries will be flushed from the
      bridge fdb and all pending events from the card's work queue. When the
      interface goes online again, it will send new notifications for all then
      valid MACs. learning_sync attribute can not be modified while interface is
      offline. See
      'commit e6e771b3 ("s390/qeth: detach netdevice while card is offline")'
      
      An alternative implementation would be to always offload the 'learning'
      attribute of a software bridge to the hardware interface attached to it
      and thus implicitly enable fdb notification. This was not chosen for 2
      reasons:
      1) In our case the software bridge is NOT a representation of a hardware
      switch. It is just connected to a smart NIC that is able to inform
      about the addresses attached to it. It is not necessarily using source
      MAC learning for this and other bridgeports can be attached to other
      NICs with different properties.
      2) We want a means to enable this notification explicitly. There may be
      cases where a bridgeport is set to 'learning', but we do not want to
      enable the notification.
      Signed-off-by: NAlexandra Winter <wintera@linux.ibm.com>
      Reviewed-by: NJulian Wiedmann <jwi@linux.ibm.com>
      Signed-off-by: NJulian Wiedmann <jwi@linux.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      521c65b6