diff options
author | Giuseppe CAVALLARO <peppe.cavallaro@st.com> | 2016-04-01 03:07:14 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-04-01 14:38:58 -0400 |
commit | a00e3ab64be2e482bd25fe30bdc9bfa6e2b0cf1c (patch) | |
tree | 2c28bf43b65edfc75c7ff4f41a621c0b45389040 | |
parent | c66e98c9532bf7b58fe78cc59fb37d3ff651756d (diff) |
stmmac: fix TX normal DESC
This patch fixs a regression raised when test on chips that use
the normal descriptor layout. In fact, no len bits were set for
the TDES1 and no OWN bit inside the TDES0.
Signed-off-by: Giuseppe CAVALLARO <peppe.cavallaro@st.com>
Tested-by: Andreas Färber <afaerber@suse.de>
Cc: Fabrice Gasnier <fabrice.gasnier@st.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ethernet/stmicro/stmmac/norm_desc.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/drivers/net/ethernet/stmicro/stmmac/norm_desc.c b/drivers/net/ethernet/stmicro/stmmac/norm_desc.c index e13228f115f0..011386f6f24d 100644 --- a/drivers/net/ethernet/stmicro/stmmac/norm_desc.c +++ b/drivers/net/ethernet/stmicro/stmmac/norm_desc.c | |||
@@ -199,11 +199,6 @@ static void ndesc_prepare_tx_desc(struct dma_desc *p, int is_fs, int len, | |||
199 | { | 199 | { |
200 | unsigned int tdes1 = p->des1; | 200 | unsigned int tdes1 = p->des1; |
201 | 201 | ||
202 | if (mode == STMMAC_CHAIN_MODE) | ||
203 | norm_set_tx_desc_len_on_chain(p, len); | ||
204 | else | ||
205 | norm_set_tx_desc_len_on_ring(p, len); | ||
206 | |||
207 | if (is_fs) | 202 | if (is_fs) |
208 | tdes1 |= TDES1_FIRST_SEGMENT; | 203 | tdes1 |= TDES1_FIRST_SEGMENT; |
209 | else | 204 | else |
@@ -217,10 +212,15 @@ static void ndesc_prepare_tx_desc(struct dma_desc *p, int is_fs, int len, | |||
217 | if (ls) | 212 | if (ls) |
218 | tdes1 |= TDES1_LAST_SEGMENT; | 213 | tdes1 |= TDES1_LAST_SEGMENT; |
219 | 214 | ||
220 | if (tx_own) | ||
221 | tdes1 |= TDES0_OWN; | ||
222 | |||
223 | p->des1 = tdes1; | 215 | p->des1 = tdes1; |
216 | |||
217 | if (mode == STMMAC_CHAIN_MODE) | ||
218 | norm_set_tx_desc_len_on_chain(p, len); | ||
219 | else | ||
220 | norm_set_tx_desc_len_on_ring(p, len); | ||
221 | |||
222 | if (tx_own) | ||
223 | p->des0 |= TDES0_OWN; | ||
224 | } | 224 | } |
225 | 225 | ||
226 | static void ndesc_set_tx_ic(struct dma_desc *p) | 226 | static void ndesc_set_tx_ic(struct dma_desc *p) |