1. Apr 15, 2023
  2. Apr 14, 2023
    • David S. Miller's avatar
      Merge branch 'msg_control-split' · c11d2e71
      David S. Miller authored
      Kevin Brodsky says:
      
      ====================
      net: Finish up ->msg_control{,_user} split
      
      Commit 1f466e1f
      
       ("net: cleanly handle kernel vs user buffers for
      ->msg_control") introduced the msg_control_user and
      msg_control_is_user fields in struct msghdr, to ensure that user
      pointers are represented as such. It also took care of converting most
      users of struct msghdr::msg_control where user pointers are involved. It
      did however miss a number of cases, and some code using msg_control
      inappropriately has also appeared in the meantime.
      
      This series is attempting to complete the split, by eliminating the
      remaining cases where msg_control is used when in fact a user
      pointer is stored in the union (patch 1).
      
      It also addresses a couple of issues with msg_control_is_user: one where
      it is not updated as it should (patch 2), and one where it is not
      initialised (patch 3).
      
      v1..v2:
      * Split out the msg_control_is_user fixes into separate patches.
      ====================
      
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c11d2e71
    • Kevin Brodsky's avatar
      net/ipv6: Initialise msg_control_is_user · b6d85cf5
      Kevin Brodsky authored
      
      
      do_ipv6_setsockopt() makes use of struct msghdr::msg_control in the
      IPV6_2292PKTOPTIONS case. Make sure to initialise
      msg_control_is_user accordingly.
      
      Cc: Christoph Hellwig <hch@lst.de>
      Cc: Eric Dumazet <edumazet@google.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Jakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarKevin Brodsky <kevin.brodsky@arm.com>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b6d85cf5
    • Kevin Brodsky's avatar
      net/compat: Update msg_control_is_user when setting a kernel pointer · 60daf8d4
      Kevin Brodsky authored
      
      
      cmsghdr_from_user_compat_to_kern() is an unusual case w.r.t. how
      the kmsg->msg_control* fields are used. The input struct msghdr
      holds a pointer to a user buffer, i.e. ksmg->msg_control_user is
      active. However, upon success, a kernel pointer is stored in
      kmsg->msg_control. kmsg->msg_control_is_user should therefore be
      updated accordingly.
      
      Cc: Christoph Hellwig <hch@lst.de>
      Cc: Eric Dumazet <edumazet@google.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Jakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarKevin Brodsky <kevin.brodsky@arm.com>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      60daf8d4
    • Kevin Brodsky's avatar
      net: Ensure ->msg_control_user is used for user buffers · c39ef213
      Kevin Brodsky authored
      Since commit 1f466e1f
      
       ("net: cleanly handle kernel vs user
      buffers for ->msg_control"), pointers to user buffers should be
      stored in struct msghdr::msg_control_user, instead of the
      msg_control field.  Most users of msg_control have already been
      converted (where user buffers are involved), but not all of them.
      
      This patch attempts to address the remaining cases. An exception is
      made for null checks, as it should be safe to use msg_control
      unconditionally for that purpose.
      
      Cc: Christoph Hellwig <hch@lst.de>
      Cc: Eric Dumazet <edumazet@google.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Jakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarKevin Brodsky <kevin.brodsky@arm.com>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c39ef213
    • Arseniy Krasnov's avatar
      vsock/loopback: don't disable irqs for queue access · eaaa4e92
      Arseniy Krasnov authored
      
      
      This replaces 'skb_queue_tail()' with 'virtio_vsock_skb_queue_tail()'.
      The first one uses 'spin_lock_irqsave()', second uses 'spin_lock_bh()'.
      There is no need to disable interrupts in the loopback transport as
      there is no access to the queue with skbs from interrupt context. Both
      virtio and vhost transports work in the same way.
      
      Signed-off-by: default avatarArseniy Krasnov <AVKrasnov@sberdevices.ru>
      Reviewed-by: default avatarStefano Garzarella <sgarzare@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      eaaa4e92
    • David S. Miller's avatar
      Merge branch 'mana-jumbo-frames' · c61fcc09
      David S. Miller authored
      
      
      Haiyang Zhang says:
      
      ====================
      net: mana: Add support for jumbo frame
      
      The set adds support for jumbo frame,
      with some optimization for the RX path.
      ====================
      
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c61fcc09
    • Haiyang Zhang's avatar
      net: mana: Add support for jumbo frame · 80f6215b
      Haiyang Zhang authored
      
      
      During probe, get the hardware-allowed max MTU by querying the device
      configuration. Users can select MTU up to the device limit.
      When XDP is in use, limit MTU settings so the buffer size is within
      one page. And, when MTU is set to a too large value, XDP is not allowed
      to run.
      Also, to prevent changing MTU fails, and leaves the NIC in a bad state,
      pre-allocate all buffers before starting the change. So in low memory
      condition, it will return error, without affecting the NIC.
      
      Signed-off-by: default avatarHaiyang Zhang <haiyangz@microsoft.com>
      Reviewed-by: default avatarJesse Brandeburg <jesse.brandeburg@intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      80f6215b
    • Haiyang Zhang's avatar
      net: mana: Enable RX path to handle various MTU sizes · 2fbbd712
      Haiyang Zhang authored
      
      
      Update RX data path to allocate and use RX queue DMA buffers with
      proper size based on potentially various MTU sizes.
      
      Signed-off-by: default avatarHaiyang Zhang <haiyangz@microsoft.com>
      Reviewed-by: default avatarJesse Brandeburg <jesse.brandeburg@intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2fbbd712
    • Haiyang Zhang's avatar
      net: mana: Refactor RX buffer allocation code to prepare for various MTU · a2917b23
      Haiyang Zhang authored
      
      
      Move out common buffer allocation code from mana_process_rx_cqe() and
      mana_alloc_rx_wqe() to helper functions.
      Refactor related variables so they can be changed in one place, and buffer
      sizes are in sync.
      
      Signed-off-by: default avatarHaiyang Zhang <haiyangz@microsoft.com>
      Reviewed-by: default avatarJesse Brandeburg <jesse.brandeburg@intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a2917b23
    • Haiyang Zhang's avatar
      net: mana: Use napi_build_skb in RX path · ce518bc3
      Haiyang Zhang authored
      
      
      Use napi_build_skb() instead of build_skb() to take advantage of the
      NAPI percpu caches to obtain skbuff_head.
      
      Signed-off-by: default avatarHaiyang Zhang <haiyangz@microsoft.com>
      Reviewed-by: default avatarJesse Brandeburg <jesse.brandeburg@intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ce518bc3
    • Jakub Kicinski's avatar
      Merge tag 'mlx5-updates-2023-04-11' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux · e473ea81
      Jakub Kicinski authored
      Saeed Mahameed says:
      
      ====================
      mlx5-updates-2023-04-11
      
      1) Vlad adds the support for linux bridge multicast offload support
         Patches #1 through #9
         Synopsis
      
      Vlad Says:
      ==============
      Implement support of bridge multicast offload in mlx5. Handle port object
      attribute SWITCHDEV_ATTR_ID_BRIDGE_MC_DISABLED notification to toggle multicast
      offload and bridge snooping support on bridge. Handle port object
      SWITCHDEV_OBJ_ID_PORT_MDB notification to attach a bridge port to MDB.
      
      Steering architecture
      
      Existing offload infrastructure relies on two levels of flow tables - bridge
      ingress and egress. For multicast offload the architecture is extended with
      additional layer of per-port multicast replication tables. Such tables filter
      loopback traffic (so packets are not replicated to their source port) and pop
      VLAN headers for "untagged" VLANs. The tables are referenced by the MDB rules in
      egress table. MDB egress rule can point to multiple per-port multicast tables,
      which causes matching multicast traffic to be replicated to all of them, and,
      consecutively, to several bridge ports:
      
                                                                                                                                  +--------+--+
                                                                                          +---------------------------------------> Port 1 |  |
                                                                                          |                                       +-^------+--+
                                                                                          |                                         |
                                                                                          |                                         |
                                             +-----------------------------------------+  |     +---------------------------+       |
                                             | EGRESS table                            |  |  +--> PORT 1 multicast table    |       |
      +----------------------------------+   +-----------------------------------------+  |  |  +---------------------------+       |
      | INGRESS table                    |   |                                         |  |  |  |                           |       |
      +----------------------------------+   | dst_mac=P1,vlan=X -> pop vlan, goto P1  +--+  |  | FG0:                      |       |
      |                                  |   | dst_mac=P1,vlan=Y -> pop vlan, goto P1  |     |  | src_port=dst_port -> drop |       |
      | src_mac=M1,vlan=X -> goto egress +---> dst_mac=P2,vlan=X -> pop vlan, goto P2  +--+  |  | FG1:                      |       |
      | ...                              |   | dst_mac=P2,vlan=Y -> goto P2            |  |  |  | VLAN X -> pop, goto port  |       |
      |                                  |   | dst_mac=MDB1,vlan=Y -> goto mcast P1,P2 +-----+  | ...                       |       |
      +----------------------------------+   |                                         |  |  |  | VLAN Y -> pop, goto port  +-------+
                                             +-----------------------------------------+  |  |  | FG3:                      |
                                                                                          |  |  | matchall -> goto port     |
                                                                                          |  |  |                           |
                                                                                          |  |  +---------------------------+
                                                                                          |  |
                                                                                          |  |
                                                                                          |  |                                    +--------+--+
                                                                                          +---------------------------------------> Port 2 |  |
                                                                                             |                                    +-^------+--+
                                                                                             |                                      |
                                                                                             |                                      |
                                                                                             |  +---------------------------+       |
                                                                                             +--> PORT 2 multicast table    |       |
                                                                                                +---------------------------+       |
                                                                                                |                           |       |
                                                                                                | FG0:                      |       |
                                                                                                | src_port=dst_port -> drop |       |
                                                                                                | FG1:                      |       |
                                                                                                | VLAN X -> pop, goto port  |       |
                                                                                                | ...                       |       |
                                                                                                |                           |       |
                                                                                                | FG3:                      |       |
                                                                                                | matchall -> goto port     +-------+
                                                                                                |                           |
                                                                                                +---------------------------+
      
      Patches overview:
      
      - Patch 1 adds hardware definition bits for capabilities required to replicate
        multicast packets to multiple per-port tables. These bits are used by
        following patches to only attempt multicast offload if firmware and hardware
        provide necessary support.
      
      - Pathces 2-4 patches are preparations and refactoring.
      
      - Patch 5 implements necessary infrastructure to toggle multicast offload
        via SWITCHDEV_ATTR_ID_BRIDGE_MC_DISABLED port object attribute notification.
        This also enabled IGMP and MLD snooping.
      
      - Patch 6 implements per-port multicast replication tables. It only supports
        filtering of loopback packets.
      
      - Patch 7 extends per-port multicast tables with VLAN pop support for 'untagged'
        VLANs.
      
      - Patch 8 handles SWITCHDEV_OBJ_ID_PORT_MDB port object notifications. It
        creates MDB replication rules in egress table that can replicate packets to
        multiple per-port multicast tables.
      
      - Patch 9 adds tracepoints for MDB events.
      
      ==============
      
      2) Parav Create a new allocation profile for SFs, to save on memory
      
      3) Yevgeny provides some initial patches for upcoming software steering
         support new pattern/arguments type of modify_header actions.
      
      Starting with ConnectX-6 DX, we use a new design of modify_header FW object.
      The current modify_header object allows for having only limited number of
      these FW objects, which means that we are limited in the number of offloaded
      flows that require modify_header action.
      
      As a preparation Yevgeny provides the following 4 patches:
       - Patch 1: Add required mlx5_ifc HW bits
       - Patch 2, 3: Add new WQE type and opcode that is required for pattern/arg
         support and adds appropriate support in dr_send.c
       - Patch 4: Add ICM pool for modify-header-pattern objects and implement
         patterns cache, allowing patterns reuse for different flows
      
      * tag 'mlx5-updates-2023-04-11' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux:
        net/mlx5: DR, Add modify-header-pattern ICM pool
        net/mlx5: DR, Prepare sending new WQE type
        net/mlx5: Add new WQE for updating flow table
        net/mlx5: Add mlx5_ifc bits for modify header argument
        net/mlx5: DR, Set counter ID on the last STE for STEv1 TX
        net/mlx5: Create a new profile for SFs
        net/mlx5: Bridge, add tracepoints for multicast
        net/mlx5: Bridge, implement mdb offload
        net/mlx5: Bridge, support multicast VLAN pop
        net/mlx5: Bridge, add per-port multicast replication tables
        net/mlx5: Bridge, snoop igmp/mld packets
        net/mlx5: Bridge, extract code to lookup parent bridge of port
        net/mlx5: Bridge, move additional data structures to priv header
        net/mlx5: Bridge, increase bridge tables sizes
        net/mlx5: Add mlx5_ifc definitions for bridge multicast support
      ====================
      
      Link: https://lore.kernel.org/r/20230412040752.14220-1-saeed@kernel.org
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      e473ea81
    • Jakub Kicinski's avatar
      Merge branch 'add-kernel-tc-mqprio-and-tc-taprio-support-for-preemptible-traffic-classes' · f7d29571
      Jakub Kicinski authored
      Vladimir Oltean says:
      
      ====================
      Add kernel tc-mqprio and tc-taprio support for preemptible traffic classes
      
      The last RFC in August 2022 contained a proposal for the UAPI of both
      TSN standards which together form Frame Preemption (802.1Q and 802.3):
      https://lore.kernel.org/netdev/20220816222920.1952936-1-vladimir.oltean@nxp.com/
      
      It wasn't clear at the time whether the 802.1Q portion of Frame Preemption
      should be exposed via the tc qdisc (mqprio, taprio) or via some other
      layer (perhaps also ethtool like the 802.3 portion, or dcbnl), even
      though the options were discussed extensively, with pros and cons:
      https://lore.kernel.org/netdev/20220816222920.1952936-3-vladimir.oltean@nxp.com/
      
      So the 802.3 portion got submitted separately and finally was accepted:
      https://lore.kernel.org/netdev/20230119122705.73054-1-vladimir.oltean@nxp.com/
      
      leaving the only remaining question: how do we expose the 802.1Q bits?
      
      This series proposes that we use the Qdisc layer, through separate
      (albeit very similar) UAPI in mqprio and taprio, and that both these
      Qdiscs pass the information down to the offloading device driver through
      the common mqprio offload structure (which taprio also passes).
      
      An implementation is provided for the NXP LS1028A on-board Ethernet
      endpoint (enetc). Previous versions also contained support for its
      embedded switch (felix), but this needs more work and will be submitted
      separately.
      
      v4: https://lore.kernel.org/netdev/20230403103440.2895683-1-vladimir.oltean@nxp.com/
      v2: https://lore.kernel.org/netdev/20230219135309.594188-1-vladimir.oltean@nxp.com/
      v1: https://lore.kernel.org/netdev/20230216232126.3402975-1-vladimir.oltean@nxp.com/
      ====================
      
      Link: https://lore.kernel.org/r/20230411180157.1850527-1-vladimir.oltean@nxp.com
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      f7d29571
    • Vladimir Oltean's avatar
      net: enetc: add support for preemptible traffic classes · 01e23b2b
      Vladimir Oltean authored
      
      
      PFs which support the MAC Merge layer also have a set of 8 registers
      called "Port traffic class N frame preemption register (PTC0FPR - PTC7FPR)".
      Through these, a traffic class (group of TX rings of same dequeue
      priority) can be mapped to the eMAC or to the pMAC.
      
      There's nothing particularly spectacular here. We should probably only
      commit the preemptible TCs to hardware once the MAC Merge layer became
      active, but unlike Felix, we don't have an IRQ that notifies us of that.
      We'd have to sleep for up to verifyTime (127 ms) to wait for a
      resolution coming from the verification state machine; not only from the
      ndo_setup_tc() code path, but also from enetc_mm_link_state_update().
      Since it's relatively complicated and has a relatively small benefit,
      I'm not doing it.
      
      Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
      Reviewed-by: default avatarFerenc Fejes <fejes@inf.elte.hu>
      Reviewed-by: default avatarSimon Horman <simon.horman@corigine.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      01e23b2b
    • Vladimir Oltean's avatar
      net: enetc: rename "mqprio" to "qopt" · 50764da3
      Vladimir Oltean authored
      
      
      To gain access to the larger encapsulating structure which has the type
      tc_mqprio_qopt_offload, rename just the "qopt" field as "qopt".
      
      Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
      Reviewed-by: default avatarFerenc Fejes <fejes@inf.elte.hu>
      Reviewed-by: default avatarSimon Horman <simon.horman@corigine.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      50764da3
    • Vladimir Oltean's avatar
      net/sched: taprio: allow per-TC user input of FP adminStatus · a721c3e5
      Vladimir Oltean authored
      
      
      This is a duplication of the FP adminStatus logic introduced for
      tc-mqprio. Offloading is done through the tc_mqprio_qopt_offload
      structure embedded within tc_taprio_qopt_offload. So practically, if a
      device driver is written to treat the mqprio portion of taprio just like
      standalone mqprio, it gets unified handling of frame preemption.
      
      I would have reused more code with taprio, but this is mostly netlink
      attribute parsing, which is hard to transform into generic code without
      having something that stinks as a result. We have the same variables
      with the same semantics, just different nlattr type values
      (TCA_MQPRIO_TC_ENTRY=5 vs TCA_TAPRIO_ATTR_TC_ENTRY=12;
      TCA_MQPRIO_TC_ENTRY_FP=2 vs TCA_TAPRIO_TC_ENTRY_FP=3, etc) and
      consequently, different policies for the nest.
      
      Every time nla_parse_nested() is called, an on-stack table "tb" of
      nlattr pointers is allocated statically, up to the maximum understood
      nlattr type. That array size is hardcoded as a constant, but when
      transforming this into a common parsing function, it would become either
      a VLA (which the Linux kernel rightfully doesn't like) or a call to the
      allocator.
      
      Having FP adminStatus in tc-taprio can be seen as addressing the 802.1Q
      Annex S.3 "Scheduling and preemption used in combination, no HOLD/RELEASE"
      and S.4 "Scheduling and preemption used in combination with HOLD/RELEASE"
      use cases. HOLD and RELEASE events are emitted towards the underlying
      MAC Merge layer when the schedule hits a Set-And-Hold-MAC or a
      Set-And-Release-MAC gate operation. So within the tc-taprio UAPI space,
      one can distinguish between the 2 use cases by choosing whether to use
      the TC_TAPRIO_CMD_SET_AND_HOLD and TC_TAPRIO_CMD_SET_AND_RELEASE gate
      operations within the schedule, or just TC_TAPRIO_CMD_SET_GATES.
      
      A small part of the change is dedicated to refactoring the max_sdu
      nlattr parsing to put all logic under the "if" that tests for presence
      of that nlattr.
      
      Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
      Reviewed-by: default avatarFerenc Fejes <fejes@inf.elte.hu>
      Reviewed-by: default avatarSimon Horman <simon.horman@corigine.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      a721c3e5
    • Vladimir Oltean's avatar
      net/sched: mqprio: allow per-TC user input of FP adminStatus · f62af20b
      Vladimir Oltean authored
      
      
      IEEE 802.1Q-2018 clause 6.7.2 Frame preemption specifies that each
      packet priority can be assigned to a "frame preemption status" value of
      either "express" or "preemptible". Express priorities are transmitted by
      the local device through the eMAC, and preemptible priorities through
      the pMAC (the concepts of eMAC and pMAC come from the 802.3 MAC Merge
      layer).
      
      The FP adminStatus is defined per packet priority, but 802.1Q clause
      12.30.1.1.1 framePreemptionAdminStatus also says that:
      
      | Priorities that all map to the same traffic class should be
      | constrained to use the same value of preemption status.
      
      It is impossible to ignore the cognitive dissonance in the standard
      here, because it practically means that the FP adminStatus only takes
      distinct values per traffic class, even though it is defined per
      priority.
      
      I can see no valid use case which is prevented by having the kernel take
      the FP adminStatus as input per traffic class (what we do here).
      In addition, this also enforces the above constraint by construction.
      User space network managers which wish to expose FP adminStatus per
      priority are free to do so; they must only observe the prio_tc_map of
      the netdev (which presumably is also under their control, when
      constructing the mqprio netlink attributes).
      
      The reason for configuring frame preemption as a property of the Qdisc
      layer is that the information about "preemptible TCs" is closest to the
      place which handles the num_tc and prio_tc_map of the netdev. If the
      UAPI would have been any other layer, it would be unclear what to do
      with the FP information when num_tc collapses to 0. A key assumption is
      that only mqprio/taprio change the num_tc and prio_tc_map of the netdev.
      Not sure if that's a great assumption to make.
      
      Having FP in tc-mqprio can be seen as an implementation of the use case
      defined in 802.1Q Annex S.2 "Preemption used in isolation". There will
      be a separate implementation of FP in tc-taprio, for the other use
      cases.
      
      Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
      Reviewed-by: default avatarFerenc Fejes <fejes@inf.elte.hu>
      Reviewed-by: default avatarSimon Horman <simon.horman@corigine.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      f62af20b
    • Vladimir Oltean's avatar
      net/sched: pass netlink extack to mqprio and taprio offload · c54876cd
      Vladimir Oltean authored
      
      
      With the multiplexed ndo_setup_tc() model which lacks a first-class
      struct netlink_ext_ack * argument, the only way to pass the netlink
      extended ACK message down to the device driver is to embed it within the
      offload structure.
      
      Do this for struct tc_mqprio_qopt_offload and struct tc_taprio_qopt_offload.
      
      Since struct tc_taprio_qopt_offload also contains a tc_mqprio_qopt_offload
      structure, and since device drivers might effectively reuse their mqprio
      implementation for the mqprio portion of taprio, we make taprio set the
      extack in both offload structures to point at the same netlink extack
      message.
      
      In fact, the taprio handling is a bit more tricky, for 2 reasons.
      
      First is because the offload structure has a longer lifetime than the
      extack structure. The driver is supposed to populate the extack
      synchronously from ndo_setup_tc() and leave it alone afterwards.
      To not have any use-after-free surprises, we zero out the extack pointer
      when we leave taprio_enable_offload().
      
      The second reason is because taprio does overwrite the extack message on
      ndo_setup_tc() error. We need to switch to the weak form of setting an
      extack message, which preserves a potential message set by the driver.
      
      Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
      Reviewed-by: default avatarSimon Horman <simon.horman@corigine.com>
      Acked-by: default avatarJamal Hadi Salim <jhs@mojatatu.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      c54876cd
    • Vladimir Oltean's avatar
      net/sched: mqprio: add an extack message to mqprio_parse_opt() · ab277d20
      Vladimir Oltean authored
      Ferenc reports that a combination of poor iproute2 defaults and obscure
      cases where the kernel returns -EINVAL make it difficult to understand
      what is wrong with this command:
      
      $ ip link add veth0 numtxqueues 8 numrxqueues 8 type veth peer name veth1
      $ tc qdisc add dev veth0 root mqprio num_tc 8 map 0 1 2 3 4 5 6 7 \
              queues 1@0 1@1 1@2 1@3 1@4 1@5 1@6 1@7
      RTNETLINK answers: Invalid argument
      
      Hopefully with this patch, the cause is clearer:
      
      Error: Device does not support hardware offload.
      
      The kernel was (and still is) rejecting this because iproute2 defaults
      to "hw 1" if this command line option is not specified.
      
      Link: https://lore.kernel.org/netdev/ede5e9a2f27bf83bfb86d3e8c4ca7b34093b99e2.camel@inf.elte.hu/
      
      
      Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
      Reviewed-by: default avatarFerenc Fejes <fejes@inf.elte.hu>
      Reviewed-by: default avatarSimon Horman <simon.horman@corigine.com>
      Acked-by: default avatarJamal Hadi Salim <jhs@mojatatu.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      ab277d20
    • Vladimir Oltean's avatar
      net/sched: mqprio: add extack to mqprio_parse_nlattr() · 57f21bf8
      Vladimir Oltean authored
      
      
      Netlink attribute parsing in mqprio is a minesweeper game, with many
      options having the possibility of being passed incorrectly and the user
      being none the wiser.
      
      Try to make errors less sour by giving user space some information
      regarding what went wrong.
      
      Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
      Reviewed-by: default avatarFerenc Fejes <fejes@inf.elte.hu>
      Reviewed-by: default avatarSimon Horman <simon.horman@corigine.com>
      Acked-by: default avatarJamal Hadi Salim <jhs@mojatatu.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      57f21bf8
    • Vladimir Oltean's avatar
      net/sched: mqprio: simplify handling of nlattr portion of TCA_OPTIONS · 3dd0c16e
      Vladimir Oltean authored
      In commit 4e8b86c0 ("mqprio: Introduce new hardware offload mode and
      shaper in mqprio"), the TCA_OPTIONS format of mqprio was extended to
      contain a fixed portion (of size NLA_ALIGN(sizeof struct tc_mqprio_qopt))
      and a variable portion of other nlattrs (in the TCA_MQPRIO_* type space)
      following immediately afterwards.
      
      In commit feb2cf3d
      
       ("net/sched: mqprio: refactor nlattr parsing to a
      separate function"), we've moved the nlattr handling to a smaller
      function, but yet, a small parse_attr() still remains, and the larger
      mqprio_parse_nlattr() still does not have access to the beginning, and
      the length, of the TCA_OPTIONS region containing these other nlattrs.
      
      In a future change, the mqprio qdisc will need to iterate through this
      nlattr region to discover other attributes, so eliminate parse_attr()
      and add 2 variables in mqprio_parse_nlattr() which hold the beginning
      and the length of the nlattr range.
      
      We avoid the need to memset when nlattr_opt_len has insufficient length
      by pre-initializing the table "tb".
      
      Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
      Reviewed-by: default avatarFerenc Fejes <fejes@inf.elte.hu>
      Reviewed-by: default avatarSimon Horman <simon.horman@corigine.com>
      Acked-by: default avatarJamal Hadi Salim <jhs@mojatatu.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      3dd0c16e
    • Vladimir Oltean's avatar
      net: ethtool: create and export ethtool_dev_mm_supported() · d54151aa
      Vladimir Oltean authored
      
      
      Create a wrapper over __ethtool_dev_mm_supported() which also calls
      ethnl_ops_begin() and ethnl_ops_complete(). It can be used by other code
      layers, such as tc, to make sure that preemptible TCs are supported
      (this is true if an underlying MAC Merge layer exists).
      
      Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
      Reviewed-by: default avatarFerenc Fejes <fejes@inf.elte.hu>
      Reviewed-by: default avatarSimon Horman <simon.horman@corigine.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      d54151aa
    • Rahul Rameshbabu's avatar
      tools: ynl: Rename ethtool to ethtool.py · 85a4abed
      Rahul Rameshbabu authored
      
      
      Make it explicit that this tool is not a drop-in replacement for ethtool.
      This tool is intended for testing ethtool functionality implemented in the
      kernel and should use a name that differentiates it from the ethtool
      utility.
      
      Signed-off-by: default avatarRahul Rameshbabu <rrameshbabu@nvidia.com>
      Link: https://lore.kernel.org/r/20230413012252.184434-2-rrameshbabu@nvidia.com
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      85a4abed
    • Rahul Rameshbabu's avatar
      tools: ynl: Remove absolute paths to yaml files from ethtool testing tool · 3ea31e66
      Rahul Rameshbabu authored
      Absolute paths for the spec and schema files make the ethtool testing tool
      unusable with freshly checked-out source trees. Replace absolute paths with
      relative paths for both files in the Documentation/ directory.
      
      Issue seen before the change
      
        Traceback (most recent call last):
          File "/home/binary-eater/Documents/mlx/linux/tools/net/ynl/./ethtool", line 424, in <module>
            main()
          File "/home/binary-eater/Documents/mlx/linux/tools/net/ynl/./ethtool", line 158, in main
            ynl = YnlFamily(spec, schema)
          File "/home/binary-eater/Documents/mlx/linux/tools/net/ynl/lib/ynl.py", line 342, in __init__
            super().__init__(def_path, schema)
          File "/home/binary-eater/Documents/mlx/linux/tools/net/ynl/lib/nlspec.py", line 333, in __init__
            with open(spec_path, "r") as stream:
        FileNotFoundError: [Errno 2] No such file or directory: '/usr/local/google/home/sdf/src/linux/Documentation/netlink/specs/ethtool.yaml'
      
      Fixes: f3d07b02
      
       ("tools: ynl: ethtool testing tool")
      Signed-off-by: default avatarRahul Rameshbabu <rrameshbabu@nvidia.com>
      Link: https://lore.kernel.org/r/20230413012252.184434-1-rrameshbabu@nvidia.com
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      3ea31e66
    • Jakub Kicinski's avatar
      Merge branch 'macb-ptp-minor-updates' · 916b15fb
      Jakub Kicinski authored
      Harini Katakam says:
      
      ====================
      Macb PTP minor updates
      
      - Enable PTP unicast
      - Optimize HW timestamp reading
      ====================
      
      Link: https://lore.kernel.org/r/20230411123712.11459-1-harini.katakam@amd.com
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      916b15fb
    • Harini Katakam's avatar
      net: macb: Optimize reading HW timestamp · 8c0d0fe0
      Harini Katakam authored
      
      
      The seconds input from BD (6 bits) just needs to be ORed with the
      upper bits from timer in this function. Avoid addition operation
      every single time. Seconds rollover handling is left untouched.
      
      Signed-off-by: default avatarHarini Katakam <harini.katakam@xilinx.com>
      Signed-off-by: default avatarMichal Simek <michal.simek@xilinx.com>
      Signed-off-by: default avatarRadhey Shyam Pandey <radhey.shyam.pandey@xilinx.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      8c0d0fe0
    • Harini Katakam's avatar
      net: macb: Enable PTP unicast · ee4e92c2
      Harini Katakam authored
      
      
      Enable transmission and reception of PTP unicast packets by
      updating PTP unicast config bit and setting current HW mac
      address as allowed address in PTP unicast filter registers.
      
      Signed-off-by: default avatarHarini Katakam <harini.katakam@xilinx.com>
      Signed-off-by: default avatarMichal Simek <michal.simek@xilinx.com>
      Signed-off-by: default avatarRadhey Shyam Pandey <radhey.shyam.pandey@xilinx.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      ee4e92c2
    • Harini Katakam's avatar
      net: macb: Update gem PTP support check · adee474a
      Harini Katakam authored
      
      
      There are currently two checks for PTP functionality - one on GEM
      capability and another on the kernel config option. Combine them
      into a single function as there's no use case where gem_has_ptp is
      TRUE and MACB_USE_HWSTAMP is false.
      
      Signed-off-by: default avatarHarini Katakam <harini.katakam@amd.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      adee474a
    • Jakub Kicinski's avatar
      Merge branch 'ocelot-felix-driver-cleanup' · fb4be9a4
      Jakub Kicinski authored
      Vladimir Oltean says:
      
      ====================
      Ocelot/Felix driver cleanup
      
      The cleanup mostly handles the statistics code path - some issues
      regarding understandability became apparent after the series
      "Fix trainwreck with Ocelot switch statistics counters":
      https://lore.kernel.org/netdev/20230321010325.897817-1-vladimir.oltean@nxp.com/
      
      There is also one patch which cleans up a misleading comment
      in the DSA felix_setup().
      ====================
      
      Link: https://lore.kernel.org/r/20230412124737.2243527-1-vladimir.oltean@nxp.com
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      fb4be9a4
    • Vladimir Oltean's avatar
      net: mscc: ocelot: fix ineffective WARN_ON() in ocelot_stats.c · a291399e
      Vladimir Oltean authored
      
      
      Since it is hopefully now clear that, since "last" and "layout[i].reg"
      are enum types and not addresses, the existing WARN_ON() is ineffective
      in checking that the _addresses_ are sorted in the proper order.
      
      Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
      Reviewed-by: default avatarJacob Keller <jacob.e.keller@intel.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      a291399e
    • Vladimir Oltean's avatar
      net: mscc: ocelot: strengthen type of "int i" in ocelot_stats.c · 6663c01e
      Vladimir Oltean authored
      
      
      The "int i" used to index the struct ocelot_stat_layout array actually
      has a specific type: enum ocelot_stat. Use it, so that the WARN()
      comment from ocelot_prepare_stats_regions() makes more sense.
      
      Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
      Reviewed-by: default avatarJacob Keller <jacob.e.keller@intel.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      6663c01e
    • Vladimir Oltean's avatar
      net: mscc: ocelot: strengthen type of "u32 reg" and "u32 base" in ocelot_stats.c · eae0b9d1
      Vladimir Oltean authored
      
      
      Use the specific enum ocelot_reg to make it clear that the region
      registers are encoded and not plain addresses.
      
      Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
      Reviewed-by: default avatarJacob Keller <jacob.e.keller@intel.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      eae0b9d1
    • Vladimir Oltean's avatar
      net: dsa: felix: remove confusing/incorrect comment from felix_setup() · a9afc3e4
      Vladimir Oltean authored
      That comment was written prior to knowing that what I was actually
      seeing was a manifestation of the bug fixed in commit b4024c9e
      
      
      ("felix: Fix initialization of ioremap resources").
      
      There isn't any particular reason now why the hardware initialization is
      done in felix_setup(), so just delete that comment to avoid spreading
      misinformation.
      
      Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
      Reviewed-by: default avatarJacob Keller <jacob.e.keller@intel.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      a9afc3e4
    • Vladimir Oltean's avatar
      net: mscc: ocelot: remove blank line at the end of ocelot_stats.c · 93f0f93b
      Vladimir Oltean authored
      Commit a3bb8f52
      
       ("net: mscc: ocelot: remove unnecessary exposure of
      stats structures") made an unnecessary change which was to add a new
      line at the end of ocelot_stats.c. Remove it.
      
      Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
      Acked-by: default avatarColin Foster <colin.foster@in-advantage.com>
      Reviewed-by: default avatarJacob Keller <jacob.e.keller@intel.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      93f0f93b
    • Vladimir Oltean's avatar
      net: mscc: ocelot: debugging print for statistics regions · 07de3265
      Vladimir Oltean authored
      To make it easier to debug future issues with statistics counters not
      getting aggregated properly into regions, like what happened in commit
      6acc72a4
      
       ("net: mscc: ocelot: fix stats region batching"), add some
      dev_dbg() prints which show the regions that were dynamically
      determined.
      
      Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
      Reviewed-by: default avatarJacob Keller <jacob.e.keller@intel.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      07de3265
    • Vladimir Oltean's avatar
      net: mscc: ocelot: refactor enum ocelot_reg decoding to helper · 40cd07cb
      Vladimir Oltean authored
      
      
      ocelot_io.c duplicates the decoding of an enum ocelot_reg (which holds
      an enum ocelot_target in the upper bits and an index into a regmap array
      in the lower bits) 4 times.
      
      We'd like to reuse that logic once more, from ocelot.c. In order to do
      that, let's consolidate the existing 4 instances into a header
      accessible both by ocelot.c as well as by ocelot_io.c.
      
      Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
      Reviewed-by: default avatarJacob Keller <jacob.e.keller@intel.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      40cd07cb
    • Vladimir Oltean's avatar
      net: mscc: ocelot: strengthen type of "u32 reg" in I/O accessors · 9ecd0579
      Vladimir Oltean authored
      
      
      The "u32 reg" argument that is passed to these functions is not a plain
      address, but rather a driver-specific encoding of another enum
      ocelot_target target in the upper bits, and an index into the
      u32 ocelot->map[target][] array in the lower bits. That encoded value
      takes the type "enum ocelot_reg" and is what is passed to these I/O
      functions, so let's actually use that to prevent type confusion.
      
      Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
      Reviewed-by: default avatarJacob Keller <jacob.e.keller@intel.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      9ecd0579
    • Jakub Kicinski's avatar
      Daniel Borkmann says: · c2865b11
      Jakub Kicinski authored
      ====================
      pull-request: bpf-next 2023-04-13
      
      We've added 260 non-merge commits during the last 36 day(s) which contain
      a total of 356 files changed, 21786 insertions(+), 11275 deletions(-).
      
      The main changes are:
      
      1) Rework BPF verifier log behavior and implement it as a rotating log
         by default with the option to retain old-style fixed log behavior,
         from Andrii Nakryiko.
      
      2) Adds support for using {FOU,GUE} encap with an ipip device operating
         in collect_md mode and add a set of BPF kfuncs for controlling encap
         params, from Christian Ehrig.
      
      3) Allow BPF programs to detect at load time whether a particular kfunc
         exists or not, and also add support for this in light skeleton,
         from Alexei Starovoitov.
      
      4) Optimize hashmap lookups when key size is multiple of 4,
         from Anton Protopopov.
      
      5) Enable RCU semantics for task BPF kptrs and allow referenced kptr
         tasks to be stored in BPF maps, from David Vernet.
      
      6) Add support for stashing local BPF kptr into a map value via
         bpf_kptr_xchg(). This is useful e.g. for rbtree node creation
         for new cgroups, from Dave Marchevsky.
      
      7) Fix BTF handling of is_int_ptr to skip modifiers to work around
         tracing issues where a program cannot be attached, from Feng Zhou.
      
      8) Migrate a big portion of test_verifier unit tests over to
         test_progs -a verifier_* via inline asm to ease {read,debug}ability,
         from Eduard Zingerman.
      
      9) Several updates to the instruction-set.rst documentation
         which is subject to future IETF standardization
         (https://lwn.net/Articles/926882/), from Dave Thaler.
      
      10) Fix BPF verifier in the __reg_bound_offset's 64->32 tnum sub-register
          known bits information propagation, from Daniel Borkmann.
      
      11) Add skb bitfield compaction work related to BPF with the overall goal
          to make more of the sk_buff bits optional, from Jakub Kicinski.
      
      12) BPF selftest cleanups for build id extraction which stand on its own
          from the upcoming integration work of build id into struct file object,
          from Jiri Olsa.
      
      13) Add fixes and optimizations for xsk descriptor validation and several
          selftest improvements for xsk sockets, from Kal Conley.
      
      14) Add BPF links for struct_ops and enable switching implementations
          of BPF TCP cong-ctls under a given name by replacing backing
          struct_ops map, from Kui-Feng Lee.
      
      15) Remove a misleading BPF verifier env->bypass_spec_v1 check on variable
          offset stack read as earlier Spectre checks cover this,
          from Luis Gerhorst.
      
      16) Fix issues in copy_from_user_nofault() for BPF and other tracers
          to resemble copy_from_user_nmi() from safety PoV, from Florian Lehner
          and Alexei Starovoitov.
      
      17) Add --json-summary option to test_progs in order for CI tooling to
          ease parsing of test results, from Manu Bretelle.
      
      18) Batch of improvements and refactoring to prep for upcoming
          bpf_local_storage conversion to bpf_mem_cache_{alloc,free} allocator,
          from Martin KaFai Lau.
      
      19) Improve bpftool's visual program dump which produces the control
          flow graph in a DOT format by adding C source inline annotations,
          from Quentin Monnet.
      
      20) Fix attaching fentry/fexit/fmod_ret/lsm to modules by extracting
          the module name from BTF of the target and searching kallsyms of
          the correct module, from Viktor Malik.
      
      21) Improve BPF verifier handling of '<const> <cond> <non_const>'
          to better detect whether in particular jmp32 branches are taken,
          from Yonghong Song.
      
      22) Allow BPF TCP cong-ctls to write app_limited of struct tcp_sock.
          A built-in cc or one from a kernel module is already able to write
          to app_limited, from Yixin Shen.
      
      Conflicts:
      
      Documentation/bpf/bpf_devel_QA.rst
        b7abcd9c ("bpf, doc: Link to submitting-patches.rst for general patch submission info")
        0f10f647 ("bpf, docs: Use internal linking for link to netdev subsystem doc")
      https://lore.kernel.org/all/20230307095812.236eb1be@canb.auug.org.au/
      
      include/net/ip_tunnels.h
        bc9d003d ("ip_tunnel: Preserve pointer const in ip_tunnel_info_opts")
        ac931d4c ("ipip,ip_tunnel,sit: Add FOU support for externally controlled ipip devices")
      https://lore.kernel.org/all/20230413161235.4093777-1-broonie@kernel.org/
      
      net/bpf/test_run.c
        e5995bc7 ("bpf, test_run: fix crashes due to XDP frame overwriting/corruption")
        294635a8 ("bpf, test_run: fix &xdp_frame misplacement for LIVE_FRAMES")
      https://lore.kernel.org/all/20230320102619.05b80a98@canb.auug.org.au/
      ====================
      
      Link: https://lore.kernel.org/r/20230413191525.7295-1-daniel@iogearbox.net
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      c2865b11
    • Jakub Kicinski's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net · 800e68c4
      Jakub Kicinski authored
      Conflicts:
      
      tools/testing/selftests/net/config
        62199e3f ("selftests: net: Add VXLAN MDB test")
        3a0385be
      
       ("selftests: add the missing CONFIG_IP_SCTP in net config")
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      800e68c4
    • Linus Torvalds's avatar
      Merge tag 'net-6.3-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net · 829cca4d
      Linus Torvalds authored
      Pull networking fixes from Jakub Kicinski:
       "Including fixes from bpf, and bluetooth.
      
        Not all that quiet given spring celebrations, but "current" fixes are
        thinning out, which is encouraging. One outstanding regression in the
        mlx5 driver when using old FW, not blocking but we're pushing for a
        fix.
      
        Current release - new code bugs:
      
         - eth: enetc: workaround for unresponsive pMAC after receiving
           express traffic
      
        Previous releases - regressions:
      
         - rtnetlink: restore RTM_NEW/DELLINK notification behavior, keep the
           pid/seq fields 0 for backward compatibility
      
        Previous releases - always broken:
      
         - sctp: fix a potential overflow in sctp_ifwdtsn_skip
      
         - mptcp:
            - use mptcp_schedule_work instead of open-coding it and make the
              worker check stricter, to avoid scheduling work on closed
              sockets
            - fix NULL pointer dereference on fastopen early fallback
      
         - skbuff: fix memory corruption due to a race between skb coalescing
           and releasing clones confusing page_pool reference counting
      
         - bonding: fix neighbor solicitation validation on backup slaves
      
         - bpf: tcp: use sock_gen_put instead of sock_put in bpf_iter_tcp
      
         - bpf: arm64: fixed a BTI error on returning to patched function
      
         - openvswitch: fix race on port output leading to inf loop
      
         - sfp: initialize sfp->i2c_block_size at sfp allocation to avoid
           returning a different errno than expected
      
         - phy: nxp-c45-tja11xx: unregister PTP, purge queues on remove
      
         - Bluetooth: fix printing errors if LE Connection times out
      
         - Bluetooth: assorted UaF, deadlock and data race fixes
      
         - eth: macb: fix memory corruption in extended buffer descriptor mode
      
        Misc:
      
         - adjust the XDP Rx flow hash API to also include the protocol layers
           over which the hash was computed"
      
      * tag 'net-6.3-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (50 commits)
        selftests/bpf: Adjust bpf_xdp_metadata_rx_hash for new arg
        mlx4: bpf_xdp_metadata_rx_hash add xdp rss hash type
        veth: bpf_xdp_metadata_rx_hash add xdp rss hash type
        mlx5: bpf_xdp_metadata_rx_hash add xdp rss hash type
        xdp: rss hash types representation
        selftests/bpf: xdp_hw_metadata remove bpf_printk and add counters
        skbuff: Fix a race between coalescing and releasing SKBs
        net: macb: fix a memory corruption in extended buffer descriptor mode
        selftests: add the missing CONFIG_IP_SCTP in net config
        udp6: fix potential access to stale information
        selftests: openvswitch: adjust datapath NL message declaration
        selftests: mptcp: userspace pm: uniform verify events
        mptcp: fix NULL pointer dereference on fastopen early fallback
        mptcp: stricter state check in mptcp_worker
        mptcp: use mptcp_schedule_work instead of open-coding it
        net: enetc: workaround for unresponsive pMAC after receiving express traffic
        sctp: fix a potential overflow in sctp_ifwdtsn_skip
        net: qrtr: Fix an uninit variable access bug in qrtr_tx_resume()
        rtnetlink: Restore RTM_NEW/DELLINK notification behavior
        net: ti/cpsw: Add explicit platform_device.h and of_platform.h includes
        ...
      829cca4d