Lines Matching +full:wait +full:- +full:queue
1 .. SPDX-License-Identifier: GPL-2.0+
54 internal-api
63 Lower-level packet transport is implemented in the *packet transport layer
68 packet payloads to higher-level layers.
71 around command-type packet payloads, i.e. requests (sent from host to EC),
90 Refer to Documentation/driver-api/surface_aggregator/client.rst for
93 that chapter and the Documentation/driver-api/surface_aggregator/ssh.rst
104 -------
140 queue and pending set.
147 the packet queue and cleared when it is dequeued.
152 Packet Queue
153 ------------
155 The packet queue is the first of the two fundamental collections in the
156 packet transport layer. It is a priority queue, with priority of the
161 this queue via |ssh_ptl_submit|. Note that this includes control packets
163 re-submitted to this queue due to timeouts or NAK packets sent by the EC.
166 -----------
170 been transmitted, but wait for acknowledgment (e.g. the corresponding ACK
174 re-submitted due to a packet acknowledgment timeout or NAK. On such a
175 re-submission, packets are not removed from the pending set.
178 ------------------
182 next packet on the queue (if any) can be transmitted and, if so, removes it
183 from the queue and increments its counter for the number of transmission
195 Documentation/driver-api/surface_aggregator/ssh.rst for the reasoning behind
199 ---------------
209 well as initiating re-submission of all currently pending packets on
210 receival of a NAK message (re-submission in case of a NAK is similar to
211 re-submission due to timeout, see below for more details on that). Note that
213 receiver thread (whereas any failure-indicating completion will run on the
220 --------------
222 The packet acknowledgment timeout is a per-packet timeout for sequenced
223 packets, started when the respective packet begins (re-)transmission (i.e.
225 thread). It is used to trigger re-submission or, when the number of tries
229 work item (re-)scheduled to run when the next packet is set to time out. The
231 exceeded the timeout and, if there are any remaining packets, re-schedules
235 re-submitted if it still has some remaining tries left, or completed with
236 ``-ETIMEDOUT`` as status if not. Note that re-submission, in this case and
237 triggered by receival of a NAK, means that the packet is added to the queue
247 -----------------------
250 to the packet queue and one guarding access to the pending set. These
253 before the queue lock to avoid deadlocks.
258 queue lock and the packet timestamp must only be accessed while holding the
277 read-only access is only allowed when stale values are not critical.
301 -------
303 Requests are packets with a command-type payload, sent from host to EC to
307 all top-level representations, e.g. |ssam_request_sync| are built upon this
317 message with command-type payload (from EC to host). The party constructing
320 can wait for this response.
330 via its request ID (which happens on the packet layer's data-received
344 queue and pending set.
351 the request queue and cleared when it is dequeued.
356 Request Queue
357 -------------
359 The request queue is the first of the two fundamental collections in the
360 request transport layer. In contrast to the packet queue of the packet
361 transport layer, it is not a priority queue and the simple first come first
365 submitted to this queue via |ssh_rtl_submit|. Once submitted, requests may
366 not be re-submitted, and will not be re-submitted automatically on timeout.
372 -----------
380 ----------------
383 transmission. It checks if the next request on the request queue can be
391 --------------------------
403 Data-Received Callback
404 ----------------------
407 being received by the underlying packet transport layer via a data-type
408 frame. In general, this is expected to be a command-type payload.
418 --------------
420 The request-response-timeout is a per-request timeout for requests expecting
421 a response. It is used to ensure that a request does not wait indefinitely
427 essentially a work-item (re-)scheduled to run when the next request is set
429 requests that have timed out and completes them with ``-ETIMEDOUT`` as
430 status. Requests will not be re-submitted automatically. Instead, the issuer
438 -----------------------
441 request transport layer: One guarding access to the request queue and one
452 ensured by employing ``WRITE_ONCE()`` and ``READ_ONCE()``. Such read-only
467 easy-to-use interface for client drivers. It is represented by
475 ------------------
479 be the exception). This is done via an event-enable request (similarly,
480 events should be disabled via an event-disable request once no longer
494 enable-event request. This parameter does not influence the class of events
505 counting, storing the counter inside an RB-tree based mapping with event
511 the next section) via the top-level |ssam_notifier_register| and
515 --------------
538 All notifier callbacks are executed on a dedicated workqueue, the so-called
541 transport layer), it will be put on its respective event queue
542 (|ssam_event_queue|). From this event queue the completion work item of that
543 queue (running on the completion workqueue) will pick up the event and
547 There is one event queue per combination of target ID and target category.
554 -----------------------
557 provided by the lower-level request transport layer. In addition to this,
558 event (un-)registration is guarded by its own lock.
569 The controller state may be accessed (read-only) outside the state lock for
570 smoke-testing against invalid API usage (e.g. in |ssam_request_sync_submit|).
576 all non-initialization and non-shutdown functions may run concurrently with