diff --git a/kernel/wr-nic-dio.c b/kernel/wr-nic-dio.c
index fed1852ca4bc9b7987a09fc56c3f76148d1b4cc4..5dbe0e344ed4138768c8ed5e8127ad7dd5008a93 100644
--- a/kernel/wr-nic-dio.c
+++ b/kernel/wr-nic-dio.c
@@ -228,11 +228,11 @@ again:
 		mask = (1 << ch);
 	}
 	/* handle the 1-channel and mask case in the same loop */
-	for (; ch <= last; ch++) {
+	c = d->ch + ch;
+	for (; ch <= last; ch++, c++) {
 		if (((1 << ch) & mask) == 0)
 			continue;
 		map = regmap + ch;
-		c = d->ch + ch;
 		while (1) {
 			if (nstamp == WR_DIO_N_STAMP)
 				break;