Lines Matching full:consumer

18 	/* Hinder the adjacent cache prefetcher to prefetch the consumer
22 u32 consumer ____cacheline_aligned_in_smp;
60 * consumer. For the Tx and fill rings, the kernel is the consumer and
63 * producer consumer
65 * if (LOAD ->consumer) { (A) LOAD.acq ->producer (C)
67 * STORE.rel ->producer (B) STORE.rel ->consumer (D)
73 * the producer pointer. If this barrier was missing, the consumer
75 * before the producer has written the new data. The consumer would in
78 * (C) protects the consumer from speculatively loading the data before
84 * (A) is a control dependency that separates the load of ->consumer
85 * from the stores of $data. In case ->consumer indicates there is no
90 * store of the consumer pointer. If we did not have this memory
91 * barrier, the producer could observe the consumer pointer being set
92 * and overwrite the data with a new value before the consumer got the
93 * chance to read the old value. The consumer would thus miss reading
100 * producer consumer
108 * seen and read by the consumer.
110 * The consumer peeks into the ring to see if the producer has written
111 * any new entries. If so, the consumer can then read these entries
118 /* Functions that read and validate content from consumer rings. */
281 smp_store_release(&q->ring->consumer, q->cached_cons); /* D, matchees A */ in __xskq_cons_release()
342 return READ_ONCE(q->ring->producer) - READ_ONCE(q->ring->consumer); in xskq_cons_present_entries()
355 q->cached_cons = READ_ONCE(q->ring->consumer); in xskq_prod_nb_free()
442 return READ_ONCE(q->ring->consumer) == READ_ONCE(q->ring->producer); in xskq_prod_is_empty()