X-Git-Url: http://git.etherboot.org/mirror/winof/.git/blobdiff_plain/133a11b8aabace5ce74ec32f7e21dd882a844683..3dd765e152d0a817b5ed25f9258249308382cbe2:/core/winverbs/wv_ioctl.h diff --git a/core/winverbs/wv_ioctl.h b/core/winverbs/wv_ioctl.h index 5086e79b..898a3920 100644 --- a/core/winverbs/wv_ioctl.h +++ b/core/winverbs/wv_ioctl.h @@ -81,9 +81,9 @@ enum { WV_IO_FUNCTION_QP_ATTACH, WV_IO_FUNCTION_QP_DETACH, WV_IO_FUNCTION_QP_CANCEL, - WV_IO_FUNCTION_ADDRESS_QUERY, WV_IO_FUNCTION_EP_CREATE, WV_IO_FUNCTION_EP_DESTROY, + WV_IO_FUNCTION_EP_MODIFY, WV_IO_FUNCTION_EP_BIND, WV_IO_FUNCTION_EP_REJECT, WV_IO_FUNCTION_EP_CONNECT, @@ -95,10 +95,9 @@ enum { WV_IO_FUNCTION_EP_MULTICAST_JOIN, WV_IO_FUNCTION_EP_MULTICAST_LEAVE, WV_IO_FUNCTION_EP_CANCEL, - WV_IO_FUNCTION_LISTEN, - WV_IO_FUNCTION_LISTEN_DESTROY, - WV_IO_FUNCTION_LISTEN_GET_REQUEST, - WV_IO_FUNCTION_LISTEN_CANCEL, + WV_IO_FUNCTION_EP_LISTEN, + WV_IO_FUNCTION_EP_GET_REQUEST, + WV_IO_FUNCTION_PD_CANCEL, WV_IO_FUNCTION_MAX }; @@ -150,6 +149,10 @@ enum { #define WV_IOCTL_PD_DEALLOCATE WV_IOCTL(WV_IO_FUNCTION_BASE + \ WV_IO_FUNCTION_PD_DEALLOCATE) +// UINT64 Id / none +#define WV_IOCTL_PD_CANCEL WV_IOCTL(WV_IO_FUNCTION_BASE + \ + WV_IO_FUNCTION_PD_CANCEL) + // WV_IO_MEMORY_REGISTER / WV_IO_MEMORY_KEYS #define WV_IOCTL_MEMORY_REGISTER WV_IOCTL(WV_IO_FUNCTION_BASE + \ WV_IO_FUNCTION_MEMORY_REGISTER) @@ -230,7 +233,7 @@ enum { #define WV_IOCTL_QP_QUERY WV_IOCTL(WV_IO_FUNCTION_BASE + \ WV_IO_FUNCTION_QP_QUERY) -// WV_IO_QP_ATTRIBUTES / none +// WV_IO_QP_ATTRIBUTES / verbs specific #define WV_IOCTL_QP_MODIFY WV_IOCTL(WV_IO_FUNCTION_BASE + \ WV_IO_FUNCTION_QP_MODIFY) @@ -246,43 +249,69 @@ enum { #define WV_IOCTL_QP_CANCEL WV_IOCTL(WV_IO_FUNCTION_BASE + \ WV_IO_FUNCTION_QP_CANCEL) -// TODO -#define WV_IOCTL_ADDRESS_QUERY WV_IOCTL(WV_IO_FUNCTION_BASE + \ - WV_IO_FUNCTION_ADDRESS_QUERY) +// UINT64 EpType / UINT64 Id #define WV_IOCTL_EP_CREATE WV_IOCTL(WV_IO_FUNCTION_BASE + \ WV_IO_FUNCTION_EP_CREATE) + +// UINT64 Id / none #define WV_IOCTL_EP_DESTROY WV_IOCTL(WV_IO_FUNCTION_BASE + \ WV_IO_FUNCTION_EP_DESTROY) + +// WV_IO_ID + UINT8[] / none +#define WV_IOCTL_EP_MODIFY WV_IOCTL(WV_IO_FUNCTION_BASE + \ + WV_IO_FUNCTION_EP_MODIFY) + +// WV_IO_EP_BIND / WV_IO_EP_BIND #define WV_IOCTL_EP_BIND WV_IOCTL(WV_IO_FUNCTION_BASE + \ WV_IO_FUNCTION_EP_BIND) + +// WV_IO_ID + UINT8[] / none #define WV_IOCTL_EP_REJECT WV_IOCTL(WV_IO_FUNCTION_BASE + \ WV_IO_FUNCTION_EP_REJECT) + +// WV_IO_EP_CONNECT / none #define WV_IOCTL_EP_CONNECT WV_IOCTL(WV_IO_FUNCTION_BASE + \ WV_IO_FUNCTION_EP_CONNECT) + +// WV_IO_EP_ACCEPT / verbs specific #define WV_IOCTL_EP_ACCEPT WV_IOCTL(WV_IO_FUNCTION_BASE + \ WV_IO_FUNCTION_EP_ACCEPT) + +// WV_IO_EP_DISCONNECT/ verbs specific #define WV_IOCTL_EP_DISCONNECT WV_IOCTL(WV_IO_FUNCTION_BASE + \ WV_IO_FUNCTION_EP_DISCONNECT) + +// UINT64 Id / none #define WV_IOCTL_EP_DISCONNECT_NOTIFY WV_IOCTL(WV_IO_FUNCTION_BASE + \ WV_IO_FUNCTION_EP_DISCONNECT_NOTIFY) + +// UINT64 Id / WV_IO_EP_ATTRIBUTES #define WV_IOCTL_EP_QUERY WV_IOCTL(WV_IO_FUNCTION_BASE + \ WV_IO_FUNCTION_EP_QUERY) + +// TODO #define WV_IOCTL_EP_LOOKUP WV_IOCTL(WV_IO_FUNCTION_BASE + \ WV_IO_FUNCTION_EP_LOOKUP) + +// TODO #define WV_IOCTL_EP_MULTICAST_JOIN WV_IOCTL(WV_IO_FUNCTION_BASE + \ WV_IO_FUNCTION_EP_MULTICAST_JOIN) + +// TODO #define WV_IOCTL_EP_MULTICAST_LEAVE WV_IOCTL(WV_IO_FUNCTION_BASE + \ WV_IO_FUNCTION_EP_MULTICAST_LEAVE) + +// UINT64 Id / none #define WV_IOCTL_EP_CANCEL WV_IOCTL(WV_IO_FUNCTION_BASE + \ WV_IO_FUNCTION_EP_CANCEL) -#define WV_IOCTL_LISTEN WV_IOCTL(WV_IO_FUNCTION_BASE + \ - WV_IO_FUNCTION_LISTEN) -#define WV_IOCTL_LISTEN_DESTROY WV_IOCTL(WV_IO_FUNCTION_BASE + \ - WV_IO_FUNCTION_LISTEN_DESTROY) -#define WV_IOCTL_LISTEN_GET_REQUEST WV_IOCTL(WV_IO_FUNCTION_BASE + \ - WV_IO_FUNCTION_LISTEN_GET_REQUEST) -#define WV_IOCTL_LISTEN_CANCEL WV_IOCTL(WV_IO_FUNCTION_BASE + \ - WV_IO_FUNCTION_LISTEN_CANCEL) + +// WV_IO_EP_LISTEN / none +#define WV_IOCTL_EP_LISTEN WV_IOCTL(WV_IO_FUNCTION_BASE + \ + WV_IO_FUNCTION_EP_LISTEN) + +// WV_IO_EP_GET_REQUEST / none +#define WV_IOCTL_EP_GET_REQUEST WV_IOCTL(WV_IO_FUNCTION_BASE + \ + WV_IO_FUNCTION_EP_GET_REQUEST) #define WV_IOCTL_MIN WV_IO_FUNCTION_BASE + WV_IO_FUNCTION_MIN #define WV_IOCTL_MAX WV_IO_FUNCTION_BASE + WV_IO_FUNCTION_MAX @@ -478,8 +507,8 @@ typedef struct _WV_IO_AH_CREATE } WV_IO_AH_CREATE; #define WV_CQ_ERROR 0 -#define WV_CQ_SOLICITED 1 -#define WV_CQ_NEXT_COMPLETION 2 +#define WV_CQ_NEXT_COMPLETION 1 +#define WV_CQ_SOLICITED 2 typedef struct _WV_IO_SRQ_ATTRIBUTES { @@ -592,20 +621,132 @@ typedef struct _WV_IO_QP_MULTICAST } WV_IO_QP_MULTICAST; -// TODO: -//WV_IO_ADDRESS_QUERY -//WV_IO_EP_CREATE -//WV_IO_EP_BIND -//WV_IO_EP_REJECT -//WV_IO_EP_CONNECT -//WV_IO_EP_ACCEPT -//WV_IO_EP_DISCONNECT -//WV_IO_EP_DISCONNECT_NOTIFY -//WV_IO_EP_QUERY -//WV_IO_EP_LOOKUP -//WV_IO_EP_MULTICAST_JOIN -//WV_IO_EP_MULTICAST_LEAVE -//WV_IO_LISTEN -//WV_IO_LISTEN_GET_REQUEST +// Windows kernel does not define sockaddr* pre-Vista +typedef struct _WV_IO_SOCKADDR +{ + UINT16 SaFamily; + UINT8 SaData[14]; + +} WV_IO_SOCKADDR; + +typedef struct _WV_IO_SOCKADDR_IN +{ + UINT16 SinFamily; + UINT16 SinPort; + UINT32 SinAddr; + UINT8 SinZero[8]; + +} WV_IO_SOCKADDR_IN; + +typedef struct _WV_IO_SOCKADDR_IN6 +{ + UINT16 Sin6Family; + UINT16 Sin6Port; + UINT32 Sin6FlowInfo; + UINT8 Sin6Addr[16]; + UINT32 Sin6ScopeId; + +} WV_IO_SOCKADDR_IN6; + +typedef struct _WV_IO_SOCKADDR_DATA +{ + union + { + WV_IO_SOCKADDR Sa; + WV_IO_SOCKADDR_IN In; + WV_IO_SOCKADDR_IN6 In6; + + } SockAddr; + + UINT32 Reserved; + +} WV_IO_SOCKADDR_DATA; + +typedef struct _WV_IO_DEVICE_ADDRESS +{ + NET64 DeviceGuid; + NET16 Pkey; + UINT8 PortNumber; + UINT8 Reserved[5]; + +} WV_IO_DEVICE_ADDRESS; + +typedef struct _WV_IO_EP_BIND +{ + UINT64 Id; + WV_IO_SOCKADDR_DATA Address; + WV_IO_DEVICE_ADDRESS Device; + +} WV_IO_EP_BIND; + +#define WV_IO_EP_OPTION_ROUTE 0x00000001 + +#define WV_IO_EP_TYPE_CONNECT 0x0106 +#define WV_IO_EP_TYPE_DATAGRAM 0x0111 + +typedef struct _WV_IO_EP_LISTEN +{ + UINT64 Id; + UINT64 Backlog; + +} WV_IO_EP_LISTEN; + +typedef struct _WV_IO_EP_GET_REQUEST +{ + UINT64 Id; + UINT64 EpId; + +} WV_IO_EP_GET_REQUEST; + +typedef struct _WV_IO_CONNECT_PARAM +{ + UINT64 ResponderResources; + UINT64 InitiatorDepth; + UINT8 RetryCount; + UINT8 RnrRetryCount; + UINT8 DataLength; + UINT8 Reserved[5]; + UINT8 Data[56]; + +} WV_IO_CONNECT_PARAM; + +typedef struct _WV_IO_EP_CONNECT +{ + UINT64 Id; + UINT64 QpId; + WV_IO_SOCKADDR_DATA PeerAddress; + WV_IO_CONNECT_PARAM Param; + +} WV_IO_EP_CONNECT; + +typedef struct _WV_IO_EP_ACCEPT +{ + UINT64 Id; + UINT64 QpId; + WV_IO_CONNECT_PARAM Param; + +} WV_IO_EP_ACCEPT; + +typedef struct _WV_IO_EP_ATTRIBUTES +{ + WV_IO_SOCKADDR_DATA LocalAddress; + WV_IO_SOCKADDR_DATA PeerAddress; + WV_IO_DEVICE_ADDRESS Device; + + union { + WV_IO_CONNECT_PARAM Connect; + UINT64 Backlog; + + } Param; + + +} WV_IO_EP_ATTRIBUTES; + +typedef struct _WV_IO_EP_DISCONNECT +{ + UINT64 Id; + UINT64 QpId; + +} WV_IO_EP_DISCONNECT; #endif // _WV_IOCTL_H_