]> rtime.felk.cvut.cz Git - zynq/linux.git/commitdiff
axi_ethernet: Remove loop in BD space checking
authorMichal Simek <monstr@monstr.eu>
Fri, 27 May 2011 13:25:09 +0000 (15:25 +0200)
committerJohn Linn <john.linn@xilinx.com>
Wed, 30 Nov 2011 04:32:44 +0000 (20:32 -0800)
Remove do-while loop by checking last BD which
it is necessary for transfer.

Signed-off-by: Michal Simek <monstr@monstr.eu>
drivers/net/xilinx_axienet_main.c

index 989b6ec8feb85333f6159d5a366994d0bd33b5ee..27b1fb355ba89717b6261ea091851abb247371d0 100644 (file)
@@ -727,23 +727,9 @@ static inline int axienet_check_tx_bd_space(struct axienet_local *lp,
                                                                int num_frag)
 {
        struct axidma_bd *cur_p;
-       int tail;
-
-       tail = lp->tx_bd_tail;
-       cur_p = &lp->tx_bd_v[tail];
-
-       do {
-               if ((cur_p->status) & (XAXIDMA_BD_STS_ACTUAL_LEN_MASK))
-                       return NETDEV_TX_BUSY;
-
-               tail++;
-               if (tail >= TX_BD_NUM)
-                       tail = 0;
-
-               cur_p = &lp->tx_bd_v[tail];
-               num_frag--;
-       } while (num_frag >= 0);
-
+       cur_p = &lp->tx_bd_v[(lp->tx_bd_tail + num_frag) % TX_BD_NUM];
+       if (cur_p->status & XAXIDMA_BD_STS_ALL_MASK)
+               return NETDEV_TX_BUSY;
        return 0;
 }