|
@@ -355,8 +355,8 @@ static unsigned int sata_fsl_fill_sg(struct ata_queued_cmd *qc, void *cmd_desc,
|
|
|
ata_port_printk(qc->ap, KERN_ERR,
|
|
|
"s/g len unaligned : 0x%x\n", sg_len);
|
|
|
|
|
|
- if ((num_prde == (SATA_FSL_MAX_PRD_DIRECT - 1)) &&
|
|
|
- (qc->n_iter + 1 != qc->n_elem)) {
|
|
|
+ if (num_prde == (SATA_FSL_MAX_PRD_DIRECT - 1) &&
|
|
|
+ sg_next(sg) != NULL) {
|
|
|
VPRINTK("setting indirect prde\n");
|
|
|
prd_ptr_to_indirect_ext = prd;
|
|
|
prd->dba = cpu_to_le32(indirect_ext_segment_paddr);
|