/* Callback for the Tx buffer reclaim timer. Runs with softirqs disabled.  */
static void sge_tx_reclaim_cb(unsigned long data)
/* Callback for the Tx buffer reclaim timer. Runs with softirqs disabled.  */
static void sge_tx_reclaim_cb(unsigned long data)
{
	int i;
	struct sge *sge = (struct sge *)data;
	for (i = 0; i < SGE_CMDQ_N; ++i) {
		struct cmdQ *q = &sge->cmdQ[i];
		if (!spin_trylock(&q->lock))
			continue;
		reclaim_completed_tx(sge, q);
		if (i == 0 && q->in_use) {
			writel(F_CMDQ0_ENABLE, sge->adapter->regs + A_SG_DOORBELL);
		}
		spin_unlock(&q->lock);
	}
	mod_timer(&sge->tx_reclaim_timer, jiffies + TX_RECLAIM_PERIOD);
}