/* LOCKING: called with the pending list lock held.  */
static void asd_swap_head_scb(struct asd_ha_struct *asd_ha, struct asd_ascb *ascb)
/* LOCKING: called with the pending list lock held.  */
static void asd_swap_head_scb(struct asd_ha_struct *asd_ha, struct asd_ascb *ascb)
{
	struct asd_seq_data *seq = &asd_ha->seq;
	struct asd_ascb *last = list_entry(ascb->list.prev,
					   struct asd_ascb,
					   list);
	struct asd_dma_tok t = ascb->dma_scb;
	memcpy(seq->next_scb.vaddr, ascb->scb, sizeof(*ascb->scb));
	ascb->dma_scb = seq->next_scb;
	ascb->scb = ascb->dma_scb.vaddr;
	seq->next_scb = t;
	last->scb->header.next_scb =
		cpu_to_le64(((u64)seq->next_scb.dma_handle));
}