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
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)