1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- #ifndef _GPXE_INFINIBAND_H
- #define _GPXE_INFINIBAND_H
-
- /** @file
- *
- * Infiniband protocol
- *
- */
-
- #include <stdint.h>
- #include <gpxe/netdevice.h>
-
- /** Infiniband hardware address length */
- #define IB_ALEN 20
- #define IB_HLEN 24
-
- /** An Infiniband Global Identifier */
- struct ib_gid {
- uint8_t bytes[16];
- };
-
- /** An Infiniband Global Route Header */
- struct ib_global_route_header {
- /** IP version, traffic class, and flow label
- *
- * 4 bits : Version of the GRH
- * 8 bits : Traffic class
- * 20 bits : Flow label
- */
- uint32_t ipver_tclass_flowlabel;
- /** Payload length */
- uint16_t paylen;
- /** Next header */
- uint8_t nxthdr;
- /** Hop limit */
- uint8_t hoplmt;
- /** Source GID */
- struct ib_gid sgid;
- /** Destiniation GID */
- struct ib_gid dgid;
- } __attribute__ (( packed ));
-
- /** An Infiniband MAC address */
- struct ib_mac {
- /** Queue pair number
- *
- * MSB must be zero; QPNs are only 24-bit.
- */
- uint32_t qpn;
- /** Port GID */
- struct ib_gid gid;
- } __attribute__ (( packed ));
-
- /** 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 */
|