diff options
Diffstat (limited to 'drivers/net/ps3_gelic_net.c')
-rw-r--r-- | drivers/net/ps3_gelic_net.c | 9 |
1 files changed, 7 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); |