devices/ccat: revert "limit rx processing to one frame per poll"

revert "limit rx processing to one frame per poll", which caused etherlab
frame timeouts in setups with more than one frame per cycle.
This commit is contained in:
Patrick Bruenn 2016-04-12 11:17:36 +02:00 committed by Florian Pose
parent 41987fec6c
commit 47db807948
2 changed files with 6 additions and 4 deletions

View File

@ -29,7 +29,7 @@
#include "../ecdev.h"
#define DRV_EXTRAVERSION "-ec"
#define DRV_VERSION "0.14" DRV_EXTRAVERSION
#define DRV_VERSION "0.15" DRV_EXTRAVERSION
#define DRV_DESCRIPTION "Beckhoff CCAT Ethernet/EtherCAT Network Driver"
#undef pr_fmt

View File

@ -291,7 +291,7 @@ static int ccat_dma_init(struct ccat_dma_mem *const dma, size_t channel,
iowrite32((u32) phys | ((phys_hi) > 0), ioaddr);
iowrite32(phys_hi, ioaddr + 4);
pr_debug
pr_info
("DMA%llu mem initialized\n base: 0x%p\n start: 0x%p\n phys: 0x%09llx\n pci addr: 0x%01x%08x\n size: %llu |%llx bytes.\n",
(u64) channel, dma->base, fifo->dma.start, (u64) dma->phys,
ioread32(ioaddr + 4), ioread32(ioaddr),
@ -749,12 +749,14 @@ static void poll_link(struct ccat_eth_priv *const priv)
static void poll_rx(struct ccat_eth_priv *const priv)
{
struct ccat_eth_fifo *const fifo = &priv->rx_fifo;
const size_t len = fifo->ops->ready(fifo);
size_t rx_per_poll = FIFO_LENGTH / 2;
size_t len = fifo->ops->ready(fifo);
if (len) {
while (len && --rx_per_poll) {
priv->receive(priv, len);
fifo->ops->add(fifo);
ccat_eth_fifo_inc(fifo);
len = fifo->ops->ready(fifo);
}
}