1. 29 Jan, 2021 29 commits
    • Jakub Kicinski's avatar
      Merge branch 'net-iucv-updates-2021-01-28' · 4915a404
      Jakub Kicinski authored
      Julian Wiedmann says:
      
      ====================
      net/iucv: updates 2021-01-28
      
      This reworks & simplifies the TX notification path in af_iucv, so that we
      can send out SG skbs over TRANS_HIPER sockets. Also remove a noisy
      WARN_ONCE() in the RX path.
      ====================
      
      Link: https://lore.kernel.org/r/20210128114108.39409-1-jwi@linux.ibm.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      4915a404
    • Julian Wiedmann's avatar
      net/af_iucv: build SG skbs for TRANS_HIPER sockets · 2c3b4456
      Julian Wiedmann authored
      The TX path no longer falls apart when some of its SG skbs are later
      linearized by lower layers of the stack. So enable the use of SG skbs
      in iucv_sock_sendmsg() again.
      
      This effectively reverts
      commit dc5367bc ("net/af_iucv: don't use paged skbs for TX on HiperSockets").
      Signed-off-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
      Acked-by: default avatarWillem de Bruijn <willemb@google.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      2c3b4456
    • Julian Wiedmann's avatar
      net/af_iucv: don't track individual TX skbs for TRANS_HIPER sockets · 80bc97aa
      Julian Wiedmann authored
      Stop maintaining the skb_send_q list for TRANS_HIPER sockets.
      
      Not only is it extra overhead, but keeping around a list of skb clones
      means that we later also have to match the ->sk_txnotify() calls
      against these clones and free them accordingly.
      The current matching logic (comparing the skbs' shinfo location) is
      frustratingly fragile, and breaks if the skb's head is mangled in any
      sort of way while passing from dev_queue_xmit() to the device's
      HW queue.
      
      Also adjust the interface for ->sk_txnotify(), to make clear that we
      don't actually care about any skb internals.
      Signed-off-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
      Acked-by: default avatarWillem de Bruijn <willemb@google.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      80bc97aa
    • Julian Wiedmann's avatar
      net/af_iucv: count packets in the xmit path · ef6af7bd
      Julian Wiedmann authored
      The TX code keeps track of all skbs that are in-flight but haven't
      actually been sent out yet. For native IUCV sockets that's not a huge
      deal, but with TRANS_HIPER sockets it would be much better if we
      didn't need to maintain a list of skb clones.
      
      Note that we actually only care about the _count_ of skbs in this stage
      of the TX pipeline. So as prep work for removing the skb tracking on
      TRANS_HIPER sockets, keep track of the skb count in a separate variable
      and pair any list {enqueue, unlink} with a count {increment, decrement}.
      
      Then replace all occurences where we currently look at the skb list's
      fill level.
      Signed-off-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
      Acked-by: default avatarWillem de Bruijn <willemb@google.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      ef6af7bd
    • Julian Wiedmann's avatar
      net/af_iucv: don't lookup the socket on TX notification · c464444f
      Julian Wiedmann authored
      Whoever called iucv_sk(sk)->sk_txnotify() must already know that they're
      dealing with an af_iucv socket.
      Signed-off-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
      Acked-by: default avatarWillem de Bruijn <willemb@google.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      c464444f
    • Alexander Egorenkov's avatar
      net/af_iucv: remove WARN_ONCE on malformed RX packets · 27e9c1de
      Alexander Egorenkov authored
      syzbot reported the following finding:
      
      AF_IUCV failed to receive skb, len=0
      WARNING: CPU: 0 PID: 522 at net/iucv/af_iucv.c:2039 afiucv_hs_rcv+0x174/0x190 net/iucv/af_iucv.c:2039
      CPU: 0 PID: 522 Comm: syz-executor091 Not tainted 5.10.0-rc1-syzkaller-07082-g55027a88ec9f #0
      Hardware name: IBM 3906 M04 701 (KVM/Linux)
      Call Trace:
       [<00000000b87ea538>] afiucv_hs_rcv+0x178/0x190 net/iucv/af_iucv.c:2039
      ([<00000000b87ea534>] afiucv_hs_rcv+0x174/0x190 net/iucv/af_iucv.c:2039)
       [<00000000b796533e>] __netif_receive_skb_one_core+0x13e/0x188 net/core/dev.c:5315
       [<00000000b79653ce>] __netif_receive_skb+0x46/0x1c0 net/core/dev.c:5429
       [<00000000b79655fe>] netif_receive_skb_internal+0xb6/0x220 net/core/dev.c:5534
       [<00000000b796ac3a>] netif_receive_skb+0x42/0x318 net/core/dev.c:5593
       [<00000000b6fd45f4>] tun_rx_batched.isra.0+0x6fc/0x860 drivers/net/tun.c:1485
       [<00000000b6fddc4e>] tun_get_user+0x1c26/0x27f0 drivers/net/tun.c:1939
       [<00000000b6fe0f00>] tun_chr_write_iter+0x158/0x248 drivers/net/tun.c:1968
       [<00000000b4f22bfa>] call_write_iter include/linux/fs.h:1887 [inline]
       [<00000000b4f22bfa>] new_sync_write+0x442/0x648 fs/read_write.c:518
       [<00000000b4f238fe>] vfs_write.part.0+0x36e/0x5d8 fs/read_write.c:605
       [<00000000b4f2984e>] vfs_write+0x10e/0x148 fs/read_write.c:615
       [<00000000b4f29d0e>] ksys_write+0x166/0x290 fs/read_write.c:658
       [<00000000b8dc4ab4>] system_call+0xe0/0x28c arch/s390/kernel/entry.S:415
      Last Breaking-Event-Address:
       [<00000000b8dc64d4>] __s390_indirect_jump_r14+0x0/0xc
      
      Malformed RX packets shouldn't generate any warnings because
      debugging info already flows to dropmon via the kfree_skb().
      Signed-off-by: default avatarAlexander Egorenkov <egorenar@linux.ibm.com>
      Reviewed-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
      Signed-off-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
      Acked-by: default avatarWillem de Bruijn <willemb@google.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      27e9c1de
    • Jakub Kicinski's avatar
      Merge branch 's390-qeth-updates-2021-01-28' · 14a6daf3
      Jakub Kicinski authored
      Julian Wiedmann says:
      
      ====================
      s390/qeth: updates 2021-01-28
      
      Nothing special, mostly fine-tuning and follow-on cleanups for earlier fixes.
      ====================
      
      Link: https://lore.kernel.org/r/20210128112551.18780-1-jwi@linux.ibm.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      14a6daf3
    • Julian Wiedmann's avatar
      s390/qeth: don't fake a TX completion interrupt after TX error · d6e51503
      Julian Wiedmann authored
      When do_qdio() returns with an unexpected error, qeth_flush_buffers()
      kicks off a recovery action.
      
      In such a case there's no point in starting TX completion processing,
      the device gets torn down anyway. So take a closer look at do_qdio()'s
      return value, and skip the TX completion processing accordingly.
      Signed-off-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
      Acked-by: default avatarWillem de Bruijn <willemb@google.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      d6e51503
    • Julian Wiedmann's avatar
      s390/qeth: make cast type selection for af_iucv skbs robust · a667fee1
      Julian Wiedmann authored
      As part of the TX queue selection for af_iucv skbs,
      qeth_l3_get_cast_type_rcu() ends up calling qeth_get_ether_cast_type().
      Which is rather fragile, since such skbs don't have a proper ETH header
      and we rely on it being zeroed out in the right places. Add a separate
      case for ETH_P_AF_IUCV instead that does the right thing.
      
      When later building the HW header for such skbs, don't hard-code the
      cast type but follow the same path as for other protocol types. Here
      the cast type should naturally come from the skb's queue mapping.
      Signed-off-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
      Acked-by: default avatarWillem de Bruijn <willemb@google.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      a667fee1
    • Julian Wiedmann's avatar
      s390/qeth: pass proto to qeth_l3_get_cast_type() · c61dff3c
      Julian Wiedmann authored
      qeth_l3_hard_start_xmit() already determined the skb's proto. Avoid
      doing so a second time when it calls qeth_l3_get_cast_type().
      Signed-off-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
      Acked-by: default avatarWillem de Bruijn <willemb@google.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      c61dff3c
    • Julian Wiedmann's avatar
      s390/qeth: remove qeth_get_ip_version() · 17f3a8b5
      Julian Wiedmann authored
      Replace our home-grown helper with the more robust vlan_get_protocol().
      This is pretty much a 1:1 replacement, we just need to pass around a
      proper ETH_P_* everyhwere and convert the old value range.
      
      For readability also convert the protocol checks in
      qeth_l3_hard_start_xmit() to a switch statement.
      Signed-off-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
      Acked-by: default avatarWillem de Bruijn <willemb@google.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      17f3a8b5
    • Julian Wiedmann's avatar
      s390/qeth: clean up load/remove code for disciplines · ea12f1b3
      Julian Wiedmann authored
      We have two usage patterns:
      1. get & ->setup() a new discipline, or
      2. ->remove() & put the currently loaded one.
      
      Add corresponding helpers that hide the internals & error handling.
      Signed-off-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
      Reviewed-by: default avatarAlexandra Winter <wintera@linux.ibm.com>
      Acked-by: default avatarWillem de Bruijn <willemb@google.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      ea12f1b3
    • Jakub Kicinski's avatar
      Merge branch 'net-ipa-hardware-pipeline-cleanup-fixes' · 699e4bc8
      Jakub Kicinski authored
      Alex Elder says:
      
      ====================
      net: ipa: hardware pipeline cleanup fixes
      
      There is a procedure currently referred to as a "tag process" that
      is performed to clear the IPA hardware pipeline--either at the time
      of a modem crash, or when suspending modem GSI channels.
      
      One thing done in this procedure is issuing a command that sends a
      data packet originating from the AP->command TX endpoint, destined
      for the AP<-LAN RX (default) endpoint.  And although we currently
      wait for the send to complete, we do *not* wait for the packet to be
      received.  But the pipeline can't be assumed clear until we have
      actually received this packet.
      
      This series addresses this by detecting when the pipeline-clearing
      packet has been received, and using a completion to allow a waiter
      to know when that has happened.  This uses the IPA status capability
      (which sends an extra status buffer for certain packets).  It also
      uses the ability to supply a "tag" with a packet, which will be
      delivered with the packet's status buffer.  We tag the data packet
      that's sent to clear the pipeline, and use the receipt of a status
      buffer associated with a tagged packet to determine when that packet
      has arrived.
      
      "Tag status" just desribes one aspect of this procedure, so some
      symbols are renamed to be more like "pipeline clear" so they better
      describe the larger purpose.  Finally, two functions used in this
      code don't use their arguments, so those arguments are removed.
      ====================
      
      Link: https://lore.kernel.org/r/20210126185703.29087-1-elder@linaro.orgSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      699e4bc8
    • Alex Elder's avatar
      net: ipa: don't pass size to ipa_cmd_transfer_add() · 070740d3
      Alex Elder authored
      The only time we transfer data (rather than issuing a command) out
      of the AP->command TX endpoint is when we're clearing the hardware
      pipeline.  All that's needed is a "small" data buffer, and its
      contents aren't even important.
      
      For convenience, we just transfer a command structure in this case
      (it's already mapped for DMA).  The TRE is added to a transaction
      using ipa_cmd_ip_tag_status_add(), but we ignore the size value
      provided to that function.  So just get rid of the size argument.
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Acked-by: default avatarWillem de Bruijn <willemb@google.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      070740d3
    • Alex Elder's avatar
      net: ipa: don't pass tag value to ipa_cmd_ip_tag_status_add() · 792b75b1
      Alex Elder authored
      We only send a tagged packet from the AP->command TX endpoint when
      we're clearing the hardware pipeline.  And when we receive the
      tagged packet we don't care what the actual tag value is.
      
      Stop passing a tag value to ipa_cmd_ip_tag_status_add(), and just
      encode 0 as the tag sent.  Fix the function that encodes the tag so
      it uses the proper byte ordering.
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Acked-by: default avatarWillem de Bruijn <willemb@google.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      792b75b1
    • Alex Elder's avatar
      net: ipa: signal when tag transfer completes · 51c48ce2
      Alex Elder authored
      There are times, such as when the modem crashes, when we issue
      commands to clear the IPA hardware pipeline.  These commands include
      a data transfer command that delivers a small packet directly to the
      default (AP<-LAN RX) endpoint.
      
      The places that do this wait for the transactions that contain these
      commands to complete, but the pipeline can't be assumed clear until
      the sent packet has been *received*.
      
      The small transfer will be delivered with a status structure, and
      that status will indicate its tag is valid.  This is the only place
      we send a tagged packet, so we use the tag to determine when the
      pipeline clear packet has arrived.
      
      Add a completion to the IPA structure to to be used to signal
      the receipt of a pipeline clear packet.  Create a new function
      ipa_cmd_pipeline_clear_wait() that will wait for that completion.
      
      Reinitialize the completion whenever pipeline clear commands are
      added to a transaction.  Extend ipa_endpoint_status_tag() to check
      whether a packet whose status contains a valid tag was sent from the
      AP->command TX endpoint, and if so, signal the new IPA completion.
      
      Have all callers of ipa_cmd_pipeline_clear_add() wait for the
      pipeline clear indication after the transaction that clears the
      pipeline has completed.
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Acked-by: default avatarWillem de Bruijn <willemb@google.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      51c48ce2
    • Alex Elder's avatar
      net: ipa: drop packet if status has valid tag · f6aba7b5
      Alex Elder authored
      Introduce ipa_endpoint_status_tag(), which returns true if received
      status indicates its tag field is valid.  The endpoint parameter is
      not yet used.
      
      Call this from ipa_status_drop_packet(), and drop the packet if the
      status indicates the tag was valid.  Pass the endpoint pointer to
      ipa_status_drop_packet(), and rename it ipa_endpoint_status_drop().
      The endpoint will be used in the next patch.
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Acked-by: default avatarWillem de Bruijn <willemb@google.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      f6aba7b5
    • Alex Elder's avatar
      net: ipa: minor update to handling of packet with status · 162fbc6f
      Alex Elder authored
      Rearrange some comments and assignments made when handling a packet
      that is received with status, aiming to improve understandability.
      
      Use DIV_ROUND_CLOSEST() to get a better per-packet true size estimate.
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Acked-by: default avatarWillem de Bruijn <willemb@google.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      162fbc6f
    • Alex Elder's avatar
      net: ipa: rename "tag status" symbols · aa56e3e5
      Alex Elder authored
      There is a set of functions and symbols related to performing
      "tag_process" immediate commands to clear the IPA pipeline.  The
      name is related to one of the commands issued when doing this, but
      it doesn't really convey the overall purpose of taking this action.
      
      The purpose is to take some steps to "clear out" the hardware
      pipeline, and to wait until that process completes, to ensure the
      IPA hardware is in a well-defined state.
      
      Rename these symbols to use "pipeline_clear" in their names instead.
      Add some comments to explain a bit more about what's going on.
      Signed-off-by: default avatarAlex Elder <elder@linaro.org>
      Acked-by: default avatarWillem de Bruijn <willemb@google.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      aa56e3e5
    • Jesper Dangaard Brouer's avatar
      net: adjust net_device layout for cacheline usage · 28af22c6
      Jesper Dangaard Brouer authored
      The current layout of net_device is not optimal for cacheline usage.
      
      The member adj_list.lower linked list is split between cacheline 2 and 3.
      The ifindex is placed together with stats (struct net_device_stats),
      although most modern drivers don't update this stats member.
      
      The members netdev_ops, mtu and hard_header_len are placed on three
      different cachelines. These members are accessed for XDP redirect into
      devmap, which were noticeably with perf tool. When not using the map
      redirect variant (like TC-BPF does), then ifindex is also used, which is
      placed on a separate fourth cacheline. These members are also accessed
      during forwarding with regular network stack. The members priv_flags and
      flags are on fast-path for network stack transmit path in __dev_queue_xmit
      (currently located together with mtu cacheline).
      
      This patch creates a read mostly cacheline, with the purpose of keeping the
      above mentioned members on the same cacheline.
      
      Some netdev_features_t members also becomes part of this cacheline, which is
      on purpose, as function netif_skb_features() is on fast-path via
      validate_xmit_skb().
      Signed-off-by: default avatarJesper Dangaard Brouer <brouer@redhat.com>
      Link: https://lore.kernel.org/r/161168277983.410784.12401225493601624417.stgit@firesoulSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      28af22c6
    • Alexey Denisov's avatar
      lan743x: fix endianness when accessing descriptors · 46251282
      Alexey Denisov authored
      TX/RX descriptor ring fields are always little-endian, but conversion
      wasn't performed for big-endian CPUs, so the driver failed to work.
      
      This patch makes the driver work on big-endian CPUs. It was tested and
      confirmed to work on NXP P1010 processor (PowerPC).
      Signed-off-by: default avatarAlexey Denisov <rtgbnm@gmail.com>
      Link: https://lore.kernel.org/r/20210128044859.280219-1-rtgbnm@gmail.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      46251282
    • Christophe JAILLET's avatar
      e100: switch from 'pci_' to 'dma_' API · 4140ff1b
      Christophe JAILLET authored
      The wrappers in include/linux/pci-dma-compat.h should go away.
      
      The patch has been generated with the coccinelle script below and has been
      hand modified to replace GFP_ with a correct flag.
      It has been compile tested.
      
      When memory is allocated in 'e100_alloc()', GFP_KERNEL can be used because
      it is only called from the probe function and no lock is acquired.
      
      @@
      @@
      -    PCI_DMA_BIDIRECTIONAL
      +    DMA_BIDIRECTIONAL
      
      @@
      @@
      -    PCI_DMA_TODEVICE
      +    DMA_TO_DEVICE
      
      @@
      @@
      -    PCI_DMA_FROMDEVICE
      +    DMA_FROM_DEVICE
      
      @@
      @@
      -    PCI_DMA_NONE
      +    DMA_NONE
      
      @@
      expression e1, e2, e3;
      @@
      -    pci_alloc_consistent(e1, e2, e3)
      +    dma_alloc_coherent(&e1->dev, e2, e3, GFP_)
      
      @@
      expression e1, e2, e3;
      @@
      -    pci_zalloc_consistent(e1, e2, e3)
      +    dma_alloc_coherent(&e1->dev, e2, e3, GFP_)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_free_consistent(e1, e2, e3, e4)
      +    dma_free_coherent(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_map_single(e1, e2, e3, e4)
      +    dma_map_single(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_unmap_single(e1, e2, e3, e4)
      +    dma_unmap_single(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4, e5;
      @@
      -    pci_map_page(e1, e2, e3, e4, e5)
      +    dma_map_page(&e1->dev, e2, e3, e4, e5)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_unmap_page(e1, e2, e3, e4)
      +    dma_unmap_page(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_map_sg(e1, e2, e3, e4)
      +    dma_map_sg(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_unmap_sg(e1, e2, e3, e4)
      +    dma_unmap_sg(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_dma_sync_single_for_cpu(e1, e2, e3, e4)
      +    dma_sync_single_for_cpu(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_dma_sync_single_for_device(e1, e2, e3, e4)
      +    dma_sync_single_for_device(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_dma_sync_sg_for_cpu(e1, e2, e3, e4)
      +    dma_sync_sg_for_cpu(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2, e3, e4;
      @@
      -    pci_dma_sync_sg_for_device(e1, e2, e3, e4)
      +    dma_sync_sg_for_device(&e1->dev, e2, e3, e4)
      
      @@
      expression e1, e2;
      @@
      -    pci_dma_mapping_error(e1, e2)
      +    dma_mapping_error(&e1->dev, e2)
      
      @@
      expression e1, e2;
      @@
      -    pci_set_dma_mask(e1, e2)
      +    dma_set_mask(&e1->dev, e2)
      
      @@
      expression e1, e2;
      @@
      -    pci_set_consistent_dma_mask(e1, e2)
      +    dma_set_coherent_mask(&e1->dev, e2)
      Signed-off-by: default avatarChristophe JAILLET <christophe.jaillet@wanadoo.fr>
      Tested-by: default avatarAaron Brown <aaron.f.brown@intel.com>
      Link: https://lore.kernel.org/r/20210128210736.749724-1-christophe.jaillet@wanadoo.frSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      4140ff1b
    • Subash Abhinov Kasiviswanathan's avatar
      net: qmi_wwan: Add pass through mode · 59e139cf
      Subash Abhinov Kasiviswanathan authored
      Pass through mode is to allow packets in MAP format to be passed
      on to the stack. rmnet driver can be used to process and demultiplex
      these packets.
      
      Pass through mode can be enabled when the device is in raw ip mode only.
      Conversely, raw ip mode cannot be disabled when pass through mode is
      enabled.
      
      Userspace can use pass through mode in conjunction with rmnet driver
      through the following steps-
      
      1. Enable raw ip mode on qmi_wwan device
      2. Enable pass through mode on qmi_wwan device
      3. Create a rmnet device with qmi_wwan device as real device using netlink
      Signed-off-by: default avatarSubash Abhinov Kasiviswanathan <subashab@codeaurora.org>
      Acked-by: default avatarBjørn Mork <bjorn@mork.no>
      Link: https://lore.kernel.org/r/1611560015-20034-1-git-send-email-subashab@codeaurora.orgSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      59e139cf
    • Jakub Kicinski's avatar
      Merge branch 'net-usb-qmi_wwan-new-mux_id-sysfs-file' · bbe25b7d
      Jakub Kicinski authored
      Daniele Palmas says:
      
      ====================
      net: usb: qmi_wwan: new mux_id sysfs file
      
      this patch series add a sysfs file to let userspace know which mux
      id has been used to create a qmimux network interface.
      
      I'm aware that adding new sysfs files is not usually the right path,
      but my understanding is that this piece of information can't be
      retrieved in any other way and its absence restricts how
      userspace application (e.g. like libqmi) can take advantage of the
      qmimux implementation in qmi_wwan.
      ====================
      
      Link: https://lore.kernel.org/r/20210127153433.12237-1-dnlplm@gmail.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      bbe25b7d
    • Daniele Palmas's avatar
      net: qmi_wwan: document qmap/mux_id sysfs file · b4b91e24
      Daniele Palmas authored
      Document qmap/mux_id sysfs file showing qmimux interface id
      Signed-off-by: default avatarDaniele Palmas <dnlplm@gmail.com>
      Acked-by: default avatarBjørn Mork <bjorn@mork.no>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      b4b91e24
    • Daniele Palmas's avatar
      net: usb: qmi_wwan: add qmap id sysfs file for qmimux interfaces · e594ad98
      Daniele Palmas authored
      Add qmimux interface sysfs file qmap/mux_id to show qmap id set
      during the interface creation, in order to provide a method for
      userspace to associate QMI control channels to network interfaces.
      Signed-off-by: default avatarDaniele Palmas <dnlplm@gmail.com>
      Acked-by: default avatarBjørn Mork <bjorn@mork.no>
      Acked-by: default avatarAleksander Morgado <aleksander@aleksander.es>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      e594ad98
    • Tom Rix's avatar
      ipvlan: remove h from printk format specifier · d7a177ea
      Tom Rix authored
      This change fixes the checkpatch warning described in this commit
      commit cbacb5ab ("docs: printk-formats: Stop encouraging use of
        unnecessary %h[xudi] and %hh[xudi]")
      
      Standard integer promotion is already done and %hx and %hhx is useless
      so do not encourage the use of %hh[xudi] or %h[xudi].
      
      Cleanup output to use __func__ over explicit function strings.
      Signed-off-by: default avatarTom Rix <trix@redhat.com>
      Link: https://lore.kernel.org/r/20210124190804.1964580-1-trix@redhat.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      d7a177ea
    • Jakub Kicinski's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net · c358f952
      Jakub Kicinski authored
      drivers/net/can/dev.c
        b552766c ("can: dev: prevent potential information leak in can_fill_info()")
        3e77f70e ("can: dev: move driver related infrastructure into separate subdir")
        0a042c6e ("can: dev: move netlink related code into seperate file")
      
        Code move.
      
      drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
        57ac4a31 ("net/mlx5e: Correctly handle changing the number of queues when the interface is down")
        214baf22 ("net/mlx5e: Support HTB offload")
      
        Adjacent code changes
      
      net/switchdev/switchdev.c
        20776b46 ("net: switchdev: don't set port_obj_info->handled true when -EOPNOTSUPP")
        ffb68fc5 ("net: switchdev: remove the transaction structure from port object notifiers")
        bae33f2b ("net: switchdev: remove the transaction structure from port attributes")
      
        Transaction parameter gets dropped otherwise keep the fix.
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      c358f952
    • Jakub Kicinski's avatar
      Merge tag 'mlx5-updates-2021-01-13' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux · 24a790da
      Jakub Kicinski authored
      Saeed Mahameed says:
      
      ====================
      mlx5 subfunction support
      
      Parav Pandit says:
      
      This patchset introduces support for mlx5 subfunction (SF).
      
      A subfunction is a lightweight function that has a parent PCI function on
      which it is deployed. mlx5 subfunction has its own function capabilities
      and its own resources. This means a subfunction has its own dedicated
      queues(txq, rxq, cq, eq). These queues are neither shared nor stolen from
      the parent PCI function.
      
      When subfunction is RDMA capable, it has its own QP1, GID table and rdma
      resources neither shared nor stolen from the parent PCI function.
      
      A subfunction has dedicated window in PCI BAR space that is not shared
      with the other subfunctions or parent PCI function. This ensures that all
      class devices of the subfunction accesses only assigned PCI BAR space.
      
      A Subfunction supports eswitch representation through which it supports tc
      offloads. User must configure eswitch to send/receive packets from/to
      subfunction port.
      
      Subfunctions share PCI level resources such as PCI MSI-X IRQs with
      their other subfunctions and/or with its parent PCI function.
      
      Subfunction support is discussed in detail in RFC [1] and [2].
      RFC [1] and extension [2] describes requirements, design and proposed
      plumbing using devlink, auxiliary bus and sysfs for systemd/udev
      support. Functionality of this patchset is best explained using real
      examples further below.
      
      overview:
      --------
      A subfunction can be created and deleted by a user using devlink port
      add/delete interface.
      
      A subfunction can be configured using devlink port function attribute
      before its activated.
      
      When a subfunction is activated, it results in an auxiliary device on
      the host PCI device where it is deployed. A driver binds to the
      auxiliary device that further creates supported class devices.
      
      example subfunction usage sequence:
      -----------------------------------
      Change device to switchdev mode:
      $ devlink dev eswitch set pci/0000:06:00.0 mode switchdev
      
      Add a devlink port of subfunction flavour:
      $ devlink port add pci/0000:06:00.0 flavour pcisf pfnum 0 sfnum 88
      
      Configure mac address of the port function:
      $ devlink port function set ens2f0npf0sf88 hw_addr 00:00:00:00:88:88
      
      Now activate the function:
      $ devlink port function set ens2f0npf0sf88 state active
      
      Now use the auxiliary device and class devices:
      $ devlink dev show
      pci/0000:06:00.0
      auxiliary/mlx5_core.sf.4
      
      $ ip link show
      127: ens2f0np0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
          link/ether 24:8a:07:b3:d1:12 brd ff:ff:ff:ff:ff:ff
          altname enp6s0f0np0
      129: p0sf88: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
          link/ether 00:00:00:00:88:88 brd ff:ff:ff:ff:ff:ff
      
      $ rdma dev show
      43: rdmap6s0f0: node_type ca fw 16.29.0550 node_guid 248a:0703:00b3:d112 sys_image_guid 248a:0703:00b3:d112
      44: mlx5_0: node_type ca fw 16.29.0550 node_guid 0000:00ff:fe00:8888 sys_image_guid 248a:0703:00b3:d112
      
      After use inactivate the function:
      $ devlink port function set ens2f0npf0sf88 state inactive
      
      Now delete the subfunction port:
      $ devlink port del ens2f0npf0sf88
      
      [1] https://lore.kernel.org/netdev/20200519092258.GF4655@nanopsycho/
      [2] https://marc.info/?l=linux-netdev&m=158555928517777&w=2
      
      =================
      
      * tag 'mlx5-updates-2021-01-13' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux:
        net/mlx5: Add devlink subfunction port documentation
        devlink: Extend devlink port documentation for subfunctions
        devlink: Add devlink port documentation
        net/mlx5: SF, Port function state change support
        net/mlx5: SF, Add port add delete functionality
        net/mlx5: E-switch, Add eswitch helpers for SF vport
        net/mlx5: E-switch, Prepare eswitch to handle SF vport
        net/mlx5: SF, Add auxiliary device driver
        net/mlx5: SF, Add auxiliary device support
        net/mlx5: Introduce vhca state event notifier
        devlink: Support get and set state of port function
        devlink: Support add and delete devlink port
        devlink: Introduce PCI SF port flavour and port attribute
        devlink: Prepare code to fill multiple port function attributes
      ====================
      
      Link: https://lore.kernel.org/r/20210122193658.282884-1-saeed@kernel.orgSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      24a790da
  2. 28 Jan, 2021 11 commits
    • Linus Torvalds's avatar
      Merge tag 'net-5.11-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net · 909b447d
      Linus Torvalds authored
      Pull networking fixes from Jakub Kicinski:
       "Networking fixes including fixes from can, xfrm, wireless,
        wireless-drivers and netfilter trees. Nothing scary, Intel
        WiFi-related fixes seemed most notable to the users.
      
        Current release - regressions:
      
         - dsa: microchip: ksz8795: fix KSZ8794 port map again to program the
           CPU port correctly
      
        Current release - new code bugs:
      
         - iwlwifi: pcie: reschedule in long-running memory reads
      
        Previous releases - regressions:
      
         - iwlwifi: dbg: don't try to overwrite read-only FW data
      
         - iwlwifi: provide gso_type to GSO packets
      
         - octeontx2: make sure the buffer is 128 byte aligned
      
         - tcp: make TCP_USER_TIMEOUT accurate for zero window probes
      
         - xfrm: fix wraparound in xfrm_policy_addr_delta()
      
         - xfrm: fix oops in xfrm_replay_advance_bmp due to a race between
           CPUs in presence of packet reorder
      
         - tcp: fix TLP timer not set when CA_STATE changes from DISORDER to
           OPEN
      
         - wext: fix NULL-ptr-dereference with cfg80211's lack of commit()
      
        Previous releases - always broken:
      
         - igc: fix link speed advertising
      
         - stmmac: configure EHL PSE0 GbE and PSE1 GbE to 32 bits DMA
           addressing
      
         - team: protect features update by RCU to avoid deadlock
      
         - xfrm: fix disable_xfrm sysctl when used on xfrm interfaces
           themselves
      
         - fec: fix temporary RMII clock reset on link up
      
         - can: dev: prevent potential information leak in can_fill_info()
      
        Misc:
      
         - mrp: fix bad packing of MRP test packet structures
      
         - uapi: fix big endian definition of ipv6_rpl_sr_hdr
      
         - add David Ahern to IPv4/IPv6 maintainers"
      
      * tag 'net-5.11-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (86 commits)
        rxrpc: Fix memory leak in rxrpc_lookup_local
        mlxsw: spectrum_span: Do not overwrite policer configuration
        selftests: forwarding: Specify interface when invoking mausezahn
        stmmac: intel: Configure EHL PSE0 GbE and PSE1 GbE to 32 bits DMA addressing
        net: usb: cdc_ether: added support for Thales Cinterion PLSx3 modem family.
        ibmvnic: Ensure that CRQ entry read are correctly ordered
        MAINTAINERS: add missing header for bonding
        net: decnet: fix netdev refcount leaking on error path
        net: switchdev: don't set port_obj_info->handled true when -EOPNOTSUPP
        can: dev: prevent potential information leak in can_fill_info()
        net: fec: Fix temporary RMII clock reset on link up
        net: lapb: Add locking to the lapb module
        team: protect features update by RCU to avoid deadlock
        MAINTAINERS: add David Ahern to IPv4/IPv6 maintainers
        net/mlx5: CT: Fix incorrect removal of tuple_nat_node from nat rhashtable
        net/mlx5e: Revert parameters on errors when changing MTU and LRO state without reset
        net/mlx5e: Revert parameters on errors when changing trust state without reset
        net/mlx5e: Correctly handle changing the number of queues when the interface is down
        net/mlx5e: Fix CT rule + encap slow path offload and deletion
        net/mlx5e: Disable hw-tc-offload when MLX5_CLS_ACT config is disabled
        ...
      909b447d
    • Jakub Kicinski's avatar
      Merge branch 'net-sfp-add-support-for-gpon-rtl8672-rtl9601c-and-ubiquiti-u-fiber' · 32e31b78
      Jakub Kicinski authored
      Pali Rohár says:
      
      ====================
      net: sfp: add support for GPON RTL8672/RTL9601C and Ubiquiti U-Fiber
      
      This is fourth version of patches which add workarounds for
      RTL8672/RTL9601C EEPROMs and Ubiquiti U-Fiber Instant SFP.
      ====================
      
      Link: https://lore.kernel.org/r/20210125150228.8523-1-pali@kernel.orgSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      32e31b78
    • Pali Rohár's avatar
      net: sfp: add mode quirk for GPON module Ubiquiti U-Fiber Instant · f0b4f847
      Pali Rohár authored
      The Ubiquiti U-Fiber Instant SFP GPON module has nonsensical information
      stored in its EEPROM. It claims to support all transceiver types including
      10G Ethernet. Clear all claimed modes and set only 1000baseX_Full, which is
      the only one supported.
      
      This module has also phys_id set to SFF, and the SFP subsystem currently
      does not allow to use SFP modules detected as SFFs. Add exception for this
      module so it can be detected as supported.
      
      This change finally allows to detect and use SFP GPON module Ubiquiti
      U-Fiber Instant on Linux system.
      
      EEPROM content of this SFP module is (where XX is serial number):
      
      00: 02 04 0b ff ff ff ff ff ff ff ff 03 0c 00 14 c8    ???........??.??
      10: 00 00 00 00 55 42 4e 54 20 20 20 20 20 20 20 20    ....UBNT
      20: 20 20 20 20 00 18 e8 29 55 46 2d 49 4e 53 54 41        .??)UF-INSTA
      30: 4e 54 20 20 20 20 20 20 34 20 20 20 05 1e 00 36    NT      4   ??.6
      40: 00 06 00 00 55 42 4e 54 XX XX XX XX XX XX XX XX    .?..UBNTXXXXXXXX
      50: 20 20 20 20 31 34 30 31 32 33 20 20 60 80 02 41        140123  `??A
      Signed-off-by: default avatarPali Rohár <pali@kernel.org>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      f0b4f847
    • Pali Rohár's avatar
      net: sfp: add workaround for Realtek RTL8672 and RTL9601C chips · 426c6cbc
      Pali Rohár authored
      The workaround for VSOL V2801F brand based GPON SFP modules added in commit
      0d035bed ("net: sfp: VSOL V2801F / CarlitoxxPro CPGOS03-0490 v2.0
      workaround") works only for IDs added explicitly to the list. Since there
      are rebranded modules where OEM vendors put different strings into the
      vendor name field, we cannot base workaround on IDs only.
      
      Moreover the issue which the above mentioned commit tried to work around is
      generic not only to VSOL based modules, but rather to all GPON modules
      based on Realtek RTL8672 and RTL9601C chips.
      
      These include at least the following GPON modules:
      * V-SOL V2801F
      * C-Data FD511GX-RM0
      * OPTON GP801R
      * BAUDCOM BD-1234-SFM
      * CPGOS03-0490 v2.0
      * Ubiquiti U-Fiber Instant
      * EXOT EGS1
      
      These Realtek chips have broken EEPROM emulator which for N-byte read
      operation returns just the first byte of EEPROM data, followed by N-1
      zeros.
      
      Introduce a new function, sfp_id_needs_byte_io(), which detects SFP modules
      with broken EEPROM emulator based on N-1 zeros and switch to 1 byte EEPROM
      reading operation.
      
      Function sfp_i2c_read() now always uses single byte reading when it is
      required and when function sfp_hwmon_probe() detects single byte access,
      it disables registration of hwmon device, because in this case we cannot
      reliably and atomically read 2 bytes as is required by the standard for
      retrieving values from diagnostic area.
      
      (These Realtek chips are broken in a way that violates SFP standards for
      diagnostic interface. Kernel in this case simply cannot do anything less
      of skipping registration of the hwmon interface.)
      
      This patch fixes reading of EEPROM content from SFP modules based on
      Realtek RTL8672 and RTL9601C chips. Diagnostic interface of EEPROM stays
      broken and cannot be fixed.
      
      Fixes: 0d035bed ("net: sfp: VSOL V2801F / CarlitoxxPro CPGOS03-0490 v2.0 workaround")
      Co-developed-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
      Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
      Signed-off-by: default avatarPali Rohár <pali@kernel.org>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      426c6cbc
    • Takeshi Misawa's avatar
      rxrpc: Fix memory leak in rxrpc_lookup_local · b8323f72
      Takeshi Misawa authored
      Commit 9ebeddef ("rxrpc: rxrpc_peer needs to hold a ref on the rxrpc_local record")
      Then release ref in __rxrpc_put_peer and rxrpc_put_peer_locked.
      
      	struct rxrpc_peer *rxrpc_alloc_peer(struct rxrpc_local *local, gfp_t gfp)
      	-               peer->local = local;
      	+               peer->local = rxrpc_get_local(local);
      
      rxrpc_discard_prealloc also need ref release in discarding.
      
      syzbot report:
      BUG: memory leak
      unreferenced object 0xffff8881080ddc00 (size 256):
        comm "syz-executor339", pid 8462, jiffies 4294942238 (age 12.350s)
        hex dump (first 32 bytes):
          00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
          00 00 00 00 0a 00 00 00 00 c0 00 08 81 88 ff ff  ................
        backtrace:
          [<000000002b6e495f>] kmalloc include/linux/slab.h:552 [inline]
          [<000000002b6e495f>] kzalloc include/linux/slab.h:682 [inline]
          [<000000002b6e495f>] rxrpc_alloc_local net/rxrpc/local_object.c:79 [inline]
          [<000000002b6e495f>] rxrpc_lookup_local+0x1c1/0x760 net/rxrpc/local_object.c:244
          [<000000006b43a77b>] rxrpc_bind+0x174/0x240 net/rxrpc/af_rxrpc.c:149
          [<00000000fd447a55>] afs_open_socket+0xdb/0x200 fs/afs/rxrpc.c:64
          [<000000007fd8867c>] afs_net_init+0x2b4/0x340 fs/afs/main.c:126
          [<0000000063d80ec1>] ops_init+0x4e/0x190 net/core/net_namespace.c:152
          [<00000000073c5efa>] setup_net+0xde/0x2d0 net/core/net_namespace.c:342
          [<00000000a6744d5b>] copy_net_ns+0x19f/0x3e0 net/core/net_namespace.c:483
          [<0000000017d3aec3>] create_new_namespaces+0x199/0x4f0 kernel/nsproxy.c:110
          [<00000000186271ef>] unshare_nsproxy_namespaces+0x9b/0x120 kernel/nsproxy.c:226
          [<000000002de7bac4>] ksys_unshare+0x2fe/0x5c0 kernel/fork.c:2957
          [<00000000349b12ba>] __do_sys_unshare kernel/fork.c:3025 [inline]
          [<00000000349b12ba>] __se_sys_unshare kernel/fork.c:3023 [inline]
          [<00000000349b12ba>] __x64_sys_unshare+0x12/0x20 kernel/fork.c:3023
          [<000000006d178ef7>] do_syscall_64+0x2d/0x70 arch/x86/entry/common.c:46
          [<00000000637076d4>] entry_SYSCALL_64_after_hwframe+0x44/0xa9
      
      Fixes: 9ebeddef ("rxrpc: rxrpc_peer needs to hold a ref on the rxrpc_local record")
      Signed-off-by: default avatarTakeshi Misawa <jeliantsurux@gmail.com>
      Reported-and-tested-by: syzbot+305326672fed51b205f7@syzkaller.appspotmail.com
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Link: https://lore.kernel.org/r/161183091692.3506637.3206605651502458810.stgit@warthog.procyon.org.ukSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      b8323f72
    • Jakub Kicinski's avatar
      Merge branch 'mlxsw-various-fixes' · 924b171c
      Jakub Kicinski authored
      Ido Schimmel says:
      
      ====================
      mlxsw: Various fixes
      
      Patch #1 fixes wrong invocation of mausezahn in a couple of selftests.
      The tests started failing after Fedora updated their libnet package from
      version 1.1.6 to 1.2.1. With the fix the tests pass regardless of libnet
      version.
      
      Patch #2 fixes an issue in the mirroring to CPU code that results in
      policer configuration being overwritten.
      ====================
      
      Link: https://lore.kernel.org/r/20210128144820.3280295-1-idosch@idosch.orgSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      924b171c
    • Ido Schimmel's avatar
      mlxsw: spectrum_span: Do not overwrite policer configuration · b6f6881a
      Ido Schimmel authored
      The purpose of the delayed work in the SPAN module is to potentially
      update the destination port and various encapsulation parameters of SPAN
      agents that point to a VLAN device or a GRE tap. The destination port
      can change following the insertion of a new route, for example.
      
      SPAN agents that point to a physical port or the CPU port are static and
      never change throughout the lifetime of the SPAN agent. Therefore, skip
      over them in the delayed work.
      
      This fixes an issue where the delayed work overwrites the policer
      that was set on a SPAN agent pointing to the CPU. Modifying the delayed
      work to inherit the original policer configuration is error-prone, as
      the same will be needed for any new parameter.
      
      Fixes: 4039504e ("mlxsw: spectrum_span: Allow setting policer on a SPAN agent")
      Reviewed-by: default avatarPetr Machata <petrm@nvidia.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      b6f6881a
    • Danielle Ratson's avatar
      selftests: forwarding: Specify interface when invoking mausezahn · 11df27f7
      Danielle Ratson authored
      Specify the interface through which packets should be transmitted so
      that the test will pass regardless of the libnet version against which
      mausezahn is linked.
      
      Fixes: cab14d10 ("selftests: Add version of router_multipath.sh using nexthop objects")
      Fixes: 3d578d87 ("selftests: forwarding: Test IPv4 weighted nexthops")
      Signed-off-by: default avatarDanielle Ratson <danieller@nvidia.com>
      Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      11df27f7
    • Voon Weifeng's avatar
      stmmac: intel: Configure EHL PSE0 GbE and PSE1 GbE to 32 bits DMA addressing · 7cfc4486
      Voon Weifeng authored
      Fix an issue where dump stack is printed and Reset Adapter occurs when
      PSE0 GbE or/and PSE1 GbE is/are enabled. EHL PSE0 GbE and PSE1 GbE use
      32 bits DMA addressing whereas EHL PCH GbE uses 64 bits DMA addressing.
      
      [   25.535095] ------------[ cut here ]------------
      [   25.540276] NETDEV WATCHDOG: enp0s29f2 (intel-eth-pci): transmit queue 2 timed out
      [   25.548749] WARNING: CPU: 2 PID: 0 at net/sched/sch_generic.c:443 dev_watchdog+0x259/0x260
      [   25.558004] Modules linked in: 8021q bnep bluetooth ecryptfs snd_hda_codec_hdmi intel_gpy marvell intel_ishtp_loader intel_ishtp_hid iTCO_wdt mei_hdcp iTCO_vendor_support x86_pkg_temp_thermal kvm_intel dwmac_intel stmmac kvm igb pcs_xpcs irqbypass phylink snd_hda_intel intel_rapl_msr pcspkr dca snd_hda_codec i915 i2c_i801 i2c_smbus libphy intel_ish_ipc snd_hda_core mei_me intel_ishtp mei spi_dw_pci 8250_lpss spi_dw thermal dw_dmac_core parport_pc tpm_crb tpm_tis parport tpm_tis_core tpm intel_pmc_core sch_fq_codel uhid fuse configfs snd_sof_pci snd_sof_intel_byt snd_sof_intel_ipc snd_sof_intel_hda_common snd_sof_xtensa_dsp snd_sof snd_soc_acpi_intel_match snd_soc_acpi snd_intel_dspcfg ledtrig_audio snd_soc_core snd_compress ac97_bus snd_pcm snd_timer snd soundcore
      [   25.633795] CPU: 2 PID: 0 Comm: swapper/2 Tainted: G     U            5.11.0-rc4-intel-lts-MISMAIL5+ #5
      [   25.644306] Hardware name: Intel Corporation Elkhart Lake Embedded Platform/ElkhartLake LPDDR4x T4 RVP1, BIOS EHLSFWI1.R00.2434.A00.2010231402 10/23/2020
      [   25.659674] RIP: 0010:dev_watchdog+0x259/0x260
      [   25.664650] Code: e8 3b 6b 60 ff eb 98 4c 89 ef c6 05 ec e7 bf 00 01 e8 fb e5 fa ff 89 d9 4c 89 ee 48 c7 c7 78 31 d2 9e 48 89 c2 e8 79 1b 18 00 <0f> 0b e9 77 ff ff ff 0f 1f 44 00 00 48 c7 47 08 00 00 00 00 48 c7
      [   25.685647] RSP: 0018:ffffb7ca80160eb8 EFLAGS: 00010286
      [   25.691498] RAX: 0000000000000000 RBX: 0000000000000002 RCX: 0000000000000103
      [   25.699483] RDX: 0000000080000103 RSI: 00000000000000f6 RDI: 00000000ffffffff
      [   25.707465] RBP: ffff985709ce0440 R08: 0000000000000000 R09: c0000000ffffefff
      [   25.715455] R10: ffffb7ca80160cf0 R11: ffffb7ca80160ce8 R12: ffff985709ce039c
      [   25.723438] R13: ffff985709ce0000 R14: 0000000000000008 R15: ffff9857068af940
      [   25.731425] FS:  0000000000000000(0000) GS:ffff985864300000(0000) knlGS:0000000000000000
      [   25.740481] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [   25.746913] CR2: 00005567f8bb76b8 CR3: 00000001f8e0a000 CR4: 0000000000350ee0
      [   25.754900] Call Trace:
      [   25.757631]  <IRQ>
      [   25.759891]  ? qdisc_put_unlocked+0x30/0x30
      [   25.764565]  ? qdisc_put_unlocked+0x30/0x30
      [   25.769245]  call_timer_fn+0x2e/0x140
      [   25.773346]  run_timer_softirq+0x1f3/0x430
      [   25.777932]  ? __hrtimer_run_queues+0x12c/0x2c0
      [   25.783005]  ? ktime_get+0x3e/0xa0
      [   25.786812]  __do_softirq+0xa6/0x2ef
      [   25.790816]  asm_call_irq_on_stack+0xf/0x20
      [   25.795501]  </IRQ>
      [   25.797852]  do_softirq_own_stack+0x5d/0x80
      [   25.802538]  irq_exit_rcu+0x94/0xb0
      [   25.806475]  sysvec_apic_timer_interrupt+0x42/0xc0
      [   25.811836]  asm_sysvec_apic_timer_interrupt+0x12/0x20
      [   25.817586] RIP: 0010:cpuidle_enter_state+0xd9/0x370
      [   25.823142] Code: 85 c0 0f 8f 0a 02 00 00 31 ff e8 22 d5 7e ff 45 84 ff 74 12 9c 58 f6 c4 02 0f 85 47 02 00 00 31 ff e8 7b a0 84 ff fb 45 85 f6 <0f> 88 ab 00 00 00 49 63 ce 48 2b 2c 24 48 89 c8 48 6b d1 68 48 c1
      [   25.844140] RSP: 0018:ffffb7ca800f7e80 EFLAGS: 00000206
      [   25.849996] RAX: ffff985864300000 RBX: 0000000000000003 RCX: 000000000000001f
      [   25.857975] RDX: 00000005f2028ea8 RSI: ffffffff9ec5907f RDI: ffffffff9ec62a5d
      [   25.865961] RBP: 00000005f2028ea8 R08: 0000000000000000 R09: 0000000000029d00
      [   25.873947] R10: 000000137b0e0508 R11: ffff9858643294e4 R12: ffff9858643336d0
      [   25.881935] R13: ffffffff9ef74b00 R14: 0000000000000003 R15: 0000000000000000
      [   25.889918]  cpuidle_enter+0x29/0x40
      [   25.893922]  do_idle+0x24a/0x290
      [   25.897536]  cpu_startup_entry+0x19/0x20
      [   25.901930]  start_secondary+0x128/0x160
      [   25.906326]  secondary_startup_64_no_verify+0xb0/0xbb
      [   25.911983] ---[ end trace b4c0c8195d0ba61f ]---
      [   25.917193] intel-eth-pci 0000:00:1d.2 enp0s29f2: Reset adapter.
      
      Fixes: 67c08ac4 ("net: stmmac: add EHL PSE0 & PSE1 1Gbps PCI info and PCI ID")
      Signed-off-by: default avatarVoon Weifeng <weifeng.voon@intel.com>
      Co-developed-by: default avatarMohammad Athari Bin Ismail <mohammad.athari.ismail@intel.com>
      Signed-off-by: default avatarMohammad Athari Bin Ismail <mohammad.athari.ismail@intel.com>
      Link: https://lore.kernel.org/r/20210126100844.30326-1-mohammad.athari.ismail@intel.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      7cfc4486
    • Wong, Vee Khee's avatar
      stmmac: intel: Add ADL-S 1Gbps PCI IDs · 88af9bd4
      Wong, Vee Khee authored
      Added PCI IDs for both Ethernet TSN Controllers on the ADL-S.
      
      Also, skip SerDes programming sequences as these are being carried out
      at the BIOS level for ADL-S.
      Signed-off-by: default avatarWong, Vee Khee <vee.khee.wong@intel.com>
      Link: https://lore.kernel.org/r/20210126085832.3814-1-vee.khee.wong@intel.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      88af9bd4
    • Giacinto Cifelli's avatar
      net: usb: cdc_ether: added support for Thales Cinterion PLSx3 modem family. · dad3a72f
      Giacinto Cifelli authored
      lsusb -v for this device:
      
      Bus 003 Device 007: ID 1e2d:0069
      Device Descriptor:
        bLength                18
        bDescriptorType         1
        bcdUSB               2.00
        bDeviceClass          239 Miscellaneous Device
        bDeviceSubClass         2 ?
        bDeviceProtocol         1 Interface Association
        bMaxPacketSize0        64
        idVendor           0x1e2d
        idProduct          0x0069
        bcdDevice            0.00
        iManufacturer           4 Cinterion Wireless Modules
        iProduct                3 PLSx3
        iSerial                 5 fa3c1419
        bNumConfigurations      1
        Configuration Descriptor:
          bLength                 9
          bDescriptorType         2
          wTotalLength          352
          bNumInterfaces         10
          bConfigurationValue     1
          iConfiguration          2 Cinterion Configuration
          bmAttributes         0xe0
            Self Powered
            Remote Wakeup
          MaxPower              500mA
          Interface Association:
            bLength                 8
            bDescriptorType        11
            bFirstInterface         0
            bInterfaceCount         2
            bFunctionClass          2 Communications
            bFunctionSubClass       2 Abstract (modem)
            bFunctionProtocol       1 AT-commands (v.25ter)
            iFunction               0
          Interface Descriptor:
            bLength                 9
            bDescriptorType         4
            bInterfaceNumber        0
            bAlternateSetting       0
            bNumEndpoints           1
            bInterfaceClass         2 Communications
            bInterfaceSubClass      2 Abstract (modem)
            bInterfaceProtocol      1 AT-commands (v.25ter)
            iInterface              0
            CDC Header:
              bcdCDC               1.10
            CDC ACM:
              bmCapabilities       0x02
                line coding and serial state
            CDC Call Management:
              bmCapabilities       0x03
                call management
                use DataInterface
              bDataInterface          1
            CDC Union:
              bMasterInterface        0
              bSlaveInterface         1
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x81  EP 1 IN
              bmAttributes            3
                Transfer Type            Interrupt
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0040  1x 64 bytes
              bInterval               5
          Interface Descriptor:
            bLength                 9
            bDescriptorType         4
            bInterfaceNumber        1
            bAlternateSetting       0
            bNumEndpoints           2
            bInterfaceClass        10 CDC Data
            bInterfaceSubClass      0 Unused
            bInterfaceProtocol      0
            iInterface              0
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x82  EP 2 IN
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0200  1x 512 bytes
              bInterval               0
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x01  EP 1 OUT
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0200  1x 512 bytes
              bInterval               0
          Interface Association:
            bLength                 8
            bDescriptorType        11
            bFirstInterface         2
            bInterfaceCount         2
            bFunctionClass          2 Communications
            bFunctionSubClass       2 Abstract (modem)
            bFunctionProtocol       1 AT-commands (v.25ter)
            iFunction               0
          Interface Descriptor:
            bLength                 9
            bDescriptorType         4
            bInterfaceNumber        2
            bAlternateSetting       0
            bNumEndpoints           1
            bInterfaceClass         2 Communications
            bInterfaceSubClass      2 Abstract (modem)
            bInterfaceProtocol      1 AT-commands (v.25ter)
            iInterface              0
            CDC Header:
              bcdCDC               1.10
            CDC ACM:
              bmCapabilities       0x02
                line coding and serial state
            CDC Call Management:
              bmCapabilities       0x03
                call management
                use DataInterface
              bDataInterface          3
            CDC Union:
              bMasterInterface        2
              bSlaveInterface         3
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x83  EP 3 IN
              bmAttributes            3
                Transfer Type            Interrupt
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0040  1x 64 bytes
              bInterval               5
          Interface Descriptor:
            bLength                 9
            bDescriptorType         4
            bInterfaceNumber        3
            bAlternateSetting       0
            bNumEndpoints           2
            bInterfaceClass        10 CDC Data
            bInterfaceSubClass      0 Unused
            bInterfaceProtocol      0
            iInterface              0
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x84  EP 4 IN
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0200  1x 512 bytes
              bInterval               0
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x02  EP 2 OUT
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0200  1x 512 bytes
              bInterval               0
          Interface Association:
            bLength                 8
            bDescriptorType        11
            bFirstInterface         4
            bInterfaceCount         2
            bFunctionClass          2 Communications
            bFunctionSubClass       2 Abstract (modem)
            bFunctionProtocol       1 AT-commands (v.25ter)
            iFunction               0
          Interface Descriptor:
            bLength                 9
            bDescriptorType         4
            bInterfaceNumber        4
            bAlternateSetting       0
            bNumEndpoints           1
            bInterfaceClass         2 Communications
            bInterfaceSubClass      2 Abstract (modem)
            bInterfaceProtocol      1 AT-commands (v.25ter)
            iInterface              0
            CDC Header:
              bcdCDC               1.10
            CDC ACM:
              bmCapabilities       0x02
                line coding and serial state
            CDC Call Management:
              bmCapabilities       0x03
                call management
                use DataInterface
              bDataInterface          5
            CDC Union:
              bMasterInterface        4
              bSlaveInterface         5
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x85  EP 5 IN
              bmAttributes            3
                Transfer Type            Interrupt
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0040  1x 64 bytes
              bInterval               5
          Interface Descriptor:
            bLength                 9
            bDescriptorType         4
            bInterfaceNumber        5
            bAlternateSetting       0
            bNumEndpoints           2
            bInterfaceClass        10 CDC Data
            bInterfaceSubClass      0 Unused
            bInterfaceProtocol      0
            iInterface              0
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x86  EP 6 IN
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0200  1x 512 bytes
              bInterval               0
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x03  EP 3 OUT
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0200  1x 512 bytes
              bInterval               0
          Interface Association:
            bLength                 8
            bDescriptorType        11
            bFirstInterface         6
            bInterfaceCount         2
            bFunctionClass          2 Communications
            bFunctionSubClass       2 Abstract (modem)
            bFunctionProtocol       1 AT-commands (v.25ter)
            iFunction               0
          Interface Descriptor:
            bLength                 9
            bDescriptorType         4
            bInterfaceNumber        6
            bAlternateSetting       0
            bNumEndpoints           1
            bInterfaceClass         2 Communications
            bInterfaceSubClass      2 Abstract (modem)
            bInterfaceProtocol      1 AT-commands (v.25ter)
            iInterface              0
            CDC Header:
              bcdCDC               1.10
            CDC ACM:
              bmCapabilities       0x02
                line coding and serial state
            CDC Call Management:
              bmCapabilities       0x03
                call management
                use DataInterface
              bDataInterface          7
            CDC Union:
              bMasterInterface        6
              bSlaveInterface         7
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x87  EP 7 IN
              bmAttributes            3
                Transfer Type            Interrupt
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0040  1x 64 bytes
              bInterval               5
          Interface Descriptor:
            bLength                 9
            bDescriptorType         4
            bInterfaceNumber        7
            bAlternateSetting       0
            bNumEndpoints           2
            bInterfaceClass        10 CDC Data
            bInterfaceSubClass      0 Unused
            bInterfaceProtocol      0
            iInterface              0
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x88  EP 8 IN
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0200  1x 512 bytes
              bInterval               0
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x04  EP 4 OUT
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0200  1x 512 bytes
              bInterval               0
          Interface Association:
            bLength                 8
            bDescriptorType        11
            bFirstInterface         8
            bInterfaceCount         2
            bFunctionClass          2 Communications
            bFunctionSubClass       0
            bFunctionProtocol       0
            iFunction               0
          Interface Descriptor:
            bLength                 9
            bDescriptorType         4
            bInterfaceNumber        8
            bAlternateSetting       0
            bNumEndpoints           1
            bInterfaceClass         2 Communications
            bInterfaceSubClass      6 Ethernet Networking
            bInterfaceProtocol      0
            iInterface              0
            CDC Header:
              bcdCDC               1.10
            CDC Ethernet:
              iMacAddress                      1 00A0C6C14190
              bmEthernetStatistics    0x00000000
              wMaxSegmentSize              16384
              wNumberMCFilters            0x0001
              bNumberPowerFilters              0
            CDC Union:
              bMasterInterface        8
              bSlaveInterface         9
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x89  EP 9 IN
              bmAttributes            3
                Transfer Type            Interrupt
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0040  1x 64 bytes
              bInterval               5
          Interface Descriptor:
            bLength                 9
            bDescriptorType         4
            bInterfaceNumber        9
            bAlternateSetting       0
            bNumEndpoints           0
            bInterfaceClass        10 CDC Data
            bInterfaceSubClass      0 Unused
            bInterfaceProtocol      0
            iInterface              0
          Interface Descriptor:
            bLength                 9
            bDescriptorType         4
            bInterfaceNumber        9
            bAlternateSetting       1
            bNumEndpoints           2
            bInterfaceClass        10 CDC Data
            bInterfaceSubClass      0 Unused
            bInterfaceProtocol      0
            iInterface              0
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x8a  EP 10 IN
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0200  1x 512 bytes
              bInterval               0
            Endpoint Descriptor:
              bLength                 7
              bDescriptorType         5
              bEndpointAddress     0x05  EP 5 OUT
              bmAttributes            2
                Transfer Type            Bulk
                Synch Type               None
                Usage Type               Data
              wMaxPacketSize     0x0200  1x 512 bytes
              bInterval               0
      Device Qualifier (for other device speed):
        bLength                10
        bDescriptorType         6
        bcdUSB               2.00
        bDeviceClass          239 Miscellaneous Device
        bDeviceSubClass         2 ?
        bDeviceProtocol         1 Interface Association
        bMaxPacketSize0        64
        bNumConfigurations      1
      Device Status:     0x0000
        (Bus Powered)
      Signed-off-by: default avatarGiacinto Cifelli <gciofono@gmail.com>
      Link: https://lore.kernel.org/r/20210126044245.8455-1-gciofono@gmail.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      dad3a72f