Re: [PATCH v3 0/8] arm64: rockchip: Initial GeekBox enablement

Giuseppe CAVALLARO
2016-03-15T12:37:48Z

[-- Attachment #1: Type: text/plain, Size: 1324 bytes --]

Hello Tomeu

On 3/15/2016 8:23 AM, Tomeu Vizoso wrote:
> Thanks.
>
> Btw, I have rebased on top of 4.5 this morning and I have noticed that
> 88f8b1bb41c6 ("stmmac: Fix 'eth0: No PHY found' regression") got in
> there, so I guess we have now a bunch of boards with broken network on
> that release:(

This is the status on my side: I am testing on an HW that has the
Enhanced descriptors and all works fine.

On this HW, if I force the driver to use the normal descriptor
layout, I meet problems but using both net.git and net-next.
So I suspect I cannot ply with this HW forcing the normal descriptors.
But! That is helping me to check if, on net-next, the stmmac is
actually programming fine the normal desc case.
I have just found another fix so I kindly ask you to apply the temp
patch attached and let me know.
In details, I have noticed that the OWN bit was not set in the right
TDES0.

I also ask you to give me a log of the kernel where the stmmac was
running fine. I would like to see which configuration it is selected
at runtime by the driver on your box.
From your previous logs (where the stmmac failed), it seems that
the problem is on normal desc but, to be honest, this is the first
case I see a 3.50a with HW capability register and w/o Enhanced
descriptors.

Best Regards
Peppe

> Regards,
>
> Tomeu

[-- Attachment #2: tmp.patch --]
[-- Type: text/x-patch, Size: 542 bytes --]

diff --git a/drivers/net/ethernet/stmicro/stmmac/norm_desc.c b/drivers/net/ethernet/stmicro/stmmac/norm_desc.c
index e13228f..44c052f 100644
--- a/drivers/net/ethernet/stmicro/stmmac/norm_desc.c
+++ b/drivers/net/ethernet/stmicro/stmmac/norm_desc.c
@@ -217,10 +217,10 @@ static void ndesc_prepare_tx_desc(struct dma_desc *p, int is_fs, int len,
if (ls)
tdes1 |= TDES1_LAST_SEGMENT;

- if (tx_own)
- tdes1 |= TDES0_OWN;
-
p->des1 = tdes1;
+
+ if (tx_own)
+ p->des0 |= TDES0_OWN;
}

static void ndesc_set_tx_ic(struct dma_desc *p)