[PATCH net-next v3] net: stmmac: dwxgmac2: enable L2 split header support

Lorenzo Bianconi lorenzo.bianconi at oss.qualcomm.com
Wed Oct 14 13:34:31 PDT 2026


> 
> >> diff --git a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_descs.c b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_descs.c
> >> index 6719ac6e395b..65ac5403ec58 100644
> >> --- a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_descs.c
> >> +++ b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_descs.c
> >> @@ -292,8 +292,18 @@ static int dwxgmac2_get_rx_hash(struct dma_desc *p, u32 *hash,
> >>  
> >>  static void dwxgmac2_get_rx_header_len(struct dma_desc *p, unsigned int *len)
> >>  {
> >> -	if (le32_to_cpu(p->des3) & XGMAC_RDES3_L34T)
> >> +	u32 rdes3 = le32_to_cpu(p->des3);
> >> +
> >> +	/* when FD=1 and LD=0, HL is RDES2[9:0] */
> >> +	if (!(rdes3 & XGMAC_RDES3_LD)) {
> >> +		*len = le32_to_cpu(p->des2) & XGMAC_RDES2_HL;
> >> +		return;
> >> +	}
> >> +
> >> +	if (rdes3 & XGMAC_RDES3_L34T)
> > should we check FD=1 here? Since HL is not defined for the case {FD=0,LD=1},
> > right?
> >
> >>  		*len = le32_to_cpu(p->des2) & XGMAC_RDES2_HL;
> >> +	else if (rdes3 & XGMAC_RDES3_L2T)
> >> +		*len = (le32_to_cpu(p->des2) & XGMAC_RDES2_NONIPHL) >> 2;
> > same here.
> >
> > Regards,
> > Lorenzo
> >
> Hi Lorenzo,
> 
> Thanks for the review. dwxgmac2_get_rx_header_len() is only called from stmmac_rx_buf1_len(),
> after the sph_active && len early return, so with split header enabled it only runs on the
> first descriptor (FD=1). I don't think an extra FD check is needed, but I can add one if you'd prefer.

I guess this approach would be more robust.

Regards,
Lorenzo

> 
> Regards,
> Sagar
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20261014/4e1c5619/attachment-0001.sig>


More information about the linux-arm-kernel mailing list