The Linux Kernel Mailing List
 help / color / mirror / Atom feed
  • [parent not found: <c0469642f42ada85d91a8a685eb7c0e04cb99131.1777064117.git.lukasz@raczylo.com>]
  • * Re: [RFC PATCH net-next 0/3] net: macb: candidate fixes for silent TX stall on BCM2712/RP1
           [not found] <cover.1777064117.git.lukasz@raczylo.com>
           [not found] ` <3106d546d494f2f52ec832e7f7d04f534286e254.1777064117.git.lukasz@raczylo.com>
           [not found] ` <c0469642f42ada85d91a8a685eb7c0e04cb99131.1777064117.git.lukasz@raczylo.com>
    @ 2026-05-14 10:31 ` Théo Lebrun
      2026-05-14 21:51 ` Lukasz Raczylo
      2026-05-14 21:54 ` [PATCH net-next v2 " Lukasz Raczylo
      4 siblings, 0 replies; 8+ messages in thread
    From: Théo Lebrun @ 2026-05-14 10:31 UTC (permalink / raw)
      To: Lukasz Raczylo, netdev
      Cc: Nicolas Ferre, Claudiu Beznea, Andrew Lunn, David S . Miller,
    	Eric Dumazet, Jakub Kicinski, Paolo Abeni, linux-kernel,
    	linux-arm-kernel, linux-rpi-kernel
    
    Hello Lukasz,
    
    On Sat Apr 25, 2026 at 12:38 AM CEST, Lukasz Raczylo wrote:
    > This series proposes three candidate fixes for the silent TX stall
    > observed on Raspberry Pi 5 (BCM2712 SoC, Cadence GEM via RP1 PCIe
    > south bridge).  The bug has been reported, with reproducers, at:
    
    I've taken over the MACB driver maintenance following Clandiu & Nicolas'
    work. I have read with curiosity your series and links attached
    (though I skimmed over parts because there's been a lot of discussion).
    
    Have you moved forward since your initial post? I've seen your
    still-working-on-it message from May 8th on the rpi kernel PR. I have a
    few remarks and/or questions:
    
     - You still think the two fix patches solve it? Any clearer picture of
       which of the two patches inbetween [1/3] or[2/3] fixes it? Does
       [3/3] ever trigger on your targets?
    
     - Can you clarify the exact symptoms? I've seen a few contradictory
       facts. Two I remember:
    
        - You say here it is a Tx stall but I've seen messages in the linked
          threads that say explicitely broken Tx & Rx.
          https://github.com/cilium/cilium/issues/43198#issue-3706713821
    
        - You say here link down/up fixes it, but there is a comment that
          says they unload/reload the module (rtheobald). They don't say
          explicitely that link down/up doesn't work for them though, but
          someone before in the thread recommended link down/up. Another
          one says "Only power cycle recovers the node" (lexfrei).
    
        - Also, some messages point out disabling TSO / SG / EEE helped it.
          Any comment on that? It would help point fingers.
    
        - Some comments are about DT props missing. Is that lead dead now?
    
     - I've seen no mention of the bug having been reproduced on upstream
       kernel (?). What does the rpi kernel bring to the table that makes
       everyone use it?
    
     - Anything was found to increase the reproducibility of the bug? If it
       was then a bisect could be made possible, as I've seen mentions that
       it didn't appear on some older kernels.
    
    Now about the patches:
    
    > Reading the current driver we identified three plausible races
    > between driver and hardware, each of which could independently
    > produce the observed behaviour.  We did not determine which is the
    > actual root cause -- that likely requires either BCM2712/RP1
    > documentation we do not have, or dynamic tracing of the driver
    > during an in-situ stall.  The series therefore attempts to close
    > all three, with each commit message stating which specific race
    > that patch is targeting.
    >
    >   Patch 1/3 -- flush PCIe posted write after TSTART doorbell.
    >   Writes to NCR are posted PCIe writes and may not reach the MAC
    >   before the driver returns.  If the TSTART doorbell is lost, no
    >   TX starts, no TCOMP arrives, and the ring goes quiescent.  A
    >   read-back of NCR after the write is a standard read-after-write
    >   PCIe flush.
    
     - Makes sense, but only on MACB mounted over PCI, which is not the
       majority.
     - IDK if we can do better than a readl(NCR) on all platforms.
     - I am surprised it is the only writel() that needs to be flushed?
    
    >   Patch 2/3 -- re-check ISR after IER re-enable in macb_tx_poll().
    >   An existing comment in macb_tx_poll() notes that completions
    >   raised while TCOMP is masked do not re-fire when IER is
    >   re-enabled, and mitigates the window with macb_tx_complete_pending(),
    >   which inspects driver-visible ring state only (after rmb()).  On
    >   PCIe-attached parts the descriptor DMA write that sets TX_USED
    >   can remain in flight when that check runs; the rmb() orders CPU
    >   writes but does not retire peripheral DMA.  Reading ISR directly
    >   after IER re-enable addresses this in two ways: (a) the MMIO read
    >   is an architected PCIe read barrier for prior DMA writes, so a
    >   subsequent macb_tx_complete_pending() sees up-to-date TX_USED
    >   state; (b) it directly observes a pending TCOMP bit if the
    >   hardware has one set.  Either signal reschedules NAPI.
    
    This will not fly because ISR might be read-to-clear.
    See macb_queue_isr_clear() and how it is used. So we cannot re-read ISR
    safely on those platforms.
    
    >   Patch 3/3 -- TX stall watchdog.  Defence-in-depth.  If patches
    >   1 and 2 close the races we identified, this patch performs a
    >   single spin_lock_irqsave/unlock and a branch per queue per
    >   second with no other effect.  If a further race remains that we
    >   have not identified, it invokes the driver's own existing
    >   macb_tx_restart(), which already verifies that TBQP is behind
    >   tx_head before re-asserting TSTART.  We include this patch
    >   because we have empirically observed multi-minute stalls on this
    >   hardware; we are willing to drop it if the preference is for
    >   1 and 2 to stand alone.
    
    Good idea, but that is what ndo_tx_timeout() is meant for no? It is a
    mechanism that is not specific to our HW so that should be implemented
    at the subsystem level, and it looks like it already is. :-)
    
    We are aware of a few software scheduling races that we plan on fixing.
    If your above patches ended up not fixing the issue, you could look
    into those.
    https://lore.kernel.org/netdev/DHIT9TPJQJ46.21A89R5UAFXVH@bootlin.com/
    
    Thanks!
    
    --
    Théo Lebrun, Bootlin
    Embedded Linux and Kernel engineering
    https://bootlin.com
    
    
    ^ permalink raw reply	[flat|nested] 8+ messages in thread
  • * Re: [RFC PATCH net-next 0/3] net: macb: candidate fixes for silent TX stall on BCM2712/RP1
           [not found] <cover.1777064117.git.lukasz@raczylo.com>
                       ` (2 preceding siblings ...)
      2026-05-14 10:31 ` [RFC PATCH net-next 0/3] net: macb: candidate fixes for silent TX stall on BCM2712/RP1 Théo Lebrun
    @ 2026-05-14 21:51 ` Lukasz Raczylo
      2026-05-14 21:54 ` [PATCH net-next v2 " Lukasz Raczylo
      4 siblings, 0 replies; 8+ messages in thread
    From: Lukasz Raczylo @ 2026-05-14 21:51 UTC (permalink / raw)
      To: netdev
      Cc: Theo Lebrun, Andrea della Porta, Nicolas Ferre, Claudiu Beznea,
    	Andrew Lunn, David S . Miller, Eric Dumazet, Jakub Kicinski,
    	Paolo Abeni, linux-kernel, linux-arm-kernel, linux-rpi-kernel
    
    Andrea, Théo --
    
    Thanks both.  Replying to multiple points in one mail since they
    intersect.
    
    First a correction to the v1 cover: the "zero events post-patch"
    claim was true only at the user-space watchdog visibility level.
    With patch 3's warn made unconditional (which is what Andrea's
    review re-tested with on v6.19.10), kernel-level evidence on my
    side now matches what Andrea saw -- patches 1 and 2 are partial,
    patch 3 is empirically the load-bearing fix on this platform.
    The v2 cover acknowledges this and reframes.
    
    
    ## Andrea -- patches 1 and 3
    
    Concrete data from a dmesg sweep across the 24-node fleet
    (macb-v2 image, 2026-05-02 to 2026-05-05, 6.18.24 + this series
    with netdev_warn_once swapped to netdev_warn):
    
      * 1 mid-runtime real stall, pi-data-02 2026-05-05T13:24:09Z,
        queue 0, tail=259564431 head=259564433 (2 stuck descriptors
        after ~260M TX).  HW ETHS tx_frames counter advanced through
        the event (~1535 fps mid-stall); driver tx_tail did not.
        Patch 3 watchdog re-kicked TSTART; user-space watchdog
        logged zero RECOVER events for that window -- kernel-level
        recovery completed before user-space noticed.  Consistent
        with the lost-TCOMP pattern.
    
      * 6 boot-time false positives during the 2026-05-02 rolling
        reboot, all tail=0 head=5-7.  Patch 3 v1 has a real bug:
        tx_stall_last_tail is initialised to tx_tail (=0) at
        macb_open(), first tick fires at +1000 ms; if autoneg
        hasn't completed by then, tail is still 0 from no-TCOMPs
        while head moves from kernel-queued packets, false stall
        fires.  v2 fixes this (details below).
    
    
    ## Théo -- the four questions on the cover
    
    Welcome to macb maintenance.  Quick answers; raw 1 Hz traces,
    dmesg dumps, and event logs available on request for any of
    these.
    
      1. Tx-only or Tx+Rx broken?
    
         Tx-only at the MAC counter level.  Per-node 1 Hz trace
         captures the same signature on every wedge:
         /sys/class/net/end0/statistics/tx_packets freezes at a
         single second, rx_packets continues to grow, MAC IRQ
         counter (on the assigned CPU) continues to advance,
         NET_RX softirq counter continues to advance.  The
         "broken Tx & Rx" reports (lexfrei et al on cilium#43198)
         are the user-space symptom: TX dead -> TCP can't ACK ->
         nothing comes back -> looks bidirectionally dead from
         applications.  At the MAC counters the asymmetry is
         unambiguous.
    
      2. Recovery: link down/up vs module reload vs power cycle?
    
         On any system that's still otherwise responsive, link
         down/up suffices and is the lightest known recovery.  My
         user-space watchdog has run that primitive on 24 nodes
         for ~3 weeks; ~6-10 s wedge-to-Ready, every time.
         `modprobe -r macb && modprobe macb` (rtheobald) is a
         heavier-weight equivalent of the same thing -- works but
         unnecessary if link-toggle alone fixes the silicon state.
         "Power cycle only" (lexfrei) was on Ubuntu raspi 6.17 with
         the ondemand governor + frequent RCU stalls preceding the
         wedge (per launchpad bug body's "KEY OBSERVATION" section);
         my read is that case escalated past clean NIC freeze into
         kernel-wide unresponsiveness, so a NIC-level recovery
         couldn't reach it.
    
      3. TSO / SG / EEE disabling helped some reporters?
    
         Mixed picture, with one gap in my matrix.
    
         Tested fleet-wide since 2026-04-24 as baseline before this
         series:
           * EEE off (--set-eee end0 eee off + advertise 0x0)
           * TSO off (-K tso off)
           * GSO off (-K gso off)
           * RX/TX rings 4096/2048 (default 512)
           * IRQ affinity moved off CPU0 to CPU3
           * CPU governor schedutil (default) -- earlier tested
             performance, no change
           * qdisc fq -> pfifo_fast
    
         With all of those, the stall still fires.  Pre-patch
         fleet rate was multiple per hour with these knobs already
         applied.
    
         Untested by me: TSO + SG (scatter-gather, NETIF_F_SG) off
         *together*.  That is the specific combination rtheobald
         (cilium#43198 comment 4188846955) and the launchpad
         commenter (#34) report as masking the stall -- "must be
         both, not just one".  I tested TSO + GSO, not TSO + SG.
    
         Both patch 1 (PCIe-fabric race on TSTART) and patch 2
         (peripheral DMA retirement race on TX_USED) are
         consistent with descriptor-fragment-path interactions
         that SG-off would mask, so the workaround being real
         isn't surprising.  Closing the race rather than masking
         it should still be the right thing for mainline.  Happy
         to canary-test TSO+SG-off on one node if you want the
         data point before v2 review.
    
      4. cdns,*-max-pipe DT props -- lead dead?
    
         Yes, dead, per the commenter who pursued it (launchpad
         #2133877 comment #30, April 2026): they patched mainline
         6.18.18 to add the device_property_read calls for
         cdns,ar2r-max-pipe / cdns,aw2w-max-pipe / cdns,use-aw2b-fill
         *and* added those properties to bcm2712-rpi-5-b.dts; ran
         a few hours; their own follow-up: "this is a dud" -- node
         hung anyway.
    
         For reference, my build (raspberrypi/linux rpi-6.18.y @
         f2f68e79f16f) has the driver-side reads present but the
         DTS does not set the properties, so the AMP register
         defaults are in effect on my fleet and the bug still
         fires.  Two independent confirmations the DT props are
         not the fix.
    
    
    ## My own audit -- two issues v2 fixes
    
    Worth disclosing before someone else catches them.
    
      * Patch 2 (v1) reads ISR in macb_tx_poll(), masks off
        everything except TCOMP, and discards the rest.
        raspberrypi_rp1_config does not set
        MACB_CAPS_ISR_CLEAR_ON_WRITE -- the driver assumes
        read-clear ISR semantics on RP1, and macb_interrupt()
        relies on processing every bit it reads in one pass for
        that case to be correct.  My v1 patch breaks that contract:
        any RCOMP / ROVR / TXUBR / etc. set in ISR at the moment of
        my read is silently consumed and never processed.  RCOMP
        being lost is the worst case (RX completion never scheduled
        until something else asserts the line).  Race window is
        ~200-500 ns per macb_tx_poll completion; significant at
        moderate-to-heavy RX load on a level-triggered IRQ where
        the consumed bit drops the line before GIC delivery.
    
        v2 patch 2 drops the ISR read entirely and substitutes
        (void)queue_readl(queue, IMR).  IMR is the read-only mask
        mirror, no side effects, still flushes prior peripheral
        DMA writes via PCIe ordering.  Loses the "directly sample
        latched TCOMP" half of v1's claim; keeps the PCIe-barrier
        half (which is the half that actually addresses the
        documented race in the existing macb_tx_complete_pending()
        rmb() comment).
    
      * Patch 3 (v1) boot-time false positive described above to
        Andrea.  v2 fixes:
    
          - netif_carrier_ok() gate -- no carrier, no completion is
            possible, don't fire.
    
          - tracks tail movement via a bool tx_stall_tail_moved set
            by macb_tx_complete() under tx_ptr_lock when tail
            advances, cleared by the watchdog tick on the same
            lock.  Form suggested by pelwell when he reviewed the
            same series anchored against rpi-6.18.y at
            raspberrypi/linux#7340 (merged 2026-05-08); 13 days of
            fleet runtime in this form since 2026-05-02 across 24
            nodes.  Folded into mainline v2 patch 3 directly rather
            than carried as a fix-up.
    
          - netdev_warn_once -> netdev_warn_ratelimited per
            Andrea's ask -- operator visibility doesn't disappear
            after the first fire.
    
    
    ## v2 follows
    
    Sending [PATCH net-next v2 0/3] threaded under the v1 cover
    shortly.  Plan to drop "RFC" from the subject prefix (~3 weeks
    production runtime + the rpi in-tree merge tip the balance
    toward a regular PATCH); happy to revert to RFC if you'd
    prefer the iterative-review cadence.
    
    Tested-on context for v2:
      * mainline-anchored:  builds clean against current net-next
        HEAD, applies cleanly.  Boot-tested in a canary build of
        my Talos image before this reply.
      * rpi-6.18.y-anchored equivalents:  in production on 24 nodes
        since 2026-05-02; in raspberrypi/linux master tip since
        2026-05-08.
      * The v2 patch 2 IMR-barrier form (the one that fixes the
        destructive ISR-read regression described above) was rolled
        to all 24 Pi nodes earlier today (2026-05-14, ~14:00 UTC) as
        a vendor-fork-anchored update.  ~120 cumulative node-hours
        of runtime since:  zero mid-runtime TX stalls; zero user-space
        watchdog RECOVER events; the 5 dmesg "TX stall detected" lines
        are all boot-time false positives of the form `tail=0 head=N`
        that the new `netif_carrier_ok()` gate in patch 3 eliminates.
        Pre-patch baseline rate (~0.5 stall/node-hour at fleet level)
        would have predicted on the order of 60 mid-runtime stalls in
        that window; observed is 0.
    
    Thanks again to both for the review.
    
    --
    Lukasz Raczylo
    
    ^ permalink raw reply	[flat|nested] 8+ messages in thread
  • * [PATCH net-next v2 0/3] net: macb: candidate fixes for silent TX stall on BCM2712/RP1
           [not found] <cover.1777064117.git.lukasz@raczylo.com>
                       ` (3 preceding siblings ...)
      2026-05-14 21:51 ` Lukasz Raczylo
    @ 2026-05-14 21:54 ` Lukasz Raczylo
      2026-05-14 21:54   ` [PATCH net-next v2 1/3] net: macb: flush PCIe posted write after TSTART doorbell (PCIe-only) Lukasz Raczylo
                         ` (2 more replies)
      4 siblings, 3 replies; 8+ messages in thread
    From: Lukasz Raczylo @ 2026-05-14 21:54 UTC (permalink / raw)
      To: netdev
      Cc: Theo Lebrun, Andrea della Porta, Nicolas Ferre, Claudiu Beznea,
    	Andrew Lunn, David S . Miller, Eric Dumazet, Jakub Kicinski,
    	Paolo Abeni, linux-kernel, linux-arm-kernel, linux-rpi-kernel
    
    Hi netdev, Théo, Andrea, linux-rpi,
    
    v2 of the silent TX stall series.  The v1 RFC sits at:
    
      https://lore.kernel.org/netdev/cover.1777064117.git.lukasz@raczylo.com/T/
    
    Reframing first.  The v1 cover claimed "zero events post-patch";
    that was true at the user-space watchdog visibility level only.
    A dmesg sweep prompted by Andrea's review -- with patch 3's warn
    made unconditional, per his ask -- revealed kernel-level evidence
    that patches 1 and 2 are partial at best.  Patch 3 is empirically
    the load-bearing fix on this platform: it caught and recovered a
    real lost-TCOMP stall on pi-data-02 at 2026-05-05T13:24:09Z
    (queue 0, tail=259564431 head=259564433 after ~260M TX, HW
    ETHS tx_frames counter advancing through the event while driver
    tx_tail did not) without user-space involvement.
    
    So the v2 narrative reads:
    
      * Patch 1 (PCIe posted-write flush) and patch 2 (PCIe read
        barrier before descriptor check) close two specific
        candidate races in the TSTART / TX_USED paths.  Plausible
        and well-motivated, but I cannot prove either fires in
        isolation on this hardware -- my 1 Hz trace shows TX
        freezes, not which mechanism caused them.
    
      * Patch 3 (TX stall watchdog) is the safety net that
        empirically does the recovery work.  13 days of production
        runtime on 24 nodes since 2026-05-02 in the same form
        (anchored against the rpi-6.18.y vendor fork, in
        raspberrypi/linux#7340 -- merged 2026-05-08 after review
        feedback from pelwell that this v2 incorporates).
    
    The v1 cover's "zero stalls in 95 node-hours of post-patch
    uptime" framing was misleading.  Apologies for that.
    
    ## What changed in v2
    
    Patch 1 (PCIe posted-write flush after TSTART doorbell):
      * Gates the readback behind a new MACB_CAPS_PCIE_POSTED_WRITES
        capability, set only on raspberrypi_rp1_config.  v1
        applied the readback to every macb variant; SoC-integrated
        parts (Atmel, Microchip, SiFive, Xilinx) have no posted-write
        fabric and were paying the readback latency for no benefit.
      * Commit message notes that the readback also flushes the
        preceding macb_tx_lpi_wake() NCR write on the same path --
        not just TSTART -- since it functions as a PCIe read barrier
        for all prior posted writes by the same requester.
    
    Patch 2 (PCIe read barrier before TX completion descriptor check):
      * Dropped the ISR read.  v1 read ISR in macb_tx_poll() with
        `queue_readl(queue, ISR) & MACB_BIT(TCOMP)`; that's
        destructive on RP1 silicon (MACB_CAPS_ISR_CLEAR_ON_WRITE
        is not set on raspberrypi_rp1_config; the existing handler
        assumes read-clear semantics and processes every bit
        returned from queue_readl(queue, ISR) in one pass).  v1's
        masked-and-discarded read silently consumed any other bit
        set in ISR at that instant -- RCOMP being the worst case
        (RX completion never scheduled until the line re-asserts).
      * v2 substitutes `(void)queue_readl(queue, IMR)` -- IMR is
        the read-only interrupt mask mirror, no side effects, still
        flushes prior peripheral DMA writes via PCIe completion
        ordering.  Loses the "directly sample latched TCOMP" half
        of v1's claim; keeps the PCIe-barrier half, which is the
        half that addresses the documented race in the existing
        macb_tx_complete_pending() rmb() comment.
    
    Patch 3 (TX stall watchdog):
      * Tail movement is tracked via a `bool tx_stall_tail_moved`
        set by macb_tx_complete() under tx_ptr_lock when tail
        advances, and cleared by the watchdog tick on the same lock.
        v1 snapshotted tx_tail and compared between ticks; while
        that worked correctly given tx_tail is free-running u32,
        the bool form is unambiguously cleaner, doesn't depend on
        counter behaviour, and is what pelwell asked for when he
        reviewed the same series on the rpi side
        (raspberrypi/linux#7340).
      * netif_carrier_ok() gate added at the top of the watchdog
        tick.  Eliminates the boot-time false positive seen in v1
        where, between macb_open() and link-autoneg-completion,
        queue->tx_head can advance from kernel-queued packets while
        tx_tail stays at 0 (no TCOMPs yet), tripping the snapshot
        check.  Observed 6 such fires during a 2026-05-02 fleet
        rolling reboot.
      * netdev_warn_once -> netdev_warn_ratelimited.  v1's
        netdev_warn_once made operational accounting impossible
        after the first fire on a given netdev; ratelimited keeps
        bounded log noise but lets operators count events.  Andrea
        asked for this directly.
    
    Patches 1 and 3 are independently revertable.  Patch 2 v2 is a
    two-line readback before an existing check; trivially revertable
    in isolation, semantically dependent on the existing
    macb_tx_complete_pending() recovery path that it strengthens.
    
    ## What I haven't done
    
      * TSO+SG-off canary.  rtheobald (cilium#43198 #4188846955)
        and the launchpad #2133877 commenter (#34) both report
        TSO+SG-off *together* mask the stall; my matrix has TSO+GSO
        tested off, not TSO+SG.  Happy to canary-test this on one
        node if reviewers want the data point before deciding which
        of patches 1/2 the SG path actually exercises.
    
      * Per-patch isolation testing.  All three deployed
        simultaneously on the 24-node fleet; I cannot independently
        prove patch 1 or patch 2 does anything on its own.  Patch 3
        has direct production evidence (lost-TCOMP recovery
        described above).  If reviewers want a bisection-style
        canary I can stagger one-patch / two-patch / three-patch
        nodes for >=1 week each.
    
    ## Status and testing
    
      * Mainline-anchored:  v2 builds clean against current net-next
        HEAD, applies cleanly.  Boot-tested and brief-sanity in a
        canary build before this send.
      * raspberrypi/linux rpi-6.18.y anchored equivalents:  in
        production on 24 nodes since 2026-05-02 (now 13 days); in
        raspberrypi/linux master since 2026-05-08 (6 days).
      * The v2 patch 2 IMR-barrier form was rolled to all 24 Pi
        nodes earlier today (2026-05-14, ~14:00 UTC) as a
        vendor-fork-anchored update.  ~120 cumulative node-hours
        of runtime since: zero mid-runtime TX stalls; zero user-space
        watchdog RECOVER events.  Cover-letter-thread reply with
        detail accompanies this series.
    
    The series does not depend on any other in-flight work.  Happy
    to split, rebase, drop, or restructure on feedback.
    
    Lukasz Raczylo (3):
      net: macb: flush PCIe posted write after TSTART doorbell (PCIe-only)
      net: macb: insert PCIe read barrier before TX completion descriptor
        check
      net: macb: add TX stall watchdog to recover from lost TCOMP interrupts
    
     drivers/net/ethernet/cadence/macb.h      | 14 ++++
     drivers/net/ethernet/cadence/macb_main.c | 95 ++++++++++++++++++++++++
     2 files changed, 109 insertions(+)
    
    -- 
    2.54.0
    
    
    ^ permalink raw reply	[flat|nested] 8+ messages in thread

  • end of thread, other threads:[~2026-05-14 21:55 UTC | newest]
    
    Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
    -- links below jump to the message on this page --
         [not found] <cover.1777064117.git.lukasz@raczylo.com>
         [not found] ` <3106d546d494f2f52ec832e7f7d04f534286e254.1777064117.git.lukasz@raczylo.com>
    2026-05-05 13:17   ` [RFC PATCH net-next 1/3] net: macb: flush PCIe posted write after TSTART doorbell Andrea della Porta
         [not found] ` <c0469642f42ada85d91a8a685eb7c0e04cb99131.1777064117.git.lukasz@raczylo.com>
    2026-05-05 13:30   ` [RFC PATCH net-next 3/3] net: macb: add TX stall watchdog as defence-in-depth safety net Andrea della Porta
    2026-05-14 10:31 ` [RFC PATCH net-next 0/3] net: macb: candidate fixes for silent TX stall on BCM2712/RP1 Théo Lebrun
    2026-05-14 21:51 ` Lukasz Raczylo
    2026-05-14 21:54 ` [PATCH net-next v2 " Lukasz Raczylo
    2026-05-14 21:54   ` [PATCH net-next v2 1/3] net: macb: flush PCIe posted write after TSTART doorbell (PCIe-only) Lukasz Raczylo
    2026-05-14 21:54   ` [PATCH net-next v2 2/3] net: macb: insert PCIe read barrier before TX completion descriptor check Lukasz Raczylo
    2026-05-14 21:54   ` [PATCH net-next v2 3/3] net: macb: add TX stall watchdog to recover from lost TCOMP interrupts Lukasz Raczylo
    

    This is a public inbox, see mirroring instructions
    for how to clone and mirror all data and code used for this inbox