|
@@ -67,13 +67,6 @@ DECLARE_GLOBAL_DATA_PTR;
|
|
|
|
|
|
#undef DEBUG
|
|
|
|
|
|
-struct nbuf {
|
|
|
- uint8_t data[1500]; /**< actual data */
|
|
|
- int length; /**< actual length */
|
|
|
- int used; /**< buffer in use or not */
|
|
|
- uint8_t head[16]; /**< MAC header(6 + 6 + 2) + 2(aligned) */
|
|
|
-};
|
|
|
-
|
|
|
#ifdef CONFIG_FEC_MXC_SWAP_PACKET
|
|
|
static void swap_packet(uint32_t *packet, int length)
|
|
|
{
|
|
@@ -775,7 +768,6 @@ static int fec_recv(struct eth_device *dev)
|
|
|
struct fec_bd *rbd = &fec->rbd_base[fec->rbd_index];
|
|
|
unsigned long ievent;
|
|
|
int frame_length, len = 0;
|
|
|
- struct nbuf *frame;
|
|
|
uint16_t bd_status;
|
|
|
uint32_t addr, size, end;
|
|
|
int i;
|
|
@@ -835,12 +827,11 @@ static int fec_recv(struct eth_device *dev)
|
|
|
/*
|
|
|
* Get buffer address and size
|
|
|
*/
|
|
|
- frame = (struct nbuf *)readl(&rbd->data_pointer);
|
|
|
+ addr = readl(&rbd->data_pointer);
|
|
|
frame_length = readw(&rbd->data_length) - 4;
|
|
|
/*
|
|
|
* Invalidate data cache over the buffer
|
|
|
*/
|
|
|
- addr = (uint32_t)frame;
|
|
|
end = roundup(addr + frame_length, ARCH_DMA_MINALIGN);
|
|
|
addr &= ~(ARCH_DMA_MINALIGN - 1);
|
|
|
invalidate_dcache_range(addr, end);
|
|
@@ -849,16 +840,15 @@ static int fec_recv(struct eth_device *dev)
|
|
|
* Fill the buffer and pass it to upper layers
|
|
|
*/
|
|
|
#ifdef CONFIG_FEC_MXC_SWAP_PACKET
|
|
|
- swap_packet((uint32_t *)frame->data, frame_length);
|
|
|
+ swap_packet((uint32_t *)addr, frame_length);
|
|
|
#endif
|
|
|
- memcpy(buff, frame->data, frame_length);
|
|
|
+ memcpy(buff, (char *)addr, frame_length);
|
|
|
net_process_received_packet(buff, frame_length);
|
|
|
len = frame_length;
|
|
|
} else {
|
|
|
if (bd_status & FEC_RBD_ERR)
|
|
|
- printf("error frame: 0x%08lx 0x%08x\n",
|
|
|
- (ulong)rbd->data_pointer,
|
|
|
- bd_status);
|
|
|
+ printf("error frame: 0x%08x 0x%08x\n",
|
|
|
+ addr, bd_status);
|
|
|
}
|
|
|
|
|
|
/*
|