projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
194ac06
)
ravb: fix race updating TCCR
author
Sergei Shtylyov
<
[email protected]
>
Thu, 16 Jul 2015 21:28:38 +0000
(
00:28
+0300)
committer
David S. Miller
<
[email protected]
>
Tue, 21 Jul 2015 03:42:02 +0000
(20:42 -0700)
The TCCR.TSRQn bit may get clearead after TCCR gets read, so that TCCR write
would get skipped. We don't need to check this bit before setting.
Signed-off-by: Sergei Shtylyov <
[email protected]
>
Signed-off-by: David S. Miller <
[email protected]
>
drivers/net/ethernet/renesas/ravb_main.c
patch
|
blob
|
history
diff --git
a/drivers/net/ethernet/renesas/ravb_main.c
b/drivers/net/ethernet/renesas/ravb_main.c
index 0e5fde3216308951c79a3e02c4ca7dfc421e850e..d08c250e843ed9428bbcd09c4771a0ce06541fe7 100644
(file)
--- a/
drivers/net/ethernet/renesas/ravb_main.c
+++ b/
drivers/net/ethernet/renesas/ravb_main.c
@@
-1275,7
+1275,6
@@
static netdev_tx_t ravb_start_xmit(struct sk_buff *skb, struct net_device *ndev)
u32 dma_addr;
void *buffer;
u32 entry;
- u32 tccr;
spin_lock_irqsave(&priv->lock, flags);
if (priv->cur_tx[q] - priv->dirty_tx[q] >= priv->num_tx_ring[q]) {
@@
-1324,9
+1323,7
@@
static netdev_tx_t ravb_start_xmit(struct sk_buff *skb, struct net_device *ndev)
dma_wmb();
desc->die_dt = DT_FSINGLE;
- tccr = ravb_read(ndev, TCCR);
- if (!(tccr & (TCCR_TSRQ0 << q)))
- ravb_write(ndev, tccr | (TCCR_TSRQ0 << q), TCCR);
+ ravb_write(ndev, ravb_read(ndev, TCCR) | (TCCR_TSRQ0 << q), TCCR);
priv->cur_tx[q]++;
if (priv->cur_tx[q] - priv->dirty_tx[q] >= priv->num_tx_ring[q] &&