diff options
Diffstat (limited to 'include/xen/interface/io/netif.h')
-rw-r--r-- | include/xen/interface/io/netif.h | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/include/xen/interface/io/netif.h b/include/xen/interface/io/netif.h index c50061db6098..70054cc0708d 100644 --- a/include/xen/interface/io/netif.h +++ b/include/xen/interface/io/netif.h | |||
@@ -51,6 +51,59 @@ | |||
51 | */ | 51 | */ |
52 | 52 | ||
53 | /* | 53 | /* |
54 | * Multiple transmit and receive queues: | ||
55 | * If supported, the backend will write the key "multi-queue-max-queues" to | ||
56 | * the directory for that vif, and set its value to the maximum supported | ||
57 | * number of queues. | ||
58 | * Frontends that are aware of this feature and wish to use it can write the | ||
59 | * key "multi-queue-num-queues", set to the number they wish to use, which | ||
60 | * must be greater than zero, and no more than the value reported by the backend | ||
61 | * in "multi-queue-max-queues". | ||
62 | * | ||
63 | * Queues replicate the shared rings and event channels. | ||
64 | * "feature-split-event-channels" may optionally be used when using | ||
65 | * multiple queues, but is not mandatory. | ||
66 | * | ||
67 | * Each queue consists of one shared ring pair, i.e. there must be the same | ||
68 | * number of tx and rx rings. | ||
69 | * | ||
70 | * For frontends requesting just one queue, the usual event-channel and | ||
71 | * ring-ref keys are written as before, simplifying the backend processing | ||
72 | * to avoid distinguishing between a frontend that doesn't understand the | ||
73 | * multi-queue feature, and one that does, but requested only one queue. | ||
74 | * | ||
75 | * Frontends requesting two or more queues must not write the toplevel | ||
76 | * event-channel (or event-channel-{tx,rx}) and {tx,rx}-ring-ref keys, | ||
77 | * instead writing those keys under sub-keys having the name "queue-N" where | ||
78 | * N is the integer ID of the queue for which those keys belong. Queues | ||
79 | * are indexed from zero. For example, a frontend with two queues and split | ||
80 | * event channels must write the following set of queue-related keys: | ||
81 | * | ||
82 | * /local/domain/1/device/vif/0/multi-queue-num-queues = "2" | ||
83 | * /local/domain/1/device/vif/0/queue-0 = "" | ||
84 | * /local/domain/1/device/vif/0/queue-0/tx-ring-ref = "<ring-ref-tx0>" | ||
85 | * /local/domain/1/device/vif/0/queue-0/rx-ring-ref = "<ring-ref-rx0>" | ||
86 | * /local/domain/1/device/vif/0/queue-0/event-channel-tx = "<evtchn-tx0>" | ||
87 | * /local/domain/1/device/vif/0/queue-0/event-channel-rx = "<evtchn-rx0>" | ||
88 | * /local/domain/1/device/vif/0/queue-1 = "" | ||
89 | * /local/domain/1/device/vif/0/queue-1/tx-ring-ref = "<ring-ref-tx1>" | ||
90 | * /local/domain/1/device/vif/0/queue-1/rx-ring-ref = "<ring-ref-rx1" | ||
91 | * /local/domain/1/device/vif/0/queue-1/event-channel-tx = "<evtchn-tx1>" | ||
92 | * /local/domain/1/device/vif/0/queue-1/event-channel-rx = "<evtchn-rx1>" | ||
93 | * | ||
94 | * If there is any inconsistency in the XenStore data, the backend may | ||
95 | * choose not to connect any queues, instead treating the request as an | ||
96 | * error. This includes scenarios where more (or fewer) queues were | ||
97 | * requested than the frontend provided details for. | ||
98 | * | ||
99 | * Mapping of packets to queues is considered to be a function of the | ||
100 | * transmitting system (backend or frontend) and is not negotiated | ||
101 | * between the two. Guests are free to transmit packets on any queue | ||
102 | * they choose, provided it has been set up correctly. Guests must be | ||
103 | * prepared to receive packets on any queue they have requested be set up. | ||
104 | */ | ||
105 | |||
106 | /* | ||
54 | * "feature-no-csum-offload" should be used to turn IPv4 TCP/UDP checksum | 107 | * "feature-no-csum-offload" should be used to turn IPv4 TCP/UDP checksum |
55 | * offload off or on. If it is missing then the feature is assumed to be on. | 108 | * offload off or on. If it is missing then the feature is assumed to be on. |
56 | * "feature-ipv6-csum-offload" should be used to turn IPv6 TCP/UDP checksum | 109 | * "feature-ipv6-csum-offload" should be used to turn IPv6 TCP/UDP checksum |