return;
while ((trans = ipa_endpoint_trans_alloc(endpoint, 1))) {
- WARN_ON(!atomic_dec_not_zero(&endpoint->replenish_backlog));
if (ipa_endpoint_replenish_one(endpoint, trans))
goto try_again_later;
gsi_trans_free(trans);
clear_bit(IPA_REPLENISH_ACTIVE, endpoint->replenish_flags);
- /* The last one didn't succeed, so fix the backlog */
- atomic_inc(&endpoint->replenish_backlog);
-
/* Whenever a receive buffer transaction completes we'll try to
* replenish again. It's unlikely, but if we fail to supply even
* one buffer, nothing will trigger another replenish attempt.
struct page *page;
ipa_endpoint_replenish(endpoint);
- atomic_inc(&endpoint->replenish_backlog);
if (trans->cancelled)
return;
*/
clear_bit(IPA_REPLENISH_ENABLED, endpoint->replenish_flags);
clear_bit(IPA_REPLENISH_ACTIVE, endpoint->replenish_flags);
- atomic_set(&endpoint->replenish_backlog,
- gsi_channel_tre_max(gsi, endpoint->channel_id));
INIT_DELAYED_WORK(&endpoint->replenish_work,
ipa_endpoint_replenish_work);
}
* @netdev: Network device pointer, if endpoint uses one
* @replenish_flags: Replenishing state flags
* @replenish_ready: Number of replenish transactions without doorbell
- * @replenish_backlog: Number of buffers needed to fill hardware queue
* @replenish_work: Work item used for repeated replenish failures
*/
struct ipa_endpoint {
/* Receive buffer replenishing for RX endpoints */
DECLARE_BITMAP(replenish_flags, IPA_REPLENISH_COUNT);
u32 replenish_ready;
- atomic_t replenish_backlog;
struct delayed_work replenish_work; /* global wq */
};