diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/ps3_gelic_net.c | 9 | ||||
-rw-r--r-- | drivers/net/ps3_gelic_net.h | 1 |
2 files changed, 8 insertions, 2 deletions
diff --git a/drivers/net/ps3_gelic_net.c b/drivers/net/ps3_gelic_net.c index 518c5c3ce38b..d596df987585 100644 --- a/drivers/net/ps3_gelic_net.c +++ b/drivers/net/ps3_gelic_net.c | |||
@@ -943,8 +943,8 @@ refill: | |||
943 | descr->prev->next_descr_addr = descr->bus_addr; | 943 | descr->prev->next_descr_addr = descr->bus_addr; |
944 | 944 | ||
945 | if (dmac_chain_ended) { | 945 | if (dmac_chain_ended) { |
946 | gelic_net_enable_rxdmac(card); | 946 | card->rx_dma_restart_required = 1; |
947 | dev_dbg(ctodev(card), "reenable rx dma\n"); | 947 | dev_dbg(ctodev(card), "reenable rx dma scheduled\n"); |
948 | } | 948 | } |
949 | 949 | ||
950 | return 1; | 950 | return 1; |
@@ -1020,6 +1020,11 @@ static irqreturn_t gelic_net_interrupt(int irq, void *ptr) | |||
1020 | if (!status) | 1020 | if (!status) |
1021 | return IRQ_NONE; | 1021 | return IRQ_NONE; |
1022 | 1022 | ||
1023 | if (card->rx_dma_restart_required) { | ||
1024 | card->rx_dma_restart_required = 0; | ||
1025 | gelic_net_enable_rxdmac(card); | ||
1026 | } | ||
1027 | |||
1023 | if (status & GELIC_NET_RXINT) { | 1028 | if (status & GELIC_NET_RXINT) { |
1024 | gelic_net_rx_irq_off(card); | 1029 | gelic_net_rx_irq_off(card); |
1025 | netif_rx_schedule(netdev); | 1030 | netif_rx_schedule(netdev); |
diff --git a/drivers/net/ps3_gelic_net.h b/drivers/net/ps3_gelic_net.h index 030e2e262608..01d729bc7332 100644 --- a/drivers/net/ps3_gelic_net.h +++ b/drivers/net/ps3_gelic_net.h | |||
@@ -206,6 +206,7 @@ struct gelic_net_card { | |||
206 | 206 | ||
207 | struct gelic_net_descr_chain tx_chain; | 207 | struct gelic_net_descr_chain tx_chain; |
208 | struct gelic_net_descr_chain rx_chain; | 208 | struct gelic_net_descr_chain rx_chain; |
209 | int rx_dma_restart_required; | ||
209 | /* gurad dmac descriptor chain*/ | 210 | /* gurad dmac descriptor chain*/ |
210 | spinlock_t chain_lock; | 211 | spinlock_t chain_lock; |
211 | 212 | ||