diff --git a/include/osmocom/gprs/gprs_bssgp.h b/include/osmocom/gprs/gprs_bssgp.h
index b70487c..0e9f7d6 100644
--- a/include/osmocom/gprs/gprs_bssgp.h
+++ b/include/osmocom/gprs/gprs_bssgp.h
@@ -58,7 +58,7 @@
 
 /* gprs_bssgp.c */
 
-/*! \brief BSSGP flow control (SGSN side) According to Section 8.2 */
+/*! BSSGP flow control (SGSN side) According to Section 8.2 */
 struct bssgp_flow_control {
 	uint32_t bucket_size_max;	/*!< maximum size of the bucket (octets) */
 	uint32_t bucket_leak_rate; 	/*!< leak rate of the bucket (octets/sec) */
@@ -158,13 +158,13 @@
 	return tlv_parse(tp, &tvlv_att_def, buf, len, 0, 0);
 }
 
-/*! \brief BSSGP Paging mode */
+/*! BSSGP Paging mode */
 enum bssgp_paging_mode {
 	BSSGP_PAGING_PS,
 	BSSGP_PAGING_CS,
 };
 
-/*! \brief BSSGP Paging scope */
+/*! BSSGP Paging scope */
 enum bssgp_paging_scope {
 	BSSGP_PAGING_BSS_AREA,		/*!< all cells in BSS */
 	BSSGP_PAGING_LOCATION_AREA,	/*!< all cells in LA */
@@ -172,7 +172,7 @@
 	BSSGP_PAGING_BVCI,		/*!< one cell */
 };
 
-/*! \brief BSSGP paging information */
+/*! BSSGP paging information */
 struct bssgp_paging_info {
 	enum bssgp_paging_mode mode;	/*!< CS or PS paging */
 	enum bssgp_paging_scope scope;	/*!< bssgp_paging_scope */
diff --git a/include/osmocom/gprs/gprs_ns.h b/include/osmocom/gprs/gprs_ns.h
index 9cebbd6..5ecaed8 100644
--- a/include/osmocom/gprs/gprs_ns.h
+++ b/include/osmocom/gprs/gprs_ns.h
@@ -41,19 +41,19 @@
 #define NSE_S_ALIVE	0x0002
 #define NSE_S_RESET	0x0004
 
-/*! \brief Osmocom NS link layer types */
+/*! Osmocom NS link layer types */
 enum gprs_ns_ll {
 	GPRS_NS_LL_UDP,		/*!< NS/UDP/IP */
 	GPRS_NS_LL_E1,		/*!< NS/E1 */
 	GPRS_NS_LL_FR_GRE,	/*!< NS/FR/GRE/IP */
 };
 
-/*! \brief Osmoco NS events */
+/*! Osmoco NS events */
 enum gprs_ns_evt {
 	GPRS_NS_EVT_UNIT_DATA,
 };
 
-/*! \brief Osmocom NS VC create status */
+/*! Osmocom NS VC create status */
 enum gprs_ns_cs {
 	GPRS_NS_CS_CREATED,     /*!< A NSVC object has been created */
 	GPRS_NS_CS_FOUND,       /*!< A NSVC object has been found */
@@ -63,32 +63,32 @@
 };
 
 struct gprs_nsvc;
-/*! \brief Osmocom GPRS callback function type */
+/*! Osmocom GPRS callback function type */
 typedef int gprs_ns_cb_t(enum gprs_ns_evt event, struct gprs_nsvc *nsvc,
 			 struct msgb *msg, uint16_t bvci);
 
-/*! \brief An instance of the NS protocol stack */
+/*! An instance of the NS protocol stack */
 struct gprs_ns_inst {
-	/*! \brief callback to the user for incoming UNIT DATA IND */
+	/*! callback to the user for incoming UNIT DATA IND */
 	gprs_ns_cb_t *cb;
 
-	/*! \brief linked lists of all NSVC in this instance */
+	/*! linked lists of all NSVC in this instance */
 	struct llist_head gprs_nsvcs;
 
-	/*! \brief a NSVC object that's needed to deal with packets for
+	/*! a NSVC object that's needed to deal with packets for
 	 * 	   unknown NSVC */
 	struct gprs_nsvc *unknown_nsvc;
 
 	uint16_t timeout[NS_TIMERS_COUNT];
 
-	/*! \brief NS-over-IP specific bits */
+	/*! NS-over-IP specific bits */
 	struct {
 		struct osmo_fd fd;
 		uint32_t local_ip;
 		uint16_t local_port;
 		int dscp;
 	} nsip;
-	/*! \brief NS-over-FR-over-GRE-over-IP specific bits */
+	/*! NS-over-FR-over-GRE-over-IP specific bits */
 	struct {
 		struct osmo_fd fd;
 		uint32_t local_ip;
@@ -104,15 +104,15 @@
 	_NSVC_TIMER_NR,
 };
 
-/*! \brief Structure representing a single NS-VC */
+/*! Structure representing a single NS-VC */
 struct gprs_nsvc {
-	/*! \brief list of NS-VCs within NS Instance */
+	/*! list of NS-VCs within NS Instance */
 	struct llist_head list;
-	/*! \brief pointer to NS Instance */
+	/*! pointer to NS Instance */
 	struct gprs_ns_inst *nsi;
 
-	uint16_t nsei;	/*! \brief end-to-end significance */
-	uint16_t nsvci;	/*! \brief uniquely identifies NS-VC at SGSN */
+	uint16_t nsei;	/*! end-to-end significance */
+	uint16_t nsvci;	/*! uniquely identifies NS-VC at SGSN */
 
 	uint32_t state;
 	uint32_t remote_state;
@@ -129,7 +129,7 @@
 	struct rate_ctr_group *ctrg;
 	struct osmo_stat_item_group *statg;
 
-	/*! \brief which link-layer are we based on? */
+	/*! which link-layer are we based on? */
 	enum gprs_ns_ll ll;
 
 	union {
diff --git a/include/osmocom/gprs/gprs_rlc.h b/include/osmocom/gprs/gprs_rlc.h
index d34d49b..5765281 100644
--- a/include/osmocom/gprs/gprs_rlc.h
+++ b/include/osmocom/gprs/gprs_rlc.h
@@ -2,14 +2,14 @@
 
 #include <stdint.h>
 
-/*! \brief Structure for CPS coding and puncturing scheme (TS 04.60 10.4.8a) */
+/*! Structure for CPS coding and puncturing scheme (TS 04.60 10.4.8a) */
 struct egprs_cps {
 	uint8_t bits;
 	uint8_t mcs;
 	uint8_t p[2];
 };
 
-/*! \brief CPS puncturing table selection (TS 04.60 10.4.8a) */
+/*! CPS puncturing table selection (TS 04.60 10.4.8a) */
 enum egprs_cps_punc {
 	EGPRS_CPS_P1,
 	EGPRS_CPS_P2,
@@ -17,7 +17,7 @@
 	EGPRS_CPS_NONE = -1,
 };
 
-/*! \brief EGPRS header types (TS 04.60 10.0a.2) */
+/*! EGPRS header types (TS 04.60 10.0a.2) */
 enum egprs_hdr_type {
         EGPRS_HDR_TYPE1,
         EGPRS_HDR_TYPE2,
diff --git a/include/osmocom/gprs/protocol/gsm_08_16.h b/include/osmocom/gprs/protocol/gsm_08_16.h
index 56ed594..c3dbe69 100644
--- a/include/osmocom/gprs/protocol/gsm_08_16.h
+++ b/include/osmocom/gprs/protocol/gsm_08_16.h
@@ -12,7 +12,7 @@
 
 /*! \file gprs_ns.h */
 
-/*! \brief Common header of GPRS NS */
+/*! Common header of GPRS NS */
 struct gprs_ns_hdr {
 	uint8_t pdu_type;	/*!< NS PDU type */
 	uint8_t data[0];	/*!< variable-length payload */
@@ -20,7 +20,7 @@
 
 extern const struct value_string gprs_ns_pdu_strings[];
 
-/*! \brief NS PDU Type (TS 08.16, Section 10.3.7, Table 14) */
+/*! NS PDU Type (TS 08.16, Section 10.3.7, Table 14) */
 enum ns_pdu_type {
 	NS_PDUT_UNITDATA	= 0x00,
 	NS_PDUT_RESET		= 0x02,
@@ -43,7 +43,7 @@
 	SNS_PDUT_SIZE_ACK	= 0x13,
 };
 
-/*! \brief NS Control IE (TS 08.16, Section 10.3, Table 12) */
+/*! NS Control IE (TS 08.16, Section 10.3, Table 12) */
 enum ns_ctrl_ie {
 	NS_IE_CAUSE		= 0x00,
 	NS_IE_VCI		= 0x01,
@@ -60,7 +60,7 @@
 	NS_IE_IP_ADDR		= 0x0b,
 };
 
-/*! \brief NS Cause (TS 08.16, Section 10.3.2, Table 13) */
+/*! NS Cause (TS 08.16, Section 10.3.2, Table 13) */
 enum ns_cause {
 	NS_CAUSE_TRANSIT_FAIL		= 0x00,
 	NS_CAUSE_OM_INTERVENTION	= 0x01,
diff --git a/include/osmocom/gprs/protocol/gsm_08_18.h b/include/osmocom/gprs/protocol/gsm_08_18.h
index 529e988..8bc9a8e 100644
--- a/include/osmocom/gprs/protocol/gsm_08_18.h
+++ b/include/osmocom/gprs/protocol/gsm_08_18.h
@@ -2,11 +2,11 @@
 
 #include <stdint.h>
 
-/*! \brief Fixed BVCI definitions (Section 5.4.1) */
+/*! Fixed BVCI definitions (Section 5.4.1) */
 #define BVCI_SIGNALLING	0x0000
 #define BVCI_PTM	0x0001
 
-/*! \brief BSSGP PDU types (Section 11.3.26 / Table 11.27) */
+/*! BSSGP PDU types (Section 11.3.26 / Table 11.27) */
 enum bssgp_pdu_type {
 	/* PDUs between RL and BSSGP SAPs */
 	BSSGP_PDUT_DL_UNITDATA		= 0x00,
@@ -52,7 +52,7 @@
 	BSSGP_PDUT_DELETE_BSS_PFC_ACK	= 0x57,
 };
 
-/*! \brief BSSGP User-Data header (Section 10.2.1 and 10.2.2) */
+/*! BSSGP User-Data header (Section 10.2.1 and 10.2.2) */
 struct bssgp_ud_hdr {
 	uint8_t pdu_type;	/*!< BSSGP PDU type */
 	uint32_t tlli;		/*!< Temporary Link-Local Identifier */
@@ -60,13 +60,13 @@
 	uint8_t data[0];	/* optional/conditional IEs as TLVs */
 } __attribute__((packed));
 
-/*! \brief BSSGP normal header */
+/*! BSSGP normal header */
 struct bssgp_normal_hdr {
 	uint8_t pdu_type;	/*!< BSSGP PDU type */
 	uint8_t data[0];	/*!< optional/conditional IEs as TLVs */
 };
 
-/*! \brief BSSGP Information Element Identifiers */
+/*! BSSGP Information Element Identifiers */
 enum bssgp_iei_type {
 	BSSGP_IE_ALIGNMENT		= 0x00,
 	BSSGP_IE_BMAX_DEFAULT_MS	= 0x01,
@@ -116,7 +116,7 @@
 	BSSGP_IE_SERVICE_UTRAN_CCO	= 0x3d,
 };
 
-/*! \brief Cause coding (Section 11.3.8 / Table 11.10) */
+/*! Cause coding (Section 11.3.8 / Table 11.10) */
 enum gprs_bssgp_cause {
 	BSSGP_CAUSE_PROC_OVERLOAD	= 0x00,
 	BSSGP_CAUSE_EQUIP_FAIL		= 0x01,
