From: Emilian Medve Date: Tue, 30 Jan 2007 22:14:50 +0000 (-0600) Subject: mpc83xx: Fix alternating tx error / tx buffer not ready bug in QE UEC X-Git-Tag: v2008.10-rc1~1006^2~16 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a28899c910024a0226331df07207b1038c300c93;p=platform%2Fkernel%2Fu-boot.git mpc83xx: Fix alternating tx error / tx buffer not ready bug in QE UEC 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" --- diff --git a/drivers/qe/uec.c b/drivers/qe/uec.c index aea455b..c416a67 100644 --- a/drivers/qe/uec.c +++ b/drivers/qe/uec.c @@ -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);