mpc83xx: Fix alternating tx error / tx buffer not ready bug in QE UEC
authorEmilian Medve <Emilian.Medve@freescale.com>
Tue, 30 Jan 2007 22:14:50 +0000 (16:14 -0600)
committerKim Phillips <kim.phillips@freescale.com>
Fri, 2 Mar 2007 17:05:53 +0000 (11:05 -0600)
The problem is not gcc4 but the code itself. The BD_STATUS() macro can't
be used for busy-waiting since it strips the 'volatile' property from
the bd variable. gcc3 was working by pure luck.

This is a follow on patch to "Fix the UEC driver bug of QE"

drivers/qe/uec.c

index aea455b..c416a67 100644 (file)
@@ -1148,7 +1148,7 @@ static int uec_send(struct eth_device* dev, volatile void *buf, int len)
        /* Init TxBD */
        BD_DATA_SET(bd, buf);
        BD_LENGTH_SET(bd, len);
-       status = BD_STATUS(bd);
+       status = bd->status;
        status &= BD_WRAP;
        status |= (TxBD_READY | TxBD_LAST);
        BD_STATUS_SET(bd, status);