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.

Reply via email to