diff --git a/include/common/buf.h b/include/common/buf.h
index b0b4e64..bd58a4d 100644
--- a/include/common/buf.h
+++ b/include/common/buf.h
@@ -33,7 +33,7 @@
 /* Structure defining a buffer's head */
 struct buffer {
 	size_t head;                /* start offset of remaining data relative to area */
-	size_t len;                 /* length of data after head */
+	size_t data;                /* amount of data after head including wrapping */
 	size_t size;                /* buffer size in bytes */
 	char   area[0];             /* <size> bytes of stored data */
 };
@@ -72,7 +72,7 @@
 /* b_data() : returns the number of bytes present in the buffer. */
 static inline size_t b_data(const struct buffer *b)
 {
-	return b->len;
+	return b->data;
 }
 
 /* b_room() : returns the amount of room left in the buffer */
@@ -94,7 +94,7 @@
  */
 static inline size_t __b_stop_ofs(const struct buffer *b)
 {
-	return b->head + b->len;
+	return b->head + b->data;
 }
 
 static inline const char *__b_stop(const struct buffer *b)
@@ -365,25 +365,25 @@
 static inline void b_reset(struct buffer *b)
 {
 	b->head = 0;
-	b->len  = 0;
+	b->data = 0;
 }
 
 /* b_sub() : decreases the buffer length by <count> */
 static inline void b_sub(struct buffer *b, size_t count)
 {
-	b->len -= count;
+	b->data -= count;
 }
 
 /* b_add() : increase the buffer length by <count> */
 static inline void b_add(struct buffer *b, size_t count)
 {
-	b->len += count;
+	b->data += count;
 }
 
 /* b_set_data() : sets the buffer's length */
 static inline void b_set_data(struct buffer *b, size_t len)
 {
-	b->len = len;
+	b->data = len;
 }
 
 /* b_del() : skips <del> bytes in a buffer <b>. Covers both the output and the
@@ -392,7 +392,7 @@
  */
 static inline void b_del(struct buffer *b, size_t del)
 {
-	b->len  -= del;
+	b->data -= del;
 	b->head += del;
 	if (b->head >= b->size)
 		b->head -= b->size;
@@ -455,7 +455,7 @@
 	if (b_full(b))
 		return;
 	*b_tail(b) = c;
-	b->len++;
+	b->data++;
 }
 
 /* b_putblk() : tries to append block <blk> at the end of buffer <b>. Supports
@@ -476,10 +476,10 @@
 		half = len;
 
 	memcpy(b_tail(b), blk, half);
-	b->len += half;
+	b->data += half;
 	if (len > half) {
 		memcpy(b_tail(b), blk + half, len - half);
-		b->len += len - half;
+		b->data += len - half;
 	}
 	return len;
 }
diff --git a/include/common/istbuf.h b/include/common/istbuf.h
index 2210d4a..7631212 100644
--- a/include/common/istbuf.h
+++ b/include/common/istbuf.h
@@ -98,7 +98,7 @@
 		return r.len < b->size ? 0 : -1;
 
 	p = b_tail(b);
-	b->len += r.len;
+	b->data += r.len;
 	while (r.len--) {
 		*p++ = *r.ptr++;
 		if (unlikely(p == end))
diff --git a/include/proto/channel.h b/include/proto/channel.h
index 26ac619..27023ab 100644
--- a/include/proto/channel.h
+++ b/include/proto/channel.h
@@ -193,7 +193,7 @@
 /* Sets the amount of output for the channel */
 static inline void co_set_data(struct channel *c, size_t output)
 {
-	c->buf->len += output - c->output;
+	c->buf->data += output - c->output;
 	c->output = output;
 }
 
@@ -745,7 +745,7 @@
 	if (!ci_data(chn))
 		return;
 
-	chn->buf->len = co_data(chn);
+	chn->buf->data = co_data(chn);
 }
 
 /* This function realigns a possibly wrapping channel buffer so that the input
