#ifndef _GPXE_INFINIBAND_H #define _GPXE_INFINIBAND_H /** @file * * Infiniband protocol * */ #include #include /** Infiniband hardware address length */ #define IB_ALEN 20 #define IB_HLEN 24 /** An Infiniband header * * This data structure doesn't represent the on-wire format, but does * contain all the information required by the driver to construct the * packet. */ struct ibhdr { /** Peer address */ uint8_t peer[IB_ALEN]; /** Network-layer protocol */ uint16_t proto; /** Reserved, must be zero */ uint16_t reserved; } __attribute__ (( packed )); extern struct ll_protocol infiniband_protocol; extern const char * ib_ntoa ( const void *ll_addr ); /** * Allocate Infiniband device * * @v priv_size Size of driver private data * @ret netdev Network device, or NULL */ static inline struct net_device * alloc_ibdev ( size_t priv_size ) { struct net_device *netdev; netdev = alloc_netdev ( priv_size ); if ( netdev ) { netdev->ll_protocol = &infiniband_protocol; } return netdev; } #endif /* _GPXE_INFINIBAND_H */