[PATCH net-next 5/6] net: stmmac: use first_desc for TBS
Russell King (Oracle)
rmk+kernel at armlinux.org.uk
Fri Mar 20 09:47:32 PDT 2026
Rather than freshly getting a pointer for the TBS descriptor (because
we want to access its enhanced fields) convert the existing first_desc
basic descriptor to a pointer to the enhanced descriptor.
Add a comment explaining why it is safe to convert from the basic
descriptor pointer to the enhanced descriptor pointer.
Signed-off-by: Russell King (Oracle) <rmk+kernel at armlinux.org.uk>
---
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index 95da2940cc3d..a733249c3f9b 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -4801,10 +4801,15 @@ static netdev_tx_t stmmac_xmit(struct sk_buff *skb, struct net_device *dev)
if (priv->sarc_type)
stmmac_set_desc_sarc(priv, first_desc, priv->sarc_type);
+ /* STMMAC_TBS_EN can only be set if SYMMC_TBS_AVAIL has already
+ * been set, which means the underlying type of the descriptors
+ * will be struct stmmac_edesc. Therefore, it is safe to convert
+ * the basic descriptor to the enhanced descriptor here.
+ */
if (tx_q->tbs & STMMAC_TBS_EN) {
struct timespec64 ts = ns_to_timespec64(skb->tstamp);
- tbs_desc = &tx_q->dma_entx[first_entry];
+ tbs_desc = dma_desc_to_edesc(first_desc);
stmmac_set_desc_tbs(priv, tbs_desc, ts.tv_sec, ts.tv_nsec);
}
--
2.47.3
More information about the linux-arm-kernel
mailing list