On Wed, Feb 07, 2018 at 01:00:14PM +0100, Paolo Bonzini wrote: > 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.
This is my "fault". At some point I got tired of this pattern so I factored out the header and the payload. I'll reconsider with this unification in mind. Roman.