diff --git a/include/osmocom/core/fsm.h b/include/osmocom/core/fsm.h
index f42dd0c..fb182f3 100644
--- a/include/osmocom/core/fsm.h
+++ b/include/osmocom/core/fsm.h
@@ -12,21 +12,21 @@
  */
 
 /*! \file fsm.h
- *  \brief Finite State Machine
+ *  Finite State Machine
  */
 
 struct osmo_fsm_inst;
 
 enum osmo_fsm_term_cause {
-	/*! \brief terminate because parent terminated */
+	/*! terminate because parent terminated */
 	OSMO_FSM_TERM_PARENT,
-	/*! \brief terminate on explicit user request */
+	/*! terminate on explicit user request */
 	OSMO_FSM_TERM_REQUEST,
-	/*! \brief regular termination of process */
+	/*! regular termination of process */
 	OSMO_FSM_TERM_REGULAR,
-	/*! \brief erroneous termination of process */
+	/*! erroneous termination of process */
 	OSMO_FSM_TERM_ERROR,
-	/*! \brief termination due to time-out */
+	/*! termination due to time-out */
 	OSMO_FSM_TERM_TIMEOUT,
 };
 
@@ -37,80 +37,80 @@
 }
 
 
-/*! \brief description of a rule in the FSM */
+/*! description of a rule in the FSM */
 struct osmo_fsm_state {
-	/*! \brief bit-mask of permitted input events for this state */
+	/*! bit-mask of permitted input events for this state */
 	uint32_t in_event_mask;
-	/*! \brief bit-mask to which other states this state may transiton */
+	/*! bit-mask to which other states this state may transiton */
 	uint32_t out_state_mask;
-	/*! \brief human-readable name of this state */
+	/*! human-readable name of this state */
 	const char *name;
-	/*! \brief function to be called for events arriving in this state */
+	/*! function to be called for events arriving in this state */
 	void (*action)(struct osmo_fsm_inst *fi, uint32_t event, void *data);
-	/*! \brief function to be called just after entering the state */
+	/*! function to be called just after entering the state */
 	void (*onenter)(struct osmo_fsm_inst *fi, uint32_t prev_state);
-	/*! \brief function to be called just before leaving the state */
+	/*! function to be called just before leaving the state */
 	void (*onleave)(struct osmo_fsm_inst *fi, uint32_t next_state);
 };
 
-/*! \brief a description of an osmocom finite state machine */
+/*! a description of an osmocom finite state machine */
 struct osmo_fsm {
-	/*! \brief global list */
+	/*! global list */
 	struct llist_head list;
-	/*! \brief list of instances of this FSM */
+	/*! list of instances of this FSM */
 	struct llist_head instances;
-	/*! \brief human readable name */
+	/*! human readable name */
 	const char *name;
-	/*! \brief table of state transition rules */
+	/*! table of state transition rules */
 	const struct osmo_fsm_state *states;
-	/*! \brief number of entries in \ref states */
+	/*! number of entries in \ref states */
 	unsigned int num_states;
-	/*! \brief bit-mask of events permitted in all states */
+	/*! bit-mask of events permitted in all states */
 	uint32_t allstate_event_mask;
-	/*! \brief function pointer to be called for allstate events */
+	/*! function pointer to be called for allstate events */
 	void (*allstate_action)(struct osmo_fsm_inst *fi, uint32_t event, void *data);
-	/*! \brief clean-up function, called during termination */
+	/*! clean-up function, called during termination */
 	void (*cleanup)(struct osmo_fsm_inst *fi, enum osmo_fsm_term_cause cause);
-	/*! \brief timer call-back for states with time-out.
+	/*! timer call-back for states with time-out.
 	 * \returns 1 to request termination, 0 to keep running. */
 	int (*timer_cb)(struct osmo_fsm_inst *fi);
-	/*! \brief logging sub-system for this FSM */
+	/*! logging sub-system for this FSM */
 	int log_subsys;
-	/*! \brief human-readable names of events */
+	/*! human-readable names of events */
 	const struct value_string *event_names;
 };
 
-/*! \brief a single instanceof an osmocom finite state machine */
+/*! a single instanceof an osmocom finite state machine */
 struct osmo_fsm_inst {
-	/*! \brief member in the fsm->instances list */
+	/*! member in the fsm->instances list */
 	struct llist_head list;
-	/*! \brief back-pointer to the FSM of which we are an instance */
+	/*! back-pointer to the FSM of which we are an instance */
 	struct osmo_fsm *fsm;
-	/*! \brief human readable identifier */
+	/*! human readable identifier */
 	const char *id;
-	/*! \brief human readable fully-qualified name */
+	/*! human readable fully-qualified name */
 	const char *name;
-	/*! \brief some private data of this instance */
+	/*! some private data of this instance */
 	void *priv;
-	/*! \brief logging level for this FSM */
+	/*! logging level for this FSM */
 	int log_level;
-	/*! \brief current state of the FSM */
+	/*! current state of the FSM */
 	uint32_t state;
 
-	/*! \brief timer number for states with time-out */
+	/*! timer number for states with time-out */
 	int T;
-	/*! \brief timer back-end for states with time-out */
+	/*! timer back-end for states with time-out */
 	struct osmo_timer_list timer;
 
-	/*! \brief support for fsm-based procedures */
+	/*! support for fsm-based procedures */
 	struct {
-		/*! \brief the parent FSM that has created us */
+		/*! the parent FSM that has created us */
 		struct osmo_fsm_inst *parent;
-		/*! \brief the event we should send upon termination */
+		/*! the event we should send upon termination */
 		uint32_t parent_term_event;
-		/*! \brief a list of children processes */
+		/*! a list of children processes */
 		struct llist_head children;
-		/*! \brief \ref llist_head linked to parent->proc.children */
+		/*! \ref llist_head linked to parent->proc.children */
 		struct llist_head child;
 	} proc;
 };
@@ -156,11 +156,11 @@
 const char *osmo_fsm_inst_name(struct osmo_fsm_inst *fi);
 const char *osmo_fsm_state_name(struct osmo_fsm *fsm, uint32_t state);
 
-/*! \brief return the name of the state the FSM instance is currently in. */
+/*! return the name of the state the FSM instance is currently in. */
 static inline const char *osmo_fsm_inst_state_name(struct osmo_fsm_inst *fi)
 { return osmo_fsm_state_name(fi->fsm, fi->state); }
 
-/*! \brief perform a state change of the given FSM instance
+/*! perform a state change of the given FSM instance
  *
  *  This is a macro that calls _osmo_fsm_inst_state_chg() with the given
  *  parameters as well as the caller's source file and line number for logging
@@ -173,7 +173,7 @@
 			     unsigned long timeout_secs, int T,
 			     const char *file, int line);
 
-/*! \brief dispatch an event to an osmocom finite state machine instance
+/*! dispatch an event to an osmocom finite state machine instance
  *
  *  This is a macro that calls _osmo_fsm_inst_dispatch() with the given
  *  parameters as well as the caller's source file and line number for logging
@@ -184,7 +184,7 @@
 int _osmo_fsm_inst_dispatch(struct osmo_fsm_inst *fi, uint32_t event, void *data,
 			    const char *file, int line);
 
-/*! \brief Terminate FSM instance with given cause
+/*! Terminate FSM instance with given cause
  *
  *  This is a macro that calls _osmo_fsm_inst_term() with the given parameters
  *  as well as the caller's source file and line number for logging purposes.
@@ -196,7 +196,7 @@
 			 enum osmo_fsm_term_cause cause, void *data,
 			 const char *file, int line);
 
-/*! \brief Terminate all child FSM instances of an FSM instance.
+/*! Terminate all child FSM instances of an FSM instance.
  *
  *  This is a macro that calls _osmo_fsm_inst_term_children() with the given
  *  parameters as well as the caller's source file and line number for logging
