1. 29 Nov, 2022 5 commits
    • Miquel Raynal's avatar
      dt-bindings: net: marvell,dfx-server: Convert to yaml · 63b956f9
      Miquel Raynal authored
      Even though this description is not used anywhere upstream (no matching
      driver), while on this file I decided I would try a conversion to yaml
      in order to clarify the prestera family description.
      
      I cannot keep the nodename dfx-server@xxxx so I switched to dfx-bus@xxxx
      which matches simple-bus.yaml. Otherwise I took the example context from
      the only user of this compatible: armada-xp-98dx3236.dtsi, which is a
      rather old and not perfect DT.
      Signed-off-by: default avatarMiquel Raynal <miquel.raynal@bootlin.com>
      Reviewed-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      63b956f9
    • Miquel Raynal's avatar
      Revert "dt-bindings: marvell,prestera: Add description for device-tree bindings" · 98eb05dc
      Miquel Raynal authored
      This reverts commit 40acc052.
      
      marvell,prestera.txt is an old file describing the old Alleycat3
      standalone switches. The commit mentioned above actually hacked these
      bindings to add support for a device tree property for a more modern
      version of the IP connected over PCI, using only the generic compatible
      in order to retrieve the device node from the prestera driver to read
      one static property.
      
      The problematic property discussed here is "base-mac-provider". The
      original intent was to point to a nvmem device which could produce the
      relevant nvmem-cell. This property has never been acked by DT
      maintainers and fails all the layering that has been brought with the nvmem
      bindings by pointing at a nvmem producer, bypassing the existing nvmem
      bindings, rather than a nvmem cell directly. Furthermore, the property
      cannot even be used upstream because it expected the ONIE tlv driver to
      produce a specific cell, driver which used nacked bindings and thus was
      never merged, replaced by a more integrated concept: the nvmem-layout.
      
      So let's forget about this temporary addition, safely avoiding the need
      for any backward compatibility handling. A new (yaml) binding file will
      be brought with the prestera bindings, and there we will actually
      include a description of the modern IP over PCI, including the right way
      to point to a nvmem cell.
      
      Cc: Vadym Kochan <vadym.kochan@plvision.eu>
      Cc: Taras Chornyi <tchornyi@marvell.com>
      Signed-off-by: default avatarMiquel Raynal <miquel.raynal@bootlin.com>
      Acked-by: default avatarRob Herring <robh@kernel.org>
      Acked-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      98eb05dc
    • Jakub Kicinski's avatar
      Daniel Borkmann says: · d6dc62fc
      Jakub Kicinski authored
      ====================
      bpf-next 2022-11-25
      
      We've added 101 non-merge commits during the last 11 day(s) which contain
      a total of 109 files changed, 8827 insertions(+), 1129 deletions(-).
      
      The main changes are:
      
      1) Support for user defined BPF objects: the use case is to allocate own
         objects, build own object hierarchies and use the building blocks to
         build own data structures flexibly, for example, linked lists in BPF,
         from Kumar Kartikeya Dwivedi.
      
      2) Add bpf_rcu_read_{,un}lock() support for sleepable programs,
         from Yonghong Song.
      
      3) Add support storing struct task_struct objects as kptrs in maps,
         from David Vernet.
      
      4) Batch of BPF map documentation improvements, from Maryam Tahhan
         and Donald Hunter.
      
      5) Improve BPF verifier to propagate nullness information for branches
         of register to register comparisons, from Eduard Zingerman.
      
      6) Fix cgroup BPF iter infra to hold reference on the start cgroup,
         from Hou Tao.
      
      7) Fix BPF verifier to not mark fentry/fexit program arguments as trusted
         given it is not the case for them, from Alexei Starovoitov.
      
      8) Improve BPF verifier's realloc handling to better play along with dynamic
         runtime analysis tools like KASAN and friends, from Kees Cook.
      
      9) Remove legacy libbpf mode support from bpftool,
         from Sahid Orentino Ferdjaoui.
      
      10) Rework zero-len skb redirection checks to avoid potentially breaking
          existing BPF test infra users, from Stanislav Fomichev.
      
      11) Two small refactorings which are independent and have been split out
          of the XDP queueing RFC series, from Toke Høiland-Jørgensen.
      
      12) Fix a memory leak in LSM cgroup BPF selftest, from Wang Yufen.
      
      13) Documentation on how to run BPF CI without patch submission,
          from Daniel Müller.
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      ====================
      
      Link: https://lore.kernel.org/r/20221125012450.441-1-daniel@iogearbox.netSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      d6dc62fc
    • Vladimir Oltean's avatar
      Revert "net: stmmac: use sysfs_streq() instead of strncmp()" · 469d258d
      Vladimir Oltean authored
      This reverts commit f72cd76b.
      This patch is so broken, it hurts. Apparently no one reviewed it and it
      passed the build testing (because the code was compiled out), but it was
      obviously never compile-tested, since it produces the following build
      error, due to an incomplete conversion where an extra argument was left,
      although the function being called was left:
      
      stmmac_main.c: In function ‘stmmac_cmdline_opt’:
      stmmac_main.c:7586:28: error: too many arguments to function ‘sysfs_streq’
       7586 |                 } else if (sysfs_streq(opt, "pause:", 6)) {
            |                            ^~~~~~~~~~~
      In file included from ../include/linux/bitmap.h:11,
                       from ../include/linux/cpumask.h:12,
                       from ../include/linux/smp.h:13,
                       from ../include/linux/lockdep.h:14,
                       from ../include/linux/mutex.h:17,
                       from ../include/linux/notifier.h:14,
                       from ../include/linux/clk.h:14,
                       from ../drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:17:
      ../include/linux/string.h:185:13: note: declared here
        185 | extern bool sysfs_streq(const char *s1, const char *s2);
            |             ^~~~~~~~~~~
      
      What's even worse is that the patch is flat out wrong. The stmmac_cmdline_opt()
      function does not parse sysfs input, but cmdline input such as
      "stmmaceth=tc:1,pause:1". The pattern of using strsep() followed by
      strncmp() for such strings is not unique to stmmac, it can also be found
      mainly in drivers under drivers/video/fbdev/.
      
      With strncmp("tc:", 3), the code matches on the "tc:1" token properly.
      With sysfs_streq("tc:"), it doesn't.
      
      Fixes: f72cd76b ("net: stmmac: use sysfs_streq() instead of strncmp()")
      Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
      Acked-by: default avatarMaciej Fijalkowski <maciej.fijalkowski@intel.com>
      Link: https://lore.kernel.org/r/20221125105304.3012153-1-vladimir.oltean@nxp.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      469d258d
    • Davide Tronchin's avatar
      net: usb: cdc_ether: add u-blox 0x1343 composition · 2816c986
      Davide Tronchin authored
      Add CDC-ECM support for LARA-L6.
      
      LARA-L6 module can be configured (by AT interface) in three different
      USB modes:
      * Default mode (Vendor ID: 0x1546 Product ID: 0x1341) with 4 serial
      interfaces
      * RmNet mode (Vendor ID: 0x1546 Product ID: 0x1342) with 4 serial
      interfaces and 1 RmNet virtual network interface
      * CDC-ECM mode (Vendor ID: 0x1546 Product ID: 0x1343) with 4 serial
      interface and 1 CDC-ECM virtual network interface
      
      In CDC-ECM mode LARA-L6 exposes the following interfaces:
      If 0: Diagnostic
      If 1: AT parser
      If 2: AT parser
      If 3: AT parset/alternative functions
      If 4: CDC-ECM interface
      Signed-off-by: default avatarDavide Tronchin <davide.tronchin.94@gmail.com>
      Link: https://lore.kernel.org/r/20221124112811.3548-1-davide.tronchin.94@gmail.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      2816c986
  2. 28 Nov, 2022 2 commits
  3. 25 Nov, 2022 26 commits
    • David S. Miller's avatar
      Merge branch '100GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/next-queue · a6e3d86e
      David S. Miller authored
      Tony Nguyen says:
      
      ====================
      Intel Wired LAN Driver Updates 2022-11-23 (ice)
      
      This series contains updates to ice driver only.
      
      Karol adjusts check of PTP hardware to wait longer but check more often.
      
      Brett removes use of driver defined link speed; instead using the values
      from ethtool.h, utilizing static tables for indexing.
      
      Ben adds tracking of stats in order to accumulate reported statistics that
      were previously reset by hardware.
      
      Marcin fixes issues setting RXDID when queues are asymmetric.
      
      Anatolii re-introduces use of define over magic number; ICE_RLAN_BASE_S.
      ---
      v3:
       - Dropped, previous, patch 2
      v2:
      Patch 5
       - Convert some allocations to non-managed
       - Remove combined error checking; add error checks for each call
       - Remove excess NULL checks
       - Remove unnecessary NULL sets and newlines
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a6e3d86e
    • David S. Miller's avatar
      Merge branch 'net-remove-kmap_atomic' · bed6e865
      David S. Miller authored
      Anirudh Venkataramanan says:
      
      ====================
      net: Remove uses of kmap_atomic()
      
      kmap_atomic() is being deprecated. This little series replaces the last
      few uses of kmap_atomic() in the networking subsystem.
      
      This series triggered a suggestion [1] that perhaps the Sun Cassini,
      LDOM Virtual Switch Driver and the LDOM virtual network drivers should be
      removed completely. I plan to do this in a follow up patchset. For
      completeness, this series still includes kmap_atomic() conversions that
      apply to the above referenced drivers. If for some reason we choose to not
      remove these drivers, at least they won't be using kmap_atomic() anymore.
      
      Also, the following maintainer entries for the Chelsio driver seem to be
      defunct:
      
        Vinay Kumar Yadav <vinay.yadav@chelsio.com>
        Rohit Maheshwari <rohitm@chelsio.com>
      
      I can submit a follow up patch to remove these entries, but thought
      maybe the folks over at Chelsio would want to look into this first.
      
      Changes v1 -> v2:
        Use memcpy_from_page() in patches 2/6 and 4/6
        Add new patch for the thunderbolt driver
        Update commit messages and cover letter
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bed6e865
    • Anirudh Venkataramanan's avatar
      net: thunderbolt: Use kmap_local_page() instead of kmap_atomic() · c3a8d375
      Anirudh Venkataramanan authored
      kmap_atomic() is being deprecated in favor of kmap_local_page(). Replace
      kmap_atomic() and kunmap_atomic() with kmap_local_page() and kunmap_local()
      respectively.
      
      Note that kmap_atomic() disables preemption and page-fault processing, but
      kmap_local_page() doesn't. When converting uses of kmap_atomic(), one has
      to check if the code being executed between the map/unmap implicitly
      depends on page-faults and/or preemption being disabled. If yes, then code
      to disable page-faults and/or preemption should also be added for
      functional correctness. That however doesn't appear to be the case here,
      so just kmap_local_page() is used.
      
      Also note that the page being mapped is not allocated by the driver, and so
      the driver doesn't know if the page is in normal memory. This is the reason
      kmap_local_page() is used as opposed to page_address().
      
      I don't have hardware, so this change has only been compile tested.
      
      Cc: Michael Jamet <michael.jamet@intel.com>
      Cc: Mika Westerberg <mika.westerberg@linux.intel.com>
      Cc: Yehezkel Bernat <YehezkelShB@gmail.com>
      Cc: Ira Weiny <ira.weiny@intel.com>
      Cc: Fabio M. De Francesco <fmdefrancesco@gmail.com>
      Signed-off-by: default avatarAnirudh Venkataramanan <anirudh.venkataramanan@intel.com>
      Acked-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c3a8d375
    • Anirudh Venkataramanan's avatar
      sunvnet: Use kmap_local_page() instead of kmap_atomic() · 350d3513
      Anirudh Venkataramanan authored
      kmap_atomic() is being deprecated in favor of kmap_local_page(). Replace
      kmap_atomic() and kunmap_atomic() with kmap_local_page() and kunmap_local()
      respectively.
      
      Note that kmap_atomic() disables preemption and page-fault processing, but
      kmap_local_page() doesn't. When converting uses of kmap_atomic(), one has
      to check if the code being executed between the map/unmap implicitly
      depends on page-faults and/or preemption being disabled. If yes, then code
      to disable page-faults and/or preemption should also be added for
      functional correctness. That however doesn't appear to be the case here,
      so just kmap_local_page() is used.
      
      Also note that the page being mapped is not allocated by the driver, and so
      the driver doesn't know if the page is in normal memory. This is the reason
      kmap_local_page() is used as opposed to page_address().
      
      I don't have hardware, so this change has only been compile tested.
      
      Cc: Ira Weiny <ira.weiny@intel.com>
      Cc: Fabio M. De Francesco <fmdefrancesco@gmail.com>
      Signed-off-by: default avatarAnirudh Venkataramanan <anirudh.venkataramanan@intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      350d3513
    • Anirudh Venkataramanan's avatar
      cassini: Use memcpy_from_page() instead of k[un]map_atomic() · e3128591
      Anirudh Venkataramanan authored
      kmap_atomic() is being deprecated in favor of kmap_local_page(). Replace
      the map-memcpy-unmap usage pattern (done using k[un]map_atomic()) with
      memcpy_from_page(), which internally uses kmap_local_page() and
      kunmap_local(). This renders the variable 'vaddr' unnecessary, and so
      remove this too.
      
      Note that kmap_atomic() disables preemption and page-fault processing, but
      kmap_local_page() doesn't. When converting uses of kmap_atomic(), one has
      to check if the code being executed between the map/unmap implicitly
      depends on page-faults and/or preemption being disabled. If yes, then code
      to disable page-faults and/or preemption should also be added for
      functional correctness. That however doesn't appear to be the case here,
      so just memcpy_from_page() is used.
      
      Also note that the page being mapped is not allocated by the driver, and so
      the driver doesn't know if the page is in normal memory. This is the reason
      kmap_local_page() is used (via memcpy_from_page()) as opposed to
      page_address().
      
      I don't have hardware, so this change has only been compile tested.
      
      Cc: Ira Weiny <ira.weiny@intel.com>
      Cc: Fabio M. De Francesco <fmdefrancesco@gmail.com>
      Suggested-by: default avatarFabio M. De Francesco <fmdefrancesco@gmail.com>
      Signed-off-by: default avatarAnirudh Venkataramanan <anirudh.venkataramanan@intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e3128591
    • Anirudh Venkataramanan's avatar
      cassini: Use page_address() instead of kmap_atomic() · c1914458
      Anirudh Venkataramanan authored
      Pages for Rx buffers are allocated in cas_page_alloc() using either
      GFP_ATOMIC or GFP_KERNEL. Memory allocated with GFP_KERNEL/GFP_ATOMIC can't
      come from highmem and so there's no need to kmap() them. Just use
      page_address() instead. This makes the variable 'addr' unnecessary, so
      remove it too.
      
      Note that kmap_atomic() disables preemption and page-fault processing,
      but page_address() doesn't. When removing uses of kmap_atomic(), one has to
      check if the code being executed between the map/unmap implicitly depends
      on page-faults and/or preemption being disabled. If yes, then code to
      disable page-faults and/or preemption should also be added for functional
      correctness. That however doesn't appear to be the case here, so just
      page_address() is used.
      
      I don't have hardware, so this change has only been compile tested.
      
      Cc: Ira Weiny <ira.weiny@intel.com>
      Cc: Fabio M. De Francesco <fmdefrancesco@gmail.com>
      Signed-off-by: default avatarAnirudh Venkataramanan <anirudh.venkataramanan@intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c1914458
    • Anirudh Venkataramanan's avatar
      sfc: Use kmap_local_page() instead of kmap_atomic() · f61e6d3c
      Anirudh Venkataramanan authored
      kmap_atomic() is being deprecated in favor of kmap_local_page(). Replace
      kmap_atomic() and kunmap_atomic() with kmap_local_page() and kunmap_local()
      respectively.
      
      Note that kmap_atomic() disables preemption and page-fault processing, but
      kmap_local_page() doesn't. When converting uses of kmap_atomic(), one has
      to check if the code being executed between the map/unmap implicitly
      depends on page-faults and/or preemption being disabled. If yes, then code
      to disable page-faults and/or preemption should also be added for
      functional correctness. That however doesn't appear to be the case here,
      so just kmap_local_page() is used.
      
      Also note that the page being mapped is not allocated by the driver, and so
      the driver doesn't know if the page is in normal memory. This is the reason
      kmap_local_page() is used as opposed to page_address().
      
      I don't have hardware, so this change has only been compile tested.
      
      Cc: Ira Weiny <ira.weiny@intel.com>
      Cc: Fabio M. De Francesco <fmdefrancesco@gmail.com>
      Cc: Edward Cree <ecree.xilinx@gmail.com>
      Cc: Martin Habets <habetsm.xilinx@gmail.com>
      Signed-off-by: default avatarAnirudh Venkataramanan <anirudh.venkataramanan@intel.com>
      Acked-by: default avatarMartin Habets <habetsm.xilinx@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f61e6d3c
    • Anirudh Venkataramanan's avatar
      ch_ktls: Use memcpy_from_page() instead of k[un]map_atomic() · 51337ef0
      Anirudh Venkataramanan authored
      kmap_atomic() is being deprecated in favor of kmap_local_page(). Replace
      the map-memcpy-unmap usage pattern (done using k[un]map_atomic()) with
      memcpy_from_page(), which internally uses kmap_local_page() and
      kunmap_local(). This renders the variables 'data' and 'vaddr' unnecessary,
      and so remove these too.
      
      Note that kmap_atomic() disables preemption and page-fault processing, but
      kmap_local_page() doesn't. When converting uses of kmap_atomic(), one has
      to check if the code being executed between the map/unmap implicitly
      depends on page-faults and/or preemption being disabled. If yes, then code
      to disable page-faults and/or preemption should also be added for
      functional correctness. That however doesn't appear to be the case here,
      so just memcpy_from_page() is used.
      
      Also note that the page being mapped is not allocated by the driver, and so
      the driver doesn't know if the page is in normal memory. This is the reason
      kmap_local_page() is used (via memcpy_from_page()) as opposed to
      page_address().
      
      I don't have hardware, so this change has only been compile tested.
      
      Cc: Ayush Sawal <ayush.sawal@chelsio.com>
      Cc: Ira Weiny <ira.weiny@intel.com>
      Cc: Fabio M. De Francesco <fmdefrancesco@gmail.com>
      Suggested-by: default avatarFabio M. De Francesco <fmdefrancesco@gmail.com>
      Signed-off-by: default avatarAnirudh Venkataramanan <anirudh.venkataramanan@intel.com>
      Acked-by: default avatarAyush Sawal <ayush.sawal@chelsio.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      51337ef0
    • David S. Miller's avatar
      Merge branch 'lan966x-extend-xdp-support' · 8781994a
      David S. Miller authored
      Horatiu Vultur says:
      
      ====================
      net: lan966x: Extend xdp support
      
      Extend the current support of XDP in lan966x with the action XDP_TX and
      XDP_REDIRECT.
      The first patches just prepare the things such that it would be easier
      to add XDP_TX and XDP_REDIRECT actions. Like adding XDP_PACKET_HEADROOM,
      introduce helper functions, use the correct dma_dir for the page pool
      The last 2 patches introduce the XDP actions XDP_TX and XDP_REDIRECT.
      
      v4->v5:
      - add iterator declaration inside for loops
      - move the scope of port inside the function lan966x_fdma_rx_alloc_page_pool
      - create union for skb and xdpf inside struct lan966x_tx_dcb_buf
      
      v3->v4:
      - use napi_consume_skb instead of dev_kfree_skb_any
      - arrange members in struct lan966x_tx_dcb_buf not to have holes
      - fix when xdp program is added the check for determining if page pool
        needs to be recreated was wrong
      - change type for len in lan966x_tx_dcb_buf to u32
      
      v2->v3:
      - make sure to update rxq memory model
      - update the page pool direction if there is any xdp program
      - in case of action XDP_TX give back to reuse the page
      - in case of action XDP_REDIRECT, remap the frame and make sure to
        unmap it when is transmitted.
      
      v1->v2:
      - use skb_reserve of using skb_put and skb_pull
      - make sure that data_len doesn't include XDP_PACKET_HEADROOM
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8781994a
    • Horatiu Vultur's avatar
      net: lan966x: Add support for XDP_REDIRECT · a825b611
      Horatiu Vultur authored
      Extend lan966x XDP support with the action XDP_REDIRECT. This is similar
      with the XDP_TX, so a lot of functionality can be reused.
      Signed-off-by: default avatarHoratiu Vultur <horatiu.vultur@microchip.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a825b611
    • Horatiu Vultur's avatar
      net: lan966x: Add support for XDP_TX · 19c6f534
      Horatiu Vultur authored
      Extend lan966x XDP support with the action XDP_TX. In this case when the
      received buffer needs to execute XDP_TX, the buffer will be moved to the
      TX buffers. So a new RX buffer will be allocated.
      When the TX finish with the frame, it would give back the buffer to the
      page pool.
      Signed-off-by: default avatarHoratiu Vultur <horatiu.vultur@microchip.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      19c6f534
    • Horatiu Vultur's avatar
      net: lan966x: Update dma_dir of page_pool_params · 560c7223
      Horatiu Vultur authored
      To add support for XDP_TX it is required to be able to write to the DMA
      area therefore it is required that the pages will be mapped using
      DMA_BIDIRECTIONAL flag.
      Therefore check if there are any xdp programs on the interfaces and in
      that case set DMA_BIDRECTIONAL otherwise use DMA_FROM_DEVICE.
      Therefore when a new XDP program is added it is required to redo the
      page_pool.
      Signed-off-by: default avatarHoratiu Vultur <horatiu.vultur@microchip.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      560c7223
    • Horatiu Vultur's avatar
      net: lan966x: Update rxq memory model · 77ddda44
      Horatiu Vultur authored
      By default the rxq memory model is MEM_TYPE_PAGE_SHARED but to be able
      to reuse pages on the TX side, when the XDP action XDP_TX it is required
      to update the memory model to PAGE_POOL.
      Signed-off-by: default avatarHoratiu Vultur <horatiu.vultur@microchip.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      77ddda44
    • Horatiu Vultur's avatar
      net: lan966x: Add len field to lan966x_tx_dcb_buf · 49f5eea8
      Horatiu Vultur authored
      Currently when a frame was transmitted, it is required to unamp the
      frame that was transmitted. The length of the frame was taken from the
      transmitted skb. In the future we might not have an skb, therefore store
      the length skb directly in the lan966x_tx_dcb_buf and use this one to
      unamp the frame.
      While at this, also arrange the members in lan966x_tx_dcb_buf not to
      have any holes.
      Signed-off-by: default avatarHoratiu Vultur <horatiu.vultur@microchip.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      49f5eea8
    • Horatiu Vultur's avatar
      net: lan966x: Introduce helper functions · 3d66bc57
      Horatiu Vultur authored
      Introduce lan966x_fdma_tx_setup_dcb and lan966x_fdma_tx_start functions
      and use of them inside lan966x_fdma_xmit. There is no functional change
      in here.
      They are introduced to be used when XDP_TX/REDIRECT actions are
      introduced.
      Signed-off-by: default avatarHoratiu Vultur <horatiu.vultur@microchip.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3d66bc57
    • Horatiu Vultur's avatar
      net: lan966x: Add XDP_PACKET_HEADROOM · 7292bb06
      Horatiu Vultur authored
      Update the page_pool params to allocate XDP_PACKET_HEADROOM space as
      headroom for all received frames.
      This is needed for when the XDP_TX and XDP_REDIRECT are implemented.
      Signed-off-by: default avatarHoratiu Vultur <horatiu.vultur@microchip.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7292bb06
    • Min Li's avatar
      ptp: idt82p33: remove PEROUT_ENABLE_OUTPUT_MASK · 46da4aa2
      Min Li authored
      PEROUT_ENABLE_OUTPUT_MASK was there to allow us to enable/disable
      all the perout pins. But it is not standard procedure, we will
      have to discard it.
      Signed-off-by: default avatarMin Li <min.li.xe@renesas.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      46da4aa2
    • Min Li's avatar
      ptp: idt82p33: Add PTP_CLK_REQ_EXTTS support · ad3cc776
      Min Li authored
      82P33 family of chips can trigger TOD read/write by external
      signal from one of the IN12/13/14 pins, which are set user
      space programs by calling PTP_PIN_SETFUNC through ptp_ioctl
      Signed-off-by: default avatarMin Li <min.li.xe@renesas.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ad3cc776
    • David S. Miller's avatar
      Merge branch 'sparx5-tc-protocol-all' · eea7b313
      David S. Miller authored
      Steen Hegelund says:
      
      ====================
      net: TC protocol all support in Sparx5 IS2 VCAP
      
      This provides support for the TC flower filters 'protocol all' clause in
      the Sparx5 IS2 VCAP.
      
      It builds on top of the initial IS2 VCAP support found in these series:
      
      https://lore.kernel.org/all/20221020130904.1215072-1-steen.hegelund@microchip.com/
      https://lore.kernel.org/all/20221109114116.3612477-1-steen.hegelund@microchip.com/
      https://lore.kernel.org/all/20221111130519.1459549-1-steen.hegelund@microchip.com/
      https://lore.kernel.org/all/20221117213114.699375-1-steen.hegelund@microchip.com/
      
      Functionality:
      ==============
      
      As the configuration for the Sparx5 IS2 VCAP consists of one (or more)
      keyset(s) for each lookup/port per traffic classification, it is not
      always possible to cover all protocols with just one ordinary VCAP rule.
      
      To improve this situation the driver will try to find out what keysets a
      rule will need to cover a TC flower "protocol all" filter and then compare
      this set of keysets to what the hardware is currently configured for.
      
      In case multiple keysets are needed then the driver can create a rule per
      rule size (e.g. X6 and X12) and use a mask on the keyset type field to
      allow the VCAP to match more than one keyset with just one rule.
      
      This is possible because the keysets that have the same size typically has
      many keys in common, so the VCAP rule keys can make a common match.
      
      The result is that one TC filter command may create multiple IS2 VCAP rules
      of different sizes that have a type field with a masked type id.
      
      Delivery:
      =========
      
      This is current plan for delivering the full VCAP feature set of Sparx5:
      
      - Sparx5 IS0 VCAP support
      - TC policer and drop action support (depends on the Sparx5 QoS support
        upstreamed separately)
      - Sparx5 ES0 VCAP support
      - TC flower template support
      - TC matchall filter support for mirroring and policing ports
      - TC flower filter mirror action support
      - Sparx5 ES2 VCAP support
      
      Version History:
      ================
      v2      Fixed a NULL return value compiler warning.
              Moved the new vcap_find_actionfield function a bit up in the file.
      
      v1      Initial version
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      eea7b313
    • Steen Hegelund's avatar
      net: microchip: sparx5: Add VCAP filter keys KUNIT test · 22f3c325
      Steen Hegelund authored
      This tests the filtering of keys, either dropping unsupported keys or
      dropping keys specified in a list.
      Signed-off-by: default avatarSteen Hegelund <steen.hegelund@microchip.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      22f3c325
    • Steen Hegelund's avatar
      net: microchip: sparx5: Support for displaying a list of keysets · 14b639ca
      Steen Hegelund authored
      This will display a list of keyset in case the type_id field in the VCAP
      rule has been wildcarded.
      Signed-off-by: default avatarSteen Hegelund <steen.hegelund@microchip.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      14b639ca
    • Steen Hegelund's avatar
      net: microchip: sparx5: Support for TC protocol all · 0ca60948
      Steen Hegelund authored
      This allows support of TC protocol all for the Sparx5 IS2 VCAP.
      
      This is done by creating multiple rules that covers the rule size and
      traffic types in the IS2.
      Each rule size (e.g X16 and X6) may have multiple keysets and if there are
      more than one the type field in the VCAP rule will be wildcarded to support
      these keysets.
      Signed-off-by: default avatarSteen Hegelund <steen.hegelund@microchip.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0ca60948
    • Steen Hegelund's avatar
      net: microchip: sparx5: Support for copying and modifying rules in the API · 465a38a2
      Steen Hegelund authored
      This adds support for making a copy of a rule and modify keys and actions
      to differentiate the copy.
      Signed-off-by: default avatarSteen Hegelund <steen.hegelund@microchip.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      465a38a2
    • Jiapeng Chong's avatar
      lib/test_rhashtable: Remove set but unused variable 'insert_retries' · b084f6cc
      Jiapeng Chong authored
      Variable 'insert_retries' is not effectively used in the function, so
      delete it.
      
      lib/test_rhashtable.c:437:18: warning: variable 'insert_retries' set but not used.
      
      Link: https://bugzilla.openanolis.cn/show_bug.cgi?id=3242Reported-by: default avatarAbaci Robot <abaci@linux.alibaba.com>
      Signed-off-by: default avatarJiapeng Chong <jiapeng.chong@linux.alibaba.com>
      Acked-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b084f6cc
    • Xu Panda's avatar
      net: stmmac: use sysfs_streq() instead of strncmp() · f72cd76b
      Xu Panda authored
      Replace the open-code with sysfs_streq().
      Signed-off-by: default avatarXu Panda <xu.panda@zte.com.cn>
      Signed-off-by: default avatarYang Yang <yang.yang29@zte.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f72cd76b
    • Frank's avatar
      net: phy: add Motorcomm YT8531S phy id. · 813abcd9
      Frank authored
      We added patch for motorcomm.c to support YT8531S. This patch has
      been tested on AM335x platform which has one YT8531S interface
      card and passed all test cases.
      The tested cases indluding: YT8531S UTP function with support of
      10M/100M/1000M; YT8531S Fiber function with support of 100M/1000M;
      and YT8531S Combo function that supports auto detection of media type.
      
      Since most functions of YT8531S are similar to YT8521 and we reuse some
      codes for YT8521 in the patch file.
      Signed-off-by: default avatarFrank <Frank.Sae@motor-comm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      813abcd9
  4. 24 Nov, 2022 7 commits
    • Maryam Tahhan's avatar
      docs/bpf: Add BPF_MAP_TYPE_XSKMAP documentation · 2b3e8f6f
      Maryam Tahhan authored
      Add documentation for BPF_MAP_TYPE_XSKMAP including kernel version introduced,
      usage and examples.
      Signed-off-by: default avatarMaryam Tahhan <mtahhan@redhat.com>
      Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
      Link: https://lore.kernel.org/bpf/20221123090043.83945-1-mtahhan@redhat.com
      2b3e8f6f
    • Rong Tao's avatar
      samples/bpf: Fix wrong allocation size in xdp_router_ipv4_user · 19a2bdba
      Rong Tao authored
      prefix_key->data allocates three bytes using alloca(), but four bytes are
      actually accessed in the program.
      Signed-off-by: default avatarRong Tao <rongtao@cestc.cn>
      Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
      Link: https://lore.kernel.org/bpf/tencent_F9E2E81922B0C181D05B96DAE5AB0ACE6B06@qq.com
      19a2bdba
    • Rong Tao's avatar
      docs/bpf: Update btf selftests program and add link · b74344cb
      Rong Tao authored
      Commit c64779e2("selftests/bpf: Merge most of test_btf into test_progs")
      renamed the BTF selftest from 'test_btf.c' to 'prog_tests/btf.c'.
      Signed-off-by: default avatarRong Tao <rongtao@cestc.cn>
      Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
      Acked-by: default avatarDavid Vernet <void@manifault.com>
      Link: https://lore.kernel.org/bpf/tencent_1FA6904156E8E599CAE4ABDBE80F22830106@qq.com
      b74344cb
    • Alexei Starovoitov's avatar
      bpf: Don't mark arguments to fentry/fexit programs as trusted. · c6b0337f
      Alexei Starovoitov authored
      The PTR_TRUSTED flag should only be applied to pointers where the verifier can
      guarantee that such pointers are valid.
      The fentry/fexit/fmod_ret programs are not in this category.
      Only arguments of SEC("tp_btf") and SEC("iter") programs are trusted
      (which have BPF_TRACE_RAW_TP and BPF_TRACE_ITER attach_type correspondingly)
      
      This bug was masked because convert_ctx_accesses() was converting trusted
      loads into BPF_PROBE_MEM loads. Fix it as well.
      The loads from trusted pointers don't need exception handling.
      
      Fixes: 3f00c523 ("bpf: Allow trusted pointers to be passed to KF_TRUSTED_ARGS kfuncs")
      Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
      Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
      Link: https://lore.kernel.org/bpf/20221124215314.55890-1-alexei.starovoitov@gmail.com
      c6b0337f
    • Alexei Starovoitov's avatar
      Merge branch 'bpf: Add bpf_rcu_read_lock() support' · 6099754a
      Alexei Starovoitov authored
      Yonghong Song says:
      
      ====================
      
      Currently, without rcu attribute info in BTF, the verifier treats
      rcu tagged pointer as a normal pointer. This might be a problem
      for sleepable program where rcu_read_lock()/unlock() is not available.
      For example, for a sleepable fentry program, if rcu protected memory
      access is interleaved with a sleepable helper/kfunc, it is possible
      the memory access after the sleepable helper/kfunc might be invalid
      since the object might have been freed then. Even without
      a sleepable helper/kfunc, without rcu_read_lock() protection,
      it is possible that the rcu protected object might be release
      in the middle of bpf program execution which may cause incorrect
      result.
      
      To prevent above cases, enable btf_type_tag("rcu") attributes,
      introduce new bpf_rcu_read_lock/unlock() kfuncs and add verifier support.
      
      In the rest of patch set, Patch 1 enabled btf_type_tag for __rcu
      attribute. Patche 2 added might_sleep in bpf_func_proto. Patch 3 added new
      bpf_rcu_read_lock/unlock() kfuncs and verifier support.
      Patch 4 added some tests for these two new kfuncs.
      
      Changelogs:
        v9 -> v10:
          . if no rcu tag support in vmlinux btf, using bpf_rcu_read_lock/unlock()
            will cause verification error.
          . at bpf_rcu_read_unlock(), invalidate rcu ptr to PTR_UNTRUSTED
            instead of SCALAR_VALUE.
          . a few other comment changes and other minor changes.
        v8 -> v9:
          . remove sleepable prog check for ld_abs/ind checking in rcu read
            lock region.
          . fix a test failure with gcc-compiled kernel.
          . a couple of other minor fixes.
        v7 -> v8:
          . add might_sleep in bpf_func_proto so we can easily identify whether
            a helper is sleepable or not.
          . do not enforce rcu rules for sleepable, e.g., rcu dereference must
            be in a bpf_rcu_read_lock region. This is to keep old code working
            fine.
          . Mark 'b' in 'b = a->b' (b is tagged with __rcu) as MEM_RCU only if
            'b = a->b' in rcu read region and 'a' is trusted. This adds safety
            guarantee for 'b' inside the rcu read region.
        v6 -> v7:
          . rebase on top of bpf-next.
          . remove the patch which enables sleepable program using
            cgrp_local_storage map. This is orthogonal to this patch set
            and will be addressed separately.
          . mark the rcu pointer dereference result as UNTRUSTED if inside
            a bpf_rcu_read_lock() region.
        v5 -> v6:
          . fix selftest prog miss_unlock which tested nested locking.
          . add comments in selftest prog cgrp_succ to explain how to handle
            nested memory access after rcu memory load.
        v4 -> v5:
          . add new test to aarch64 deny list.
        v3 -> v4:
          . fix selftest failures when built with gcc. gcc doesn't support
            btf_type_tag yet and some tests relies on that. skip these
            tests if vmlinux BTF does not have btf_type_tag("rcu").
        v2 -> v3:
          . went back to MEM_RCU approach with invalidate rcu ptr registers
            at bpf_rcu_read_unlock() place.
          . remove KF_RCU_LOCK/UNLOCK flag and compare btf_id at verification
            time instead.
        v1 -> v2:
          . use kfunc instead of helper for bpf_rcu_read_lock/unlock.
          . not use MEM_RCU bpf_type_flag, instead use active_rcu_lock
            in reg state to identify rcu ptr's.
          . Add more self tests.
          . add new test to s390x deny list.
      ====================
      Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
      6099754a
    • Yonghong Song's avatar
      selftests/bpf: Add tests for bpf_rcu_read_lock() · 48671232
      Yonghong Song authored
      Add a few positive/negative tests to test bpf_rcu_read_lock()
      and its corresponding verifier support. The new test will fail
      on s390x and aarch64, so an entry is added to each of their
      respective deny lists.
      Acked-by: default avatarMartin KaFai Lau <martin.lau@kernel.org>
      Signed-off-by: default avatarYonghong Song <yhs@fb.com>
      Link: https://lore.kernel.org/r/20221124053222.2374650-1-yhs@fb.comSigned-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
      48671232
    • Yonghong Song's avatar
      bpf: Add kfunc bpf_rcu_read_lock/unlock() · 9bb00b28
      Yonghong Song authored
      Add two kfunc's bpf_rcu_read_lock() and bpf_rcu_read_unlock(). These two kfunc's
      can be used for all program types. The following is an example about how
      rcu pointer are used w.r.t. bpf_rcu_read_lock()/bpf_rcu_read_unlock().
      
        struct task_struct {
          ...
          struct task_struct              *last_wakee;
          struct task_struct __rcu        *real_parent;
          ...
        };
      
      Let us say prog does 'task = bpf_get_current_task_btf()' to get a
      'task' pointer. The basic rules are:
        - 'real_parent = task->real_parent' should be inside bpf_rcu_read_lock
          region. This is to simulate rcu_dereference() operation. The
          'real_parent' is marked as MEM_RCU only if (1). task->real_parent is
          inside bpf_rcu_read_lock region, and (2). task is a trusted ptr. So
          MEM_RCU marked ptr can be 'trusted' inside the bpf_rcu_read_lock region.
        - 'last_wakee = real_parent->last_wakee' should be inside bpf_rcu_read_lock
          region since it tries to access rcu protected memory.
        - the ptr 'last_wakee' will be marked as PTR_UNTRUSTED since in general
          it is not clear whether the object pointed by 'last_wakee' is valid or
          not even inside bpf_rcu_read_lock region.
      
      The verifier will reset all rcu pointer register states to untrusted
      at bpf_rcu_read_unlock() kfunc call site, so any such rcu pointer
      won't be trusted any more outside the bpf_rcu_read_lock() region.
      
      The current implementation does not support nested rcu read lock
      region in the prog.
      Acked-by: default avatarMartin KaFai Lau <martin.lau@kernel.org>
      Signed-off-by: default avatarYonghong Song <yhs@fb.com>
      Link: https://lore.kernel.org/r/20221124053217.2373910-1-yhs@fb.comSigned-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
      9bb00b28