/* Construct request parameters */
create->res = cpu_to_be64 ( dma ( &queue->res_map, queue->res ) );
create->desc =
- cpu_to_be64 ( dma ( &queue->desc_map, queue->desc.tx ) );
+ cpu_to_be64 ( dma ( &queue->desc_map, queue->desc.raw ) );
create->qpl_id = cpu_to_be32 ( type->qpl );
create->notify_id = cpu_to_be32 ( type->irq );
+ create->desc_count = cpu_to_be16 ( queue->count );
+ if ( queue->cmplt.raw ) {
+ create->cmplt = cpu_to_be64 ( dma ( &queue->cmplt_map,
+ queue->cmplt.raw ) );
+ create->cmplt_count = cpu_to_be16 ( queue->count );
+ }
}
/**
create->notify_id = cpu_to_be32 ( type->irq );
create->res = cpu_to_be64 ( dma ( &queue->res_map, queue->res ) );
create->desc =
- cpu_to_be64 ( dma ( &queue->desc_map, queue->desc.rx ) );
+ cpu_to_be64 ( dma ( &queue->desc_map, queue->desc.raw ) );
create->cmplt =
- cpu_to_be64 ( dma ( &queue->cmplt_map, queue->cmplt.rx ) );
+ cpu_to_be64 ( dma ( &queue->cmplt_map, queue->cmplt.raw ) );
create->qpl_id = cpu_to_be32 ( type->qpl );
+ create->desc_count = cpu_to_be16 ( queue->count );
create->bufsz = cpu_to_be16 ( GVE_BUF_SIZE );
+ create->cmplt_count = cpu_to_be16 ( queue->count );
}
/**
uint32_t qpl_id;
/** Notification channel ID */
uint32_t notify_id;
+ /** Completion ring address */
+ uint64_t cmplt;
+ /** Number of descriptor ring entries */
+ uint16_t desc_count;
+ /** Number of completion ring entries */
+ uint16_t cmplt_count;
+ /** Reserved */
+ uint8_t reserved_b[4];
} __attribute__ (( packed ));
/** Create receive queue command */
uint64_t desc;
/** Queue page list ID */
uint32_t qpl_id;
- /** Reserved */
- uint8_t reserved_b[2];
+ /** Number of descriptor ring entries */
+ uint16_t desc_count;
/** Packet buffer size */
uint16_t bufsz;
+ /** Number of completion ring entries */
+ uint16_t cmplt_count;
+ /** Reserved */
+ uint8_t reserved[6];
} __attribute__ (( packed ));
/** Destroy transmit queue command */