+ if ( gve->options & ( 1 << GVE_OPT_GQI_QPL ) ) {
+ /* GQI-QPL: in-order queues, queue page list addressing */
+ gve->mode = GVE_MODE_QPL;
+ } else if ( gve->options & ( 1 << GVE_OPT_GQI_RDA ) ) {
+ /* GQI-RDA: in-order queues, raw DMA addressing */
+ gve->mode = 0;
+ } else if ( gve->options & ( 1 << GVE_OPT_DQO_QPL ) ) {
+ /* DQO-QPL: out-of-order queues, queue page list addressing */
+ gve->mode = ( GVE_MODE_DQO | GVE_MODE_QPL );
+ } else if ( gve->options & ( 1 << GVE_OPT_DQO_RDA ) ) {
+ /* DQO-RDA: out-of-order queues, raw DMA addressing */
+ gve->mode = GVE_MODE_DQO;
+ } else {
+ /* No options matched: assume the original GQI-QPL mode */
+ gve->mode = GVE_MODE_QPL;
+ }