ag71xx: fix build error with debugfs code
authorFelix Fietkau <nbd@openwrt.org>
Thu, 11 Feb 2016 22:48:36 +0000 (22:48 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Thu, 11 Feb 2016 22:48:36 +0000 (22:48 +0000)
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 48695

target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_debugfs.c

index c480121040c38e02d442d989f697124e5d123a57..c86803c9ceda7c57f643df29acc8254768b3d264 100644 (file)
@@ -157,6 +157,8 @@ static ssize_t read_file_ring(struct file *file, char __user *user_buf,
                              struct ag71xx_ring *ring,
                              unsigned desc_reg)
 {
+       int ring_size = BIT(ring->order);
+       int ring_mask = ring_size - 1;
        char *buf;
        unsigned int buflen;
        unsigned int len = 0;
@@ -167,7 +169,7 @@ static ssize_t read_file_ring(struct file *file, char __user *user_buf,
        u32 desc_hw;
        int i;
 
-       buflen = (ring->size * DESC_PRINT_LEN);
+       buflen = (ring_size * DESC_PRINT_LEN);
        buf = kmalloc(buflen, GFP_KERNEL);
        if (!buf)
                return -ENOMEM;
@@ -178,13 +180,13 @@ static ssize_t read_file_ring(struct file *file, char __user *user_buf,
 
        spin_lock_irqsave(&ag->lock, flags);
 
-       curr = (ring->curr % ring->size);
-       dirty = (ring->dirty % ring->size);
+       curr = (ring->curr & ring_mask);
+       dirty = (ring->dirty & ring_mask);
        desc_hw = ag71xx_rr(ag, desc_reg);
-       for (i = 0; i < ring->size; i++) {
+       for (i = 0; i < ring_size; i++) {
                struct ag71xx_buf *ab = &ring->buf[i];
                struct ag71xx_desc *desc = ag71xx_ring_desc(ring, i);
-               u32 desc_dma = ((u32) ring->descs_dma) + i * ring->desc_size;
+               u32 desc_dma = ((u32) ring->descs_dma) + i * AG71XX_DESC_SIZE;
 
                len += snprintf(buf + len, buflen - len,
                        "%3d %c%c%c %08x %08x %08x %08x %c %10lu\n",