[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <46890AED.7070906@garzik.org>
Date: Mon, 02 Jul 2007 10:25:49 -0400
From: Jeff Garzik <jeff@...zik.org>
To: Arjan van de Ven <arjan@...ux.intel.com>
CC: Ayyappan Veeraiyan <ayyappan.veeraiyan@...el.com>,
netdev@...r.kernel.org, auke-jan.h.kok@...el.com,
akpm@...ux-foundation.org
Subject: Re: [PATCH] ixgbe: Introduce new 10GbE driver for Intel 82598 based
PCI Express adapters...
Arjan van de Ven wrote:
> >> + u32 alloc_rx_buff_failed;
>>> + struct {
>>> + unsigned int rx_csum_enabled :1;
>>> + unsigned int msi_capable :1;
>>> + unsigned int msi_enabled :1;
>>> + unsigned int msix_capable :1;
>>> + unsigned int msix_enabled :1;
>>> + unsigned int imir_enabled :1;
>>> + unsigned int in_netpoll :1;
>>> + } flags;
>>
>> always avoid bitfields. They generate horrible code, and endian
>> problems abound (though no endian problems are apparent here).
>
> they generate no worse code than open coding the checks for these
> feature flags...
That would be the logical assumption, but reality does not bear that
logic out to be true.
I'm not sure whether gcc is confused about ABI alignment or such, on
various platforms, but every time I look at the asm generated it is
/not/ equivalent to open-coded feature flags and bitwise logic. Often
it is demonstrably worse.
The same is true for icc too :) Bitfields are just bad juju for
compilers, I guess.
Jeff
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists