[dpdk-dev] [PATCH] doc: announce API change for rte_ether.h
Bruce Richardson
bruce.richardson at intel.com
Mon Dec 14 17:00:25 CET 2015
On Mon, Dec 14, 2015 at 04:41:28PM +0100, Thomas Monjalon wrote:
> 2015-12-14 15:30, Bruce Richardson:
> > On Mon, Dec 14, 2015 at 03:54:06PM +0100, Thomas Monjalon wrote:
> > > 2015-12-10 15:27, Stephen Hemminger:
> > > > Plan to change to <net/ethernet.h> version of struct ether_addr in
> > > > DPDK 2.3. The change in DPDK source is trivial but it will impact
> > > > source compatablilty therefore notification is necessary.
> > > [...]
> > > > +* librte_ether: The structure ether_addr in DPDK will be replaced
> > > > + by using the standard header file <net/ethernet.h>. The structure
> > > > + size will be the same (no ABI impact), but the structure field name
> > > > + will change from addr_bytes[] to ether_addr_octet[].
> > >
> > >
> > > Acked-by: Thomas Monjalon <thomas.monjalon at 6wind.com>
> > >
> > > Any other votes for this API cleanup?
> > >
> > Are the structures and contents of net/ethernet.h the same on both Linux and
> > FreeBSD?
>
> Good question. I'm afraid the answer is no.
> In FreeBSD, it is ether_addr.octet[].
>
> Linux
> -----
>
> struct ether_addr
> {
> u_int8_t ether_addr_octet[ETH_ALEN];
> } __attribute__ ((__packed__));
>
> struct ether_header
> {
> u_int8_t ether_dhost[ETH_ALEN]; /* destination eth addr */
> u_int8_t ether_shost[ETH_ALEN]; /* source ether addr */
> u_int16_t ether_type; /* packet type ID field */
> } __attribute__ ((__packed__));
>
> FreeBSD
> -------
>
> struct ether_addr {
> u_char octet[ETHER_ADDR_LEN];
> } __packed;
>
> struct ether_header {
> u_char ether_dhost[ETHER_ADDR_LEN];
> u_char ether_shost[ETHER_ADDR_LEN];
> u_short ether_type;
> } __packed;
>
Unfortunate. While the idea seems good, I think the structures being different
on the different OS's is a problem that need to be solved before we make such
a change.
/Bruce
More information about the dev
mailing list