
Am Sonntag, den 15.01.2012, 12:28 -0500 schrieb Mike Frysinger:
On Sunday 15 January 2012 10:46:02 Stephan Linz wrote:
+/* Data buffer for LL TEMAC Rx and Tx direction */ +static unsigned char rx_buffer[PKTSIZE_ALIGN] __attribute((aligned(DMAALIGN))); +static unsigned char tx_buffer[PKTSIZE_ALIGN] __attribute((aligned(DMAALIGN)));
come code already declares PktBuf ... can't you use that ?
Hm, what do you mean exactly here?
These are the two DMA transfer buffers. I have no idea if there are buffers in the upper layer (NET) and how I can use it for DMA transfers. Therfore I create my own rx/tx buffers and copy data. That reduce the performance a little bit, but it's OK. Furthermore I have to use DMA safe buffers here (no cache, 32 byte alignment).
+static struct ll_temac_info ll_temac_info[] = {
this looks like a struct that should get allocated on the fly based on arguments given to the driver's registration func
OK, it wast a little bit RAM. We can optimize the code later. I want to see more testing results on differnet Microblaze and PPC platforms.
+int xilinx_ll_temac_initialize(bd_t *bis, struct ll_temac_info *devinf) ...
- dev = calloc(1, sizeof(*dev));
...
- /* Tell u-boot to get the addr from the env */
- for (i = 0; i < 6; i++)
dev->enetaddr[i] = 0;
the memory is already zero-ed by the call to calloc, so this for loop is useless (and if it wasn't, you'd still use memset())
Sure, we can remove this part in one of the next code optimization.