Assuming the fix is this:

commit 702b5e0f8cb1dfaf41fe5ef1eb99595a947984cc
Author: Kevin Hao <[email protected]>
Date:   Sun Feb 8 16:45:52 2026 +0800

    net: macb: Fix tx/rx malfunction after phy link down and up
    
    BugLink: https://bugs.launchpad.net/bugs/2150809
    
    [ Upstream commit bf9cf80cab81e39701861a42877a28295ade266f ]
    
    In commit 99537d5c476c ("net: macb: Relocate mog_init_rings() callback
    from macb_mac_link_up() to macb_open()"), the mog_init_rings() callback
    was moved from macb_mac_link_up() to macb_open() to resolve a deadlock
    issue. However, this change introduced a tx/rx malfunction following
    phy link down and up events. The issue arises from a mismatch between
    the software queue->tx_head, queue->tx_tail, queue->rx_prepared_head,
    and queue->rx_tail values and the hardware's internal tx/rx queue
    pointers.
    
    According to the Zynq UltraScale TRM [1], when tx/rx is disabled, the
    internal tx queue pointer resets to the value in the tx queue base
    address register, while the internal rx queue pointer remains unchanged.
    The following is quoted from the Zynq UltraScale TRM:
      When transmit is disabled, with bit [3] of the network control register
      set low, the transmit-buffer queue pointer resets to point to the address
      indicated by the transmit-buffer queue base address register. Disabling
      receive does not have the same effect on the receive-buffer queue
      pointer.
    
    Additionally, there is no need to reset the RBQP and TBQP registers in a
    phy event callback. Therefore, move macb_init_buffers() to macb_open().
    In a phy link up event, the only required action is to reset the tx
    software head and tail pointers to align with the hardware's behavior.
    
    [1] https://docs.amd.com/v/u/en-US/ug1085-zynq-ultrascale-trm
    
    Fixes: 99537d5c476c ("net: macb: Relocate mog_init_rings() callback from 
macb_mac_link_up() to macb_open()")
    Signed-off-by: Kevin Hao <[email protected]>
    Cc: [email protected]
    Link: 
https://patch.msgid.link/[email protected]
    Signed-off-by: Paolo Abeni <[email protected]>
    Signed-off-by: Sasha Levin <[email protected]>
    Signed-off-by: Noah Wager <[email protected]>
    Signed-off-by: Edoardo Canepa <[email protected]>


** Changed in: linux-raspi (Ubuntu)
       Status: Confirmed => Fix Released

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2150397

Title:
  Raspberry Pi 5 eth0 (macb): physical link reconnect restores carrier
  but loses ARP/DHCP until interface reset

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux-raspi/+bug/2150397/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to