diff --git a/include/osmocom/gsm/tlv.h b/include/osmocom/gsm/tlv.h
index f659411..7b41d2d 100644
--- a/include/osmocom/gsm/tlv.h
+++ b/include/osmocom/gsm/tlv.h
@@ -6,6 +6,11 @@
 
 #include <osmocom/core/msgb.h>
 
+/*! \defgroup tlv GSM L3 compatible TLV parser
+ *  @{
+ */
+/*! \file tlv.h */
+
 /* Terminology / wording
 		tag	length		value	(in bits)
 
@@ -18,14 +23,21 @@
 
 */
 
+/*! \brief gross length of a LV type field */
 #define LV_GROSS_LEN(x)		(x+1)
+/*! \brief gross length of a TLV type field */
 #define TLV_GROSS_LEN(x)	(x+2)
+/*! \brief gross length of a TLV16 type field */
 #define TLV16_GROSS_LEN(x)	((2*x)+2)
+/*! \brief gross length of a TL16V type field */
 #define TL16V_GROSS_LEN(x)	(x+3)
+/*! \brief gross length of a L16TV type field */
 #define L16TV_GROSS_LEN(x)	(x+3)
 
+/*! \brief maximum length of TLV of one byte length */
 #define TVLV_MAX_ONEBYTE	0x7f
 
+/*! \brief gross length of a TVLV type field */
 static inline uint16_t TVLV_GROSS_LEN(uint16_t len)
 {
 	if (len <= TVLV_MAX_ONEBYTE)
@@ -36,6 +48,7 @@
 
 /* TLV generation */
 
+/*! \brief put (append) a LV field */
 static inline uint8_t *lv_put(uint8_t *buf, uint8_t len,
 				const uint8_t *val)
 {
@@ -44,6 +57,7 @@
 	return buf + len;
 }
 
+/*! \brief put (append) a TLV field */
 static inline uint8_t *tlv_put(uint8_t *buf, uint8_t tag, uint8_t len,
 				const uint8_t *val)
 {
@@ -53,6 +67,7 @@
 	return buf + len;
 }
 
+/*! \brief put (append) a TLV16 field */
 static inline uint8_t *tlv16_put(uint8_t *buf, uint8_t tag, uint8_t len,
 				const uint16_t *val)
 {
@@ -62,6 +77,7 @@
 	return buf + len*2;
 }
 
+/*! \brief put (append) a TL16V field */
 static inline uint8_t *tl16v_put(uint8_t *buf, uint8_t tag, uint16_t len,
 				const uint8_t *val)
 {
@@ -72,6 +88,7 @@
 	return buf + len*2;
 }
 
+/*! \brief put (append) a TvLV field */
 static inline uint8_t *tvlv_put(uint8_t *buf, uint8_t tag, uint16_t len,
 				 const uint8_t *val)
 {
@@ -86,12 +103,14 @@
 	return ret;
 }
 
+/*! \brief put (append) a TLV16 field to \ref msgb */
 static inline uint8_t *msgb_tlv16_put(struct msgb *msg, uint8_t tag, uint8_t len, const uint16_t *val)
 {
 	uint8_t *buf = msgb_put(msg, TLV16_GROSS_LEN(len));
 	return tlv16_put(buf, tag, len, val);
 }
 
+/*! \brief put (append) a TL16V field to \ref msgb */
 static inline uint8_t *msgb_tl16v_put(struct msgb *msg, uint8_t tag, uint16_t len,
 					const uint8_t *val)
 {
@@ -99,6 +118,7 @@
 	return tl16v_put(buf, tag, len, val);
 }
 
+/*! \brief put (append) a TvLV field to \ref msgb */
 static inline uint8_t *msgb_tvlv_put(struct msgb *msg, uint8_t tag, uint16_t len,
 				      const uint8_t *val)
 {
@@ -106,6 +126,7 @@
 	return tvlv_put(buf, tag, len, val);
 }
 
+/*! \brief put (append) a L16TV field to \ref msgb */
 static inline uint8_t *msgb_l16tv_put(struct msgb *msg, uint16_t len, uint8_t tag,
                                        const uint8_t *val)
 {
@@ -118,12 +139,14 @@
 	return buf + len;
 }
 
+/*! \brief put (append) a V field */
 static inline uint8_t *v_put(uint8_t *buf, uint8_t val)
 {
 	*buf++ = val;
 	return buf;
 }
 
+/*! \brief put (append) a TV field */
 static inline uint8_t *tv_put(uint8_t *buf, uint8_t tag, 
 				uint8_t val)
 {
@@ -132,6 +155,7 @@
 	return buf;
 }
 
+/*! \brief put (append) a TVfixed field */
 static inline uint8_t *tv_fixed_put(uint8_t *buf, uint8_t tag,
 				    unsigned int len, const uint8_t *val)
 {
@@ -140,7 +164,11 @@
 	return buf + len;
 }
 
-/* 'val' is still in host byte order! */
+/*! \brief put (append) a TV16 field
+ *  \param[in,out] buf data buffer
+ *  \param[in] tag Tag value
+ *  \param[in] val Value (in host byte order!)
+ */
 static inline uint8_t *tv16_put(uint8_t *buf, uint8_t tag, 
 				 uint16_t val)
 {
@@ -150,24 +178,28 @@
 	return buf;
 }
 
+/*! \brief put (append) a LV field to a \ref msgb */
 static inline uint8_t *msgb_lv_put(struct msgb *msg, uint8_t len, const uint8_t *val)
 {
 	uint8_t *buf = msgb_put(msg, LV_GROSS_LEN(len));
 	return lv_put(buf, len, val);
 }
 
+/*! \brief put (append) a TLV field to a \ref msgb */
 static inline uint8_t *msgb_tlv_put(struct msgb *msg, uint8_t tag, uint8_t len, const uint8_t *val)
 {
 	uint8_t *buf = msgb_put(msg, TLV_GROSS_LEN(len));
 	return tlv_put(buf, tag, len, val);
 }
 
+/*! \brief put (append) a TV field to a \ref msgb */
 static inline uint8_t *msgb_tv_put(struct msgb *msg, uint8_t tag, uint8_t val)
 {
 	uint8_t *buf = msgb_put(msg, 2);
 	return tv_put(buf, tag, val);
 }
 
+/*! \brief put (append) a TVfixed field to a \ref msgb */
 static inline uint8_t *msgb_tv_fixed_put(struct msgb *msg, uint8_t tag,
 					unsigned int len, const uint8_t *val)
 {
@@ -175,36 +207,42 @@
 	return tv_fixed_put(buf, tag, len, val);
 }
 
+/*! \brief put (append) a V field to a \ref msgb */
 static inline uint8_t *msgb_v_put(struct msgb *msg, uint8_t val)
 {
 	uint8_t *buf = msgb_put(msg, 1);
 	return v_put(buf, val);
 }
 
+/*! \brief put (append) a TV16 field to a \ref msgb */
 static inline uint8_t *msgb_tv16_put(struct msgb *msg, uint8_t tag, uint16_t val)
 {
 	uint8_t *buf = msgb_put(msg, 3);
 	return tv16_put(buf, tag, val);
 }
 
+/*! \brief push (prepend) a TLV field to a \ref msgb */
 static inline uint8_t *msgb_tlv_push(struct msgb *msg, uint8_t tag, uint8_t len, const uint8_t *val)
 {
 	uint8_t *buf = msgb_push(msg, TLV_GROSS_LEN(len));
 	return tlv_put(buf, tag, len, val);
 }
 
+/*! \brief push (prepend) a TV field to a \ref msgb */
 static inline uint8_t *msgb_tv_push(struct msgb *msg, uint8_t tag, uint8_t val)
 {
 	uint8_t *buf = msgb_push(msg, 2);
 	return tv_put(buf, tag, val);
 }
 
+/*! \brief push (prepend) a TV16 field to a \ref msgb */
 static inline uint8_t *msgb_tv16_push(struct msgb *msg, uint8_t tag, uint16_t val)
 {
 	uint8_t *buf = msgb_push(msg, 3);
 	return tv16_put(buf, tag, val);
 }
 
+/*! \brief push (prepend) a TvLV field to a \ref msgb */
 static inline uint8_t *msgb_tvlv_push(struct msgb *msg, uint8_t tag, uint16_t len,
 				      const uint8_t *val)
 {
@@ -214,31 +252,36 @@
 
 /* TLV parsing */
 
+/*! \brief Entry in a TLV parser array */
 struct tlv_p_entry {
-	uint16_t len;
-	const uint8_t *val;
+	uint16_t len;		/*!< \brief length */
+	const uint8_t *val;	/*!< \brief pointer to value */
 };
 
+/*! \brief TLV type */
 enum tlv_type {
-	TLV_TYPE_NONE,
-	TLV_TYPE_FIXED,
-	TLV_TYPE_T,
-	TLV_TYPE_TV,
-	TLV_TYPE_TLV,
-	TLV_TYPE_TL16V,
-	TLV_TYPE_TvLV,
-	TLV_TYPE_SINGLE_TV
+	TLV_TYPE_NONE,		/*!< \brief no type */
+	TLV_TYPE_FIXED,		/*!< \brief fixed-length value-only */
+	TLV_TYPE_T,		/*!< \brief tag-only */
+	TLV_TYPE_TV,		/*!< \brief tag-value (8bit) */
+	TLV_TYPE_TLV,		/*!< \brief tag-length-value */
+	TLV_TYPE_TL16V,		/*!< \brief tag, 16 bit length, value */
+	TLV_TYPE_TvLV,		/*!< \brief tag, variable length, value */
+	TLV_TYPE_SINGLE_TV	/*!< \brief tag and value (both 4 bit) in 1 byte */
 };
 
+/*! \brief Definition of a single IE (Information Element) */
 struct tlv_def {
-	enum tlv_type type;
-	uint8_t fixed_len;
+	enum tlv_type type;	/*!< \brief TLV type */
+	uint8_t fixed_len;	/*!< \brief length in case of \ref TLV_TYPE_FIXED */
 };
 
+/*! \brief Definition of All 256 IE / TLV */
 struct tlv_definition {
 	struct tlv_def def[256];
 };
 
+/*! \brief result of the TLV parser */
 struct tlv_parsed {
 	struct tlv_p_entry lv[256];
 };
@@ -257,4 +300,6 @@
 #define TLVP_LEN(x, y)		(x)->lv[y].len
 #define TLVP_VAL(x, y)		(x)->lv[y].val
 
+/*! }@ */
+
 #endif /* _TLV_H */
