Re: [PATCH] starfire: use BUILD_BUG_ON for netdrv_addr_t
From: David Miller <davem@davemloft.net>
Date: 2010-08-28 22:41:09
From: Akinobu Mita <akinobu.mita@gmail.com> Date: Sat, 28 Aug 2010 14:08:45 +0900
Detect size mismatch for netdrv_addr_t at build time rather than checking at module load time. Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com> Cc: Ion Badulescu <ionut@badula.org> Cc: "David S. Miller" <davem@davemloft.net> Cc: netdev@vger.kernel.org
Applied, but I suspect we will see some interesting build failures now if that ugly and brittle ifdef test which constrols the netdrv_addr_t define isn't %100 accurate. Fujita-san, what this driver does is actually pretty reasonable. It has two kinds of descriptors, one supports 32-bit addresses and the other supports 64-bit addresses. It wants to CPP test which one to use so that the driver is not burdoned with two duplicated sets of routines. Maybe we should provide a DMA_ADDR_T_SIZE or similar macro? What do you think? Anything is better than what it uses now: /* * This SUCKS. * We need a much better method to determine if dma_addr_t is 64-bit. */ #if (defined(__i386__) && defined(CONFIG_HIGHMEM64G)) || defined(__x86_64__) || defined (__ia64__) || defined(__alpha__) || defined(__mips64__) || (defined(__mips__) && defined(CONFIG_HIGHMEM) && defined(CONFIG_64BIT_PHYS_ADDR)) :-)