in core.c [835:857]
static void arm_mbo(struct mbo *mbo)
{
unsigned long flags;
struct most_channel *c;
c = mbo->context;
if (c->is_poisoned) {
trash_mbo(mbo);
return;
}
spin_lock_irqsave(&c->fifo_lock, flags);
++*mbo->num_buffers_ptr;
list_add_tail(&mbo->list, &c->fifo);
spin_unlock_irqrestore(&c->fifo_lock, flags);
if (c->pipe0.refs && c->pipe0.comp->tx_completion)
c->pipe0.comp->tx_completion(c->iface, c->channel_id);
if (c->pipe1.refs && c->pipe1.comp->tx_completion)
c->pipe1.comp->tx_completion(c->iface, c->channel_id);
}