Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2f08fe52 authored by Jens Axboe's avatar Jens Axboe
Browse files

qlogicpti: sg chaining support

parent 8145bfe4
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -868,7 +868,7 @@ static inline int load_cmd(struct scsi_cmnd *Cmnd, struct Command_Entry *cmd,
			   struct qlogicpti *qpti, u_int in_ptr, u_int out_ptr)
{
	struct dataseg *ds;
	struct scatterlist *sg;
	struct scatterlist *sg, *s;
	int i, n;

	if (Cmnd->use_sg) {
@@ -884,11 +884,12 @@ static inline int load_cmd(struct scsi_cmnd *Cmnd, struct Command_Entry *cmd,
		n = sg_count;
		if (n > 4)
			n = 4;
		for (i = 0; i < n; i++, sg++) {
			ds[i].d_base = sg_dma_address(sg);
			ds[i].d_count = sg_dma_len(sg);
		for_each_sg(sg, s, n, i) {
			ds[i].d_base = sg_dma_address(s);
			ds[i].d_count = sg_dma_len(s);
		}
		sg_count -= 4;
		sg = s;
		while (sg_count > 0) {
			struct Continuation_Entry *cont;

@@ -907,9 +908,9 @@ static inline int load_cmd(struct scsi_cmnd *Cmnd, struct Command_Entry *cmd,
			n = sg_count;
			if (n > 7)
				n = 7;
			for (i = 0; i < n; i++, sg++) {
				ds[i].d_base = sg_dma_address(sg);
				ds[i].d_count = sg_dma_len(sg);
			for_each_sg(sg, s, n, i) {
				ds[i].d_base = sg_dma_address(s);
				ds[i].d_count = sg_dma_len(s);
			}
			sg_count -= n;
		}