diff --git a/include/proto/fd.h b/include/proto/fd.h
index 7fe616e..a67a320 100644
--- a/include/proto/fd.h
+++ b/include/proto/fd.h
@@ -131,7 +131,7 @@
  */
 static inline int fd_ev_is_set(const int fd, int dir)
 {
-	return ((unsigned)fdtab[fd].spec_e >> dir) & FD_EV_STATUS;
+	return ((unsigned)fdtab[fd].state >> dir) & FD_EV_STATUS;
 }
 
 /* Disable processing of events on fd <fd> for direction <dir>. Note: this
@@ -139,10 +139,10 @@
  */
 static inline void fd_ev_clr(const int fd, int dir)
 {
-	unsigned int i = ((unsigned int)fdtab[fd].spec_e) & (FD_EV_STATUS << dir);
+	unsigned int i = ((unsigned int)fdtab[fd].state) & (FD_EV_STATUS << dir);
 	if (i == 0)
 		return; /* already disabled */
-	fdtab[fd].spec_e ^= i;
+	fdtab[fd].state ^= i;
 	updt_fd(fd); /* need an update entry to change the state */
 }
 
@@ -151,10 +151,10 @@
  */
 static inline void fd_ev_wai(const int fd, int dir)
 {
-	unsigned int i = ((unsigned int)fdtab[fd].spec_e) & (FD_EV_STATUS << dir);
+	unsigned int i = ((unsigned int)fdtab[fd].state) & (FD_EV_STATUS << dir);
 	if (i == (FD_EV_POLLED << dir))
 		return; /* already in desired state */
-	fdtab[fd].spec_e ^= i ^ (FD_EV_POLLED << dir);
+	fdtab[fd].state ^= i ^ (FD_EV_POLLED << dir);
 	updt_fd(fd); /* need an update entry to change the state */
 }
 
@@ -163,7 +163,7 @@
  */
 static inline void fd_ev_set(int fd, int dir)
 {
-	unsigned int i = ((unsigned int)fdtab[fd].spec_e) & (FD_EV_STATUS << dir);
+	unsigned int i = ((unsigned int)fdtab[fd].state) & (FD_EV_STATUS << dir);
 
 	/* note that we don't care about disabling the polled state when
 	 * enabling the active state, since it brings no benefit but costs
@@ -171,17 +171,17 @@
 	 */
 	if (i & (FD_EV_ACTIVE << dir))
 		return; /* already in desired state */
-	fdtab[fd].spec_e |= (FD_EV_ACTIVE << dir);
+	fdtab[fd].state |= (FD_EV_ACTIVE << dir);
 	updt_fd(fd); /* need an update entry to change the state */
 }
 
 /* Disable processing of events on fd <fd> for both directions. */
 static inline void fd_ev_rem(const int fd)
 {
-	unsigned int i = ((unsigned int)fdtab[fd].spec_e) & FD_EV_CURR_MASK;
+	unsigned int i = ((unsigned int)fdtab[fd].state) & FD_EV_CURR_MASK;
 	if (i == 0)
 		return; /* already disabled */
-	fdtab[fd].spec_e ^= i;
+	fdtab[fd].state ^= i;
 	updt_fd(fd); /* need an update entry to change the state */
 }
 
diff --git a/include/types/fd.h b/include/types/fd.h
index 701edfc..23550cb 100644
--- a/include/types/fd.h
+++ b/include/types/fd.h
@@ -46,7 +46,7 @@
 #define FD_POLL_STICKY  (FD_POLL_ERR | FD_POLL_HUP)
 
 /* Event state for an FD in each direction, as found in the 4 lower bits of
- * fdtab[].spec_e, and in the 4 next bits.
+ * fdtab[].state, and in the 4 next bits.
  */
 #define FD_EV_ACTIVE    1U
 #define FD_EV_POLLED    4U
@@ -70,7 +70,7 @@
 	int (*iocb)(int fd);                 /* I/O handler, returns FD_WAIT_* */
 	void *owner;                         /* the connection or listener associated with this fd, NULL if closed */
 	unsigned int  spec_p;                /* speculative polling: position in spec list+1. 0=not in list. */
-	unsigned char spec_e;                /* speculative polling: read and write events status. 4 bits */
+	unsigned char state;                 /* FD state for read and write directions */
 	unsigned char ev;                    /* event seen in return of poll() : FD_POLL_* */
 	unsigned char new:1;                 /* 1 if this fd has just been created */
 	unsigned char updated:1;             /* 1 if this fd is already in the update list */
