On 06/02/2018 21:30, Roman Kagan wrote: > +/* NdisInitialize message */ > +struct rndis_initialize_request { > + uint32_t req_id; > + uint32_t major_ver; > + uint32_t minor_ver; > + uint32_t max_xfer_size; > +}; > + > +/* Response to NdisInitialize */ > +struct rndis_initialize_complete { > + uint32_t req_id; > + uint32_t status; > + uint32_t major_ver; > + uint32_t minor_ver; > + uint32_t dev_flags; > + uint32_t medium; > + uint32_t max_pkt_per_msg; > + uint32_t max_xfer_size; > + uint32_t pkt_alignment_factor; > + uint32_t af_list_offset; > + uint32_t af_list_size; > +}; > + > +/* Call manager devices only: Information about an address family */ > +/* supported by the device is appended to the response to NdisInitialize. */ > +struct rndis_co_address_family { > + uint32_t address_family; > + uint32_t major_ver; > + uint32_t minor_ver; > +}; > + > +/* NdisHalt message */ > +struct rndis_halt_request { > + uint32_t req_id; > +}; > + > +/* NdisQueryRequest message */ > +struct rndis_query_request { > + uint32_t req_id; > + uint32_t oid; > + uint32_t info_buflen; > + uint32_t info_buf_offset; > + uint32_t dev_vc_handle; > +}; > + > +/* Response to NdisQueryRequest */ > +struct rndis_query_complete { > + uint32_t req_id; > + uint32_t status; > + uint32_t info_buflen; > + uint32_t info_buf_offset; > +}; > + > +/* NdisSetRequest message */ > +struct rndis_set_request { > + uint32_t req_id; > + uint32_t oid; > + uint32_t info_buflen; > + uint32_t info_buf_offset; > + uint32_t dev_vc_handle; > +}; > + > +/* Response to NdisSetRequest */ > +struct rndis_set_complete { > + uint32_t req_id; > + uint32_t status; > +}; > + > +/* NdisReset message */ > +struct rndis_reset_request { > + uint32_t reserved; > +}; > + > +/* Response to NdisReset */ > +struct rndis_reset_complete { > + uint32_t status; > + uint32_t addressing_reset; > +}; > + > +/* NdisMIndicateStatus message */ > +struct rndis_indicate_status { > + uint32_t status; > + uint32_t status_buflen; > + uint32_t status_buf_offset; > +}; > + > +/* Diagnostic information passed as the status buffer in */ > +/* struct rndis_indicate_status messages signifying error conditions. */ > +struct rndis_diagnostic_info { > + uint32_t diag_status; > + uint32_t error_offset; > +}; > + > +/* NdisKeepAlive message */ > +struct rndis_keepalive_request { > + uint32_t req_id; > +}; > + > +/* Response to NdisKeepAlive */ > +struct rndis_keepalive_complete { > + uint32_t req_id; > + uint32_t status; > +}; > +
Hmm, these are a bit harder to unify with hw/usb/dev-network.c. Still not _that_ hard, just that the USB version has two fields for message type/length at the beginning. Probably worth it even if we keep two versions of the core RNDIS code. Paolo