diff options
Diffstat (limited to 'qemu/roms/ipxe/src/include/ipxe/rndis.h')
-rw-r--r-- | qemu/roms/ipxe/src/include/ipxe/rndis.h | 370 |
1 files changed, 0 insertions, 370 deletions
diff --git a/qemu/roms/ipxe/src/include/ipxe/rndis.h b/qemu/roms/ipxe/src/include/ipxe/rndis.h deleted file mode 100644 index bcb6d8e6a..000000000 --- a/qemu/roms/ipxe/src/include/ipxe/rndis.h +++ /dev/null @@ -1,370 +0,0 @@ -#ifndef _IPXE_RNDIS_H -#define _IPXE_RNDIS_H - -/** @file - * - * Remote Network Driver Interface Specification - * - */ - -FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); - -#include <stdint.h> -#include <ipxe/netdevice.h> -#include <ipxe/iobuf.h> - -/** Maximum time to wait for a transaction to complete - * - * This is a policy decision. - */ -#define RNDIS_MAX_WAIT_MS 1000 - -/** RNDIS message header */ -struct rndis_header { - /** Message type */ - uint32_t type; - /** Message length */ - uint32_t len; -} __attribute__ (( packed )); - -/** RNDIS initialise message */ -#define RNDIS_INITIALISE_MSG 0x00000002UL - -/** RNDIS initialise message */ -struct rndis_initialise_message { - /** Request ID */ - uint32_t id; - /** Major version */ - uint32_t major; - /** Minor version */ - uint32_t minor; - /** Maximum transfer size */ - uint32_t mtu; -} __attribute__ (( packed )); - -/** Request ID used for initialisation - * - * This is a policy decision. - */ -#define RNDIS_INIT_ID 0xe110e110UL - -/** RNDIS major version */ -#define RNDIS_VERSION_MAJOR 1 - -/** RNDIS minor version */ -#define RNDIS_VERSION_MINOR 0 - -/** RNDIS maximum transfer size - * - * This is a policy decision. - */ -#define RNDIS_MTU 2048 - -/** RNDIS initialise completion */ -#define RNDIS_INITIALISE_CMPLT 0x80000002UL - -/** RNDIS initialise completion */ -struct rndis_initialise_completion { - /** Request ID */ - uint32_t id; - /** Status */ - uint32_t status; - /** Major version */ - uint32_t major; - /** Minor version */ - uint32_t minor; - /** Device flags */ - uint32_t flags; - /** Medium */ - uint32_t medium; - /** Maximum packets per transfer */ - uint32_t max_pkts; - /** Maximum transfer size */ - uint32_t mtu; - /** Packet alignment factor */ - uint32_t align; - /** Reserved */ - uint32_t reserved; -} __attribute__ (( packed )); - -/** RNDIS halt message */ -#define RNDIS_HALT_MSG 0x00000003UL - -/** RNDIS halt message */ -struct rndis_halt_message { - /** Request ID */ - uint32_t id; -} __attribute__ (( packed )); - -/** RNDIS query OID message */ -#define RNDIS_QUERY_MSG 0x00000004UL - -/** RNDIS set OID message */ -#define RNDIS_SET_MSG 0x00000005UL - -/** RNDIS query or set OID message */ -struct rndis_oid_message { - /** Request ID */ - uint32_t id; - /** Object ID */ - uint32_t oid; - /** Information buffer length */ - uint32_t len; - /** Information buffer offset */ - uint32_t offset; - /** Reserved */ - uint32_t reserved; -} __attribute__ (( packed )); - -/** RNDIS query OID completion */ -#define RNDIS_QUERY_CMPLT 0x80000004UL - -/** RNDIS query OID completion */ -struct rndis_query_completion { - /** Request ID */ - uint32_t id; - /** Status */ - uint32_t status; - /** Information buffer length */ - uint32_t len; - /** Information buffer offset */ - uint32_t offset; -} __attribute__ (( packed )); - -/** RNDIS set OID completion */ -#define RNDIS_SET_CMPLT 0x80000005UL - -/** RNDIS set OID completion */ -struct rndis_set_completion { - /** Request ID */ - uint32_t id; - /** Status */ - uint32_t status; -} __attribute__ (( packed )); - -/** RNDIS reset message */ -#define RNDIS_RESET_MSG 0x00000006UL - -/** RNDIS reset message */ -struct rndis_reset_message { - /** Reserved */ - uint32_t reserved; -} __attribute__ (( packed )); - -/** RNDIS reset completion */ -#define RNDIS_RESET_CMPLT 0x80000006UL - -/** RNDIS reset completion */ -struct rndis_reset_completion { - /** Status */ - uint32_t status; - /** Addressing reset */ - uint32_t addr; -} __attribute__ (( packed )); - -/** RNDIS indicate status message */ -#define RNDIS_INDICATE_STATUS_MSG 0x00000007UL - -/** RNDIS diagnostic information */ -struct rndis_diagnostic_info { - /** Status */ - uint32_t status; - /** Error offset */ - uint32_t offset; -} __attribute__ (( packed )); - -/** RNDIS indicate status message */ -struct rndis_indicate_status_message { - /** Status */ - uint32_t status; - /** Status buffer length */ - uint32_t len; - /** Status buffer offset */ - uint32_t offset; - /** Diagnostic information (optional) */ - struct rndis_diagnostic_info diag[0]; -} __attribute__ (( packed )); - -/** RNDIS status codes */ -enum rndis_status { - /** Device is connected to a network medium */ - RNDIS_STATUS_MEDIA_CONNECT = 0x4001000bUL, - /** Device is disconnected from the medium */ - RNDIS_STATUS_MEDIA_DISCONNECT = 0x4001000cUL, - /** Unknown start-of-day status code */ - RNDIS_STATUS_WTF_WORLD = 0x40020006UL, -}; - -/** RNDIS keepalive message */ -#define RNDIS_KEEPALIVE_MSG 0x00000008UL - -/** RNDIS keepalive message */ -struct rndis_keepalive_message { - /** Request ID */ - uint32_t id; -} __attribute__ (( packed )); - -/** RNDIS keepalive completion */ -#define RNDIS_KEEPALIVE_CMPLT 0x80000008UL - -/** RNDIS keepalive completion */ -struct rndis_keepalive_completion { - /** Request ID */ - uint32_t id; - /** Status */ - uint32_t status; -} __attribute__ (( packed )); - -/** RNDIS packet message */ -#define RNDIS_PACKET_MSG 0x00000001UL - -/** RNDIS packet field */ -struct rndis_packet_field { - /** Offset */ - uint32_t offset; - /** Length */ - uint32_t len; -} __attribute__ (( packed )); - -/** RNDIS packet message */ -struct rndis_packet_message { - /** Data */ - struct rndis_packet_field data; - /** Out-of-band data records */ - struct rndis_packet_field oob; - /** Number of out-of-band data records */ - uint32_t oob_count; - /** Per-packet information record */ - struct rndis_packet_field ppi; - /** Reserved */ - uint32_t reserved; -} __attribute__ (( packed )); - -/** RNDIS packet record */ -struct rndis_packet_record { - /** Length */ - uint32_t len; - /** Type */ - uint32_t type; - /** Offset */ - uint32_t offset; -} __attribute__ (( packed )); - -/** OID for packet filter */ -#define RNDIS_OID_GEN_CURRENT_PACKET_FILTER 0x0001010eUL - -/** Packet filter bits */ -enum rndis_packet_filter { - /** Unicast packets */ - RNDIS_FILTER_UNICAST = 0x00000001UL, - /** Multicast packets */ - RNDIS_FILTER_MULTICAST = 0x00000002UL, - /** All multicast packets */ - RNDIS_FILTER_ALL_MULTICAST = 0x00000004UL, - /** Broadcast packets */ - RNDIS_FILTER_BROADCAST = 0x00000008UL, - /** All packets */ - RNDIS_FILTER_PROMISCUOUS = 0x00000020UL -}; - -/** OID for media status */ -#define RNDIS_OID_GEN_MEDIA_CONNECT_STATUS 0x00010114UL - -/** OID for permanent MAC address */ -#define RNDIS_OID_802_3_PERMANENT_ADDRESS 0x01010101UL - -/** OID for current MAC address */ -#define RNDIS_OID_802_3_CURRENT_ADDRESS 0x01010102UL - -struct rndis_device; - -/** RNDIS device operations */ -struct rndis_operations { - /** - * Open RNDIS device - * - * @v rndis RNDIS device - * @ret rc Return status code - */ - int ( * open ) ( struct rndis_device *rndis ); - /** - * Close RNDIS device - * - * @v rndis RNDIS device - */ - void ( * close ) ( struct rndis_device *rndis ); - /** - * Transmit packet - * - * @v rndis RNDIS device - * @v iobuf I/O buffer - * @ret rc Return status code - * - * If this method returns success then the RNDIS device must - * eventually report completion via rndis_tx_complete(). - */ - int ( * transmit ) ( struct rndis_device *rndis, - struct io_buffer *iobuf ); - /** - * Poll for completed and received packets - * - * @v rndis RNDIS device - */ - void ( * poll ) ( struct rndis_device *rndis ); -}; - -/** An RNDIS device */ -struct rndis_device { - /** Network device */ - struct net_device *netdev; - /** Device name */ - const char *name; - /** RNDIS operations */ - struct rndis_operations *op; - /** Driver private data */ - void *priv; - - /** Request ID for current blocking request */ - unsigned int wait_id; - /** Return status code for current blocking request */ - int wait_rc; -}; - -/** - * Initialise an RNDIS device - * - * @v rndis RNDIS device - * @v op RNDIS device operations - */ -static inline void rndis_init ( struct rndis_device *rndis, - struct rndis_operations *op ) { - - rndis->op = op; -} - -extern void rndis_tx_complete_err ( struct rndis_device *rndis, - struct io_buffer *iobuf, int rc ); -extern int rndis_tx_defer ( struct rndis_device *rndis, - struct io_buffer *iobuf ); -extern void rndis_rx ( struct rndis_device *rndis, struct io_buffer *iobuf ); -extern void rndis_rx_err ( struct rndis_device *rndis, struct io_buffer *iobuf, - int rc ); - -extern struct rndis_device * alloc_rndis ( size_t priv_len ); -extern int register_rndis ( struct rndis_device *rndis ); -extern void unregister_rndis ( struct rndis_device *rndis ); -extern void free_rndis ( struct rndis_device *rndis ); - -/** - * Complete message transmission - * - * @v rndis RNDIS device - * @v iobuf I/O buffer - */ -static inline void rndis_tx_complete ( struct rndis_device *rndis, - struct io_buffer *iobuf ) { - - rndis_tx_complete_err ( rndis, iobuf, 0 ); -} - -#endif /* _IPXE_RNDIS_H */ |