Commit 6570ebc4 authored by Frank Blaschka's avatar Frank Blaschka Committed by David S. Miller
Browse files

qeth: EDDP does not work on large MTUs



Fix filling the qdio buffers in EDDP mode.

Signed-off-by: default avatarFrank Blaschka <frank.blaschka@de.ibm.com>
Signed-off-by: default avatarUrsula Braun <braunu@de.ibm.com>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent bc4b2b49
Loading
Loading
Loading
Loading
+9 −7
Original line number Diff line number Diff line
@@ -159,13 +159,15 @@ qeth_eddp_fill_buffer(struct qeth_qdio_out_q *queue,
		buffer = buf->buffer;
		/* fill one skb into buffer */
		for (i = 0; i < ctx->elements_per_skb; ++i){
			buffer->element[buf->next_element_to_fill].addr =
				ctx->elements[element].addr;
			buffer->element[buf->next_element_to_fill].length =
				ctx->elements[element].length;
			buffer->element[buf->next_element_to_fill].flags =
				ctx->elements[element].flags;
			if (ctx->elements[element].length != 0) {
				buffer->element[buf->next_element_to_fill].
				addr = ctx->elements[element].addr;
				buffer->element[buf->next_element_to_fill].
				length = ctx->elements[element].length;
				buffer->element[buf->next_element_to_fill].
				flags = ctx->elements[element].flags;
				buf->next_element_to_fill++;
			}
			element++;
			elements--;
		}
+2 −1
Original line number Diff line number Diff line
@@ -4508,7 +4508,8 @@ qeth_do_send_packet(struct qeth_card *card, struct qeth_qdio_out_q *queue,
			/* check if we have enough elements (including following
			 * free buffers) to handle eddp context */
			if (qeth_eddp_check_buffers_for_context(queue,ctx) < 0){
				printk("eddp tx_dropped 1\n");
				if (net_ratelimit())
					PRINT_WARN("eddp tx_dropped 1\n");
				rc = -EBUSY;
				goto out;
			}