Lines Matching +full:num +full:- +full:tx +full:- +full:queues

4  * Unified network-device I/O interface for Xen guest OSes.
24 * Copyright (c) 2003-2004, Keir Fraser
55 * feature 'feature-rx-notify' via xenbus. Otherwise the backend will assume
60 * "feature-split-event-channels" is introduced to separate guest TX
65 * channels for TX and RX, advertise them to backend as
66 * "event-channel-tx" and "event-channel-rx" respectively. If frontend
67 * doesn't want to use this feature, it just writes "event-channel"
72 * Multiple transmit and receive queues:
73 * If supported, the backend will write the key "multi-queue-max-queues" to
75 * number of queues.
77 * key "multi-queue-num-queues", set to the number they wish to use, which
79 * in "multi-queue-max-queues".
81 * Queues replicate the shared rings and event channels.
82 * "feature-split-event-channels" may optionally be used when using
83 * multiple queues, but is not mandatory.
86 * number of tx and rx rings.
88 * For frontends requesting just one queue, the usual event-channel and
89 * ring-ref keys are written as before, simplifying the backend processing
91 * multi-queue feature, and one that does, but requested only one queue.
93 * Frontends requesting two or more queues must not write the toplevel
94 * event-channel (or event-channel-{tx,rx}) and {tx,rx}-ring-ref keys,
95 * instead writing those keys under sub-keys having the name "queue-N" where
96 * N is the integer ID of the queue for which those keys belong. Queues
97 * are indexed from zero. For example, a frontend with two queues and split
98 * event channels must write the following set of queue-related keys:
100 * /local/domain/1/device/vif/0/multi-queue-num-queues = "2"
101 * /local/domain/1/device/vif/0/queue-0 = ""
102 * /local/domain/1/device/vif/0/queue-0/tx-ring-ref = "<ring-ref-tx0>"
103 * /local/domain/1/device/vif/0/queue-0/rx-ring-ref = "<ring-ref-rx0>"
104 * /local/domain/1/device/vif/0/queue-0/event-channel-tx = "<evtchn-tx0>"
105 * /local/domain/1/device/vif/0/queue-0/event-channel-rx = "<evtchn-rx0>"
106 * /local/domain/1/device/vif/0/queue-1 = ""
107 * /local/domain/1/device/vif/0/queue-1/tx-ring-ref = "<ring-ref-tx1>"
108 * /local/domain/1/device/vif/0/queue-1/rx-ring-ref = "<ring-ref-rx1"
109 * /local/domain/1/device/vif/0/queue-1/event-channel-tx = "<evtchn-tx1>"
110 * /local/domain/1/device/vif/0/queue-1/event-channel-rx = "<evtchn-rx1>"
113 * choose not to connect any queues, instead treating the request as an
114 * error. This includes scenarios where more (or fewer) queues were
117 * Mapping of packets to queues is considered to be a function of the
125 * "feature-no-csum-offload" should be used to turn IPv4 TCP/UDP checksum
127 * "feature-ipv6-csum-offload" should be used to turn IPv6 TCP/UDP checksum
132 * "feature-gso-tcpv4" and "feature-gso-tcpv6" advertise the capability to
139 * "feature-multicast-control" and "feature-dynamic-multicast-control"
142 * it may set "request-multicast-control". If the backend only advertises
143 * "feature-multicast-control" then "request-multicast-control" must be set
147 * "feature-dynamic-multicast-control" then "request-multicast-control"
149 * watch the value and re-sample on watch events.
151 * If the sampled value of "request-multicast-control" is set then the
156 * containing XEN_NETIF_EXTRA_TYPE_MCAST_{ADD,DEL} extra-info fragments as
159 * "request-multicast-control" is not set, however the filter should only
168 * significant amount of out-of-band data to be passed from frontend to
174 * /local/domain/X/backend/vif/<domid>/<vif>/feature-ctrl-ring = "1"
178 * /local/domain/<domid>/device/vif/<vif>/ctrl-ring-ref = <gref>
179 * /local/domain/<domid>/device/vif/<vif>/event-channel-ctrl = <port>
225 * sub-array of 'Array' containing bytes X thru Y inclusive, and '+' is
298 * (Buffer[] and Key[] are treated as shift-registers where the MSB of
299 * Buffer/Key[0] is considered 'left-most' and the LSB of Buffer/Key[N-1]
300 * is the 'right-most').
304 * If (left-most bit of Buffer[] is 1)
305 * Value ^= left-most 32 bits of Key[]
322 /* Pre-load prefix with the first 8 bytes of the key */ in xen_netif_toeplitz_hash()
340 * 'prefix' has now been left-shifted by 8, so in xen_netif_toeplitz_hash()
359 * +-----+-----+-----+-----+-----+-----+-----+-----+
361 * +-----+-----+-----+-----+-----+-----+-----+-----+
363 * +-----+-----+-----+-----+-----------------------+
396 * +-----+-----+-----+-----+-----+-----+-----+-----+
398 * +-----+-----+-----+-----+-----+-----+-----+-----+
400 * +-----+-----+-----+-----+
438 * +-----+-----+-----+-----+-----+-----+-----+-----+
440 * +-----+-----+-----+-----+-----+-----+-----+-----+
465 * --------------------------------------
478 * status = XEN_NETIF_CTRL_STATUS_NOT_SUPPORTED - Operation not
480 * XEN_NETIF_CTRL_STATUS_INVALID_PARAMETER - The algorithm is not
482 * XEN_NETIF_CTRL_STATUS_SUCCESS - Operation successful
486 * to queues (which is the default behaviour).
489 * ----------------------------------
503 * status = XEN_NETIF_CTRL_STATUS_NOT_SUPPORTED - Operation not supported
504 * XEN_NETIF_CTRL_STATUS_SUCCESS - Operation successful
511 * ----------------------------------
518 * former only calculated for non-TCP packets.
529 * status = XEN_NETIF_CTRL_STATUS_NOT_SUPPORTED - Operation not
531 * XEN_NETIF_CTRL_STATUS_INVALID_PARAMETER - One or more flag
534 * XEN_NETIF_CTRL_STATUS_SUCCESS - Operation successful
540 * is free to choose how it steers packets to queues.
543 * --------------------------------
558 * status = XEN_NETIF_CTRL_STATUS_NOT_SUPPORTED - Operation not
560 * XEN_NETIF_CTRL_STATUS_INVALID_PARAMETER - Key size is invalid
561 * XEN_NETIF_CTRL_STATUS_BUFFER_OVERFLOW - Key size is larger
564 * XEN_NETIF_CTRL_STATUS_SUCCESS - Operation successful
574 * The grant reference may be read-only and must remain valid until
578 * -----------------------------------------
593 * status = XEN_NETIF_CTRL_STATUS_NOT_SUPPORTED - Operation not supported
594 * XEN_NETIF_CTRL_STATUS_SUCCESS - Operation successful
601 * -------------------------------------
618 * status = XEN_NETIF_CTRL_STATUS_NOT_SUPPORTED - Operation not
620 * XEN_NETIF_CTRL_STATUS_INVALID_PARAMETER - Table size is invalid
621 * XEN_NETIF_CTRL_STATUS_SUCCESS - Operation successful
628 * ------------------------------------
639 * data[0] = grant reference of page containing the mapping (sub-)table
641 * data[1] = size of (sub-)table in entries
642 * data[2] = offset, in entries, of sub-table within overall table
646 * status = XEN_NETIF_CTRL_STATUS_NOT_SUPPORTED - Operation not
648 * XEN_NETIF_CTRL_STATUS_INVALID_PARAMETER - Table size or content
650 * XEN_NETIF_CTRL_STATUS_BUFFER_OVERFLOW - Table size is larger
653 * XEN_NETIF_CTRL_STATUS_SUCCESS - Operation successful
659 * +-----+-----+-----+-----+-----+-----+-----+-----+
661 * +-----+-----+-----+-----+-----+-----+-----+-----+
665 * +-----+-----+-----+-----+-----+-----+-----+-----+
666 * | mapping[N-2] | mapping[N-1] |
667 * +-----+-----+-----+-----+-----+-----+-----+-----+
671 * "multi-queue-num-queues" (see above).
673 * mapped by a single grant reference. Thus sub-tables within a
675 * with differing offset values. Specifying a new sub-table does not
677 * The grant reference may be read-only and must remain valid until
681 * -----------------------------------------
695 * status = XEN_NETIF_CTRL_STATUS_NOT_SUPPORTED - Operation not
697 * XEN_NETIF_CTRL_STATUS_INVALID_PARAMETER - The queue index is
699 * XEN_NETIF_CTRL_STATUS_SUCCESS - Operation successful
704 * ------------------------------------
719 * status = XEN_NETIF_CTRL_STATUS_NOT_SUPPORTED - Operation not
721 * XEN_NETIF_CTRL_STATUS_INVALID_PARAMETER - Operation failed
722 * XEN_NETIF_CTRL_STATUS_SUCCESS - Operation successful
732 * ------------------------------------
747 * status = XEN_NETIF_CTRL_STATUS_NOT_SUPPORTED - Operation not
749 * XEN_NETIF_CTRL_STATUS_INVALID_PARAMETER - Operation failed
750 * XEN_NETIF_CTRL_STATUS_SUCCESS - Operation successful
771 * This is the 'wire' format for transmit (frontend -> backend) packets:
773 * Fragment 1: netif_tx_request_t - flags = NETTXF_*
775 * [Extra 1: netif_extra_info_t] - (only if fragment 1 flags include
778 * [Extra N: netif_extra_info_t] - (only if extra N-1 flags include
781 * Fragment N: netif_tx_request_t - (only if fragment N-1 flags include
782 * NETTXF_more_data - flags on preceding
790 * (backend -> frontend) packets. Specifically, in a multi-fragment
797 * tx request data (netif_tx_request_t)
798 * ------------------------------------
801 * +-----+-----+-----+-----+-----+-----+-----+-----+
803 * +-----+-----+-----+-----+-----+-----+-----+-----+
805 * +-----+-----+-----+-----+
813 * tx response (netif_tx_response_t)
814 * ---------------------------------
817 * +-----+-----+-----+-----+-----+-----+-----+-----+
819 * +-----+-----+-----+-----+-----+-----+-----+-----+
821 * +-----+-----+-----+-----+
829 * This is the 'wire' format for receive (backend -> frontend) packets:
831 * Fragment 1: netif_rx_request_t - flags = NETRXF_*
833 * [Extra 1: netif_extra_info_t] - (only if fragment 1 flags include
836 * [Extra N: netif_extra_info_t] - (only if extra N-1 flags include
839 * Fragment N: netif_rx_request_t - (only if fragment N-1 flags include
840 * NETRXF_more_data - flags on preceding
848 * (frontend -> backend) packets. Specifically, in a multi-fragment
855 * -------------------------------
858 * +-----+-----+-----+-----+-----+-----+-----+-----+
860 * +-----+-----+-----+-----+-----+-----+-----+-----+
866 * ---------------------------------
869 * +-----+-----+-----+-----+-----+-----+-----+-----+
871 * +-----+-----+-----+-----+-----+-----+-----+-----+
876 * status: -ve: NETIF_RSP_*; +ve: Rx'ed pkt size.
891 * The struct therefore needs to fit into either a tx or rx slot and
902 * -------------------------------
907 * +-----+-----+-----+-----+-----+-----+-----+-----+
909 * +-----+-----+-----+-----+-----+-----+-----+-----+
910 * | padding for tx |
911 * +-----+-----+-----+-----+
915 * padding for tx: present only in the tx case due to 8 octet limit
922 * +-----+-----+-----+-----+-----+-----+-----+-----+
924 * +-----+-----+-----+-----+-----+-----+-----+-----+
940 * +-----+-----+-----+-----+-----+-----+-----+-----+
942 * +-----+-----+-----+-----+-----+-----+-----+-----+
956 * +-----+-----+-----+-----+-----+-----+-----+-----+
957 * |type |flags|htype| alg |LSB ---- value ---- MSB|
958 * +-----+-----+-----+-----+-----+-----+-----+-----+
962 * htype: Hash type (one of _XEN_NETIF_CTRL_HASH_TYPE_* - see above)
964 * XEN_NETIF_CTRL_HASH_TYPE_ALGORITHM_* - see above)
995 #define XEN_NETIF_EXTRA_TYPE_NONE (0) /* Never used - invalid */
1086 #define NETIF_RSP_DROPPED -2
1087 #define NETIF_RSP_ERROR -1
1097 * c-file-style: "BSD"
1098 * c-basic-offset: 4
1099 * tab-width: 4
1100 * indent-tabs-mode: nil