diff --git a/include/osmocom/core/stat_item.h b/include/osmocom/core/stat_item.h
index 181b029..957918a 100644
--- a/include/osmocom/core/stat_item.h
+++ b/include/osmocom/core/stat_item.h
@@ -20,49 +20,49 @@
 	int32_t value;
 };
 
-/*! \brief data we keep for each actual value */
+/*! data we keep for each actual value */
 struct osmo_stat_item {
 	const struct osmo_stat_item_desc *desc;
-	/*! \brief the index of the freshest value */
+	/*! the index of the freshest value */
 	int32_t last_value_index;
-	/*! \brief offset to the freshest value in the value fifo */
+	/*! offset to the freshest value in the value fifo */
 	int16_t last_offs;
-	/*! \brief value fifo */
+	/*! value fifo */
 	struct osmo_stat_item_value values[0];
 };
 
-/*! \brief statistics value description */
+/*! statistics value description */
 struct osmo_stat_item_desc {
-	const char *name;	/*!< \brief name of the item */
-	const char *description;/*!< \brief description of the item */
-	const char *unit;	/*!< \brief unit of a value */
-	unsigned int num_values;/*!< \brief number of values to store */
+	const char *name;	/*!< name of the item */
+	const char *description;/*!< description of the item */
+	const char *unit;	/*!< unit of a value */
+	unsigned int num_values;/*!< number of values to store */
 	int32_t default_value;
 };
 
-/*! \brief description of a statistics value group */
+/*! description of a statistics value group */
 struct osmo_stat_item_group_desc {
-	/*! \brief The prefix to the name of all values in this group */
+	/*! The prefix to the name of all values in this group */
 	const char *group_name_prefix;
-	/*! \brief The human-readable description of the group */
+	/*! The human-readable description of the group */
 	const char *group_description;
-	/*! \brief The class to which this group belongs */
+	/*! The class to which this group belongs */
 	int class_id;
-	/*! \brief The number of values in this group */
+	/*! The number of values in this group */
 	const unsigned int num_items;
-	/*! \brief Pointer to array of value names */
+	/*! Pointer to array of value names */
 	const struct osmo_stat_item_desc *item_desc;
 };
 
-/*! \brief One instance of a counter group class */
+/*! One instance of a counter group class */
 struct osmo_stat_item_group {
-	/*! \brief Linked list of all value groups in the system */
+	/*! Linked list of all value groups in the system */
 	struct llist_head list;
-	/*! \brief Pointer to the counter group class */
+	/*! Pointer to the counter group class */
 	const struct osmo_stat_item_group_desc *desc;
-	/*! \brief The index of this value group within its class */
+	/*! The index of this value group within its class */
 	unsigned int idx;
-	/*! \brief Actual counter structures below */
+	/*! Actual counter structures below */
 	struct osmo_stat_item *items[0];
 };
 
@@ -89,7 +89,7 @@
 const struct osmo_stat_item *osmo_stat_item_get_by_name(
 	const struct osmo_stat_item_group *statg, const char *name);
 
-/*! \brief Retrieve the next value from the osmo_stat_item object.
+/*! Retrieve the next value from the osmo_stat_item object.
  * If a new value has been set, it is returned. The idx is used to decide
  * which value to return.
  * On success, *idx is updated to refer to the next unread value. If
@@ -107,13 +107,13 @@
  */
 int osmo_stat_item_get_next(const struct osmo_stat_item *item, int32_t *idx, int32_t *value);
 
-/*! \brief Get the last (freshest) value */
+/*! Get the last (freshest) value */
 static int32_t osmo_stat_item_get_last(const struct osmo_stat_item *item);
 
-/*! \brief Skip all values of the item and update idx accordingly */
+/*! Skip all values of the item and update idx accordingly */
 int osmo_stat_item_discard(const struct osmo_stat_item *item, int32_t *idx);
 
-/*! \brief Skip all values of all items and update idx accordingly */
+/*! Skip all values of all items and update idx accordingly */
 int osmo_stat_item_discard_all(int32_t *idx);
 
 typedef int (*osmo_stat_item_handler_t)(
@@ -121,7 +121,7 @@
 
 typedef int (*osmo_stat_item_group_handler_t)(struct osmo_stat_item_group *, void *);
 
-/*! \brief Iteate over all items
+/*! Iteate over all items
  *  \param[in] handle_item Call-back function, aborts if rc < 0
  *  \param[in] data Private data handed through to \a handle_item
  */
