From mboxrd@z Thu Jan 1 00:00:00 1970 From: Giuseppe CAVALLARO Subject: Re: [PATCH v3 0/8] arm64: rockchip: Initial GeekBox enablement Date: Wed, 9 Mar 2016 11:27:42 +0100 Message-ID: <56DFFA9E.7060602@st.com> References: <1457294038-14243-1-git-send-email-afaerber@suse.de> <56DD7172.4000707@suse.de> <2714888.1DdqvJZ8cb@diego> <56DD7593.5060003@suse.de> <56DD8176.2080603@st.com> <56DD8FBE.9010200@suse.de> <56DD99A4.5030004@st.com> <56DDA26C.3050301@suse.de> <56DDA3D5.3090209@st.com> <56DDB749.1020808@suse.de> <56DE7E1D.5070508@st.com> <56DFE55B.2090806@st.com> <56DFE64B.8060606@st.com> <56DFF253.9050208@st.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------080902020606030807080607" Return-path: In-Reply-To: <56DFF253.9050208@st.com> Sender: netdev-owner@vger.kernel.org To: Tomeu Vizoso , Fabrice GASNIER Cc: Dinh Nguyen , "devicetree@vger.kernel.org" , =?UTF-8?B?SGVpa28gU3TDvGJuZXI=?= , netdev@vger.kernel.org, "open list:ARM/Rockchip SoC..." , LAKML , =?UTF-8?B?QW5kcmVhcyBGw6Ry?= =?UTF-8?B?YmVy?= , Gabriel Fernandez , Alexandre TORGUE , =?UTF-8?B?RnJhbmsgU2Now6RmZXI=?= , LKML List-Id: devicetree@vger.kernel.org --------------080902020606030807080607 Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit Hello Tomeu, Andreas, On 3/9/2016 10:52 AM, Giuseppe CAVALLARO wrote: >> * today's linux-next: probe failed >> >> * today's linux-next + revert of 88f8b1bb41c6 stmmac: Fix 'eth0: No >> PHY found' regression: probe succeeded but no network at all >> >> * today's linux-next + revert of 88f8b1bb41c6 (stmmac: Fix 'eth0: No >> PHY found' regression) + revert of 0e80bdc9a72d (stmmac: first frame >> prep at the end of xmit routine): probe succeeded, dhcp succeeds and >> nfsroot works for a few seconds before timing out > > ok, I was looking at this problem now that seems to related > the "stmmac: first frame prep at the end of xmit routine" > that, at first glance, is breaking the gmac 3.50 with normal descriptor. I have no Hw where to test this use case. So, I wonder if may I ask you to test some patch. This first patch adds a missing barrier to the normal routine that inits the descriptor. Barrier was needed to well manage the OWN descriptor and it was not added in case of normal desc case after the xmit rework. Then I will check the algo behind the new xmit and in case of problems, if you agree, we will decide to revert it because it aimed to add an optimization. Let me know if you agree. Regards Peppe --------------080902020606030807080607 Content-Type: text/x-patch; name="normal_tmp.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="normal_tmp.patch" diff --git a/drivers/net/ethernet/stmicro/stmmac/norm_desc.c b/drivers/net/ethernet/stmicro/stmmac/norm_desc.c index e13228f..4392610 100644 --- a/drivers/net/ethernet/stmicro/stmmac/norm_desc.c +++ b/drivers/net/ethernet/stmicro/stmmac/norm_desc.c @@ -210,7 +210,7 @@ static void ndesc_prepare_tx_desc(struct dma_desc *p, int is_fs, int len, tdes1 &= ~TDES1_FIRST_SEGMENT; if (likely(csum_flag)) - tdes1 |= (TX_CIC_FULL) << TDES1_CHECKSUM_INSERTION_SHIFT; + tdes1 |= (TX_CIC_FULL << TDES1_CHECKSUM_INSERTION_SHIFT); else tdes1 &= ~(TX_CIC_FULL << TDES1_CHECKSUM_INSERTION_SHIFT); @@ -220,6 +220,13 @@ static void ndesc_prepare_tx_desc(struct dma_desc *p, int is_fs, int len, if (tx_own) tdes1 |= TDES0_OWN; + if (is_fs & tx_own) + /* When the own bit, for the first frame, has to be set, all + * descriptors for the same frame has to be set before, to + * avoid race condition. + */ + wmb(); + p->des1 = tdes1; } --------------080902020606030807080607--