diff --git a/openbsc/src/libbsc/abis_rsl.c b/openbsc/src/libbsc/abis_rsl.c
index 03ad8da..12f68e9 100644
--- a/openbsc/src/libbsc/abis_rsl.c
+++ b/openbsc/src/libbsc/abis_rsl.c
@@ -1785,6 +1785,9 @@
 	}
 }
 
+/*! \brief Issue IPA RSL CRCX to configure RTP on BTS side
+ *  \param[in] lchan Logical Channel for which we issue CRCX
+ */
 int rsl_ipacc_crcx(struct gsm_lchan *lchan)
 {
 	struct msgb *msg = rsl_msgb_alloc();
@@ -1810,6 +1813,12 @@
 	return abis_rsl_sendmsg(msg);
 }
 
+/*! \brief Issue IPA RSL MDCX to configure MGW-side of RTP
+ *  \param[in] lchan Logical Channel for which we issue MDCX
+ *  \param[in] ip Remote (MGW) IP address for RTP
+ *  \param[in] port Remote (MGW) UDP port number for RTP
+ *  \param[in] rtp_payload2 Contents of RTP PAYLOAD 2 IE
+ */
 int rsl_ipacc_mdcx(struct gsm_lchan *lchan, uint32_t ip, uint16_t port,
 		   uint8_t rtp_payload2)
 {
diff --git a/openbsc/src/libtrau/rtp_proxy.c b/openbsc/src/libtrau/rtp_proxy.c
index f7c5a4f..0074b4a 100644
--- a/openbsc/src/libtrau/rtp_proxy.c
+++ b/openbsc/src/libtrau/rtp_proxy.c
@@ -1,6 +1,6 @@
 /* RTP proxy handling for ip.access nanoBTS */
 
-/* (C) 2009 by Harald Welte <laforge@gnumonks.org>
+/* (C) 2009-2013 by Harald Welte <laforge@gnumonks.org>
  * All Rights Reserved
  *
  * This program is free software; you can redistribute it and/or modify
@@ -212,7 +212,10 @@
 	diff->tv_sec = to->tv_sec - from->tv_sec;
 }
 
-/* encode and send a rtp frame */
+/*! \brief encode and send a rtp frame
+ *  \param[in] rs RTP socket through which we shall send
+ *  \param[in] frame GSM RTP frame to be sent
+ */
 int rtp_send_frame(struct rtp_socket *rs, struct gsm_data_frame *frame)
 {
 	struct rtp_sub_socket *rss = &rs->rtp;
@@ -464,7 +467,7 @@
 	return rc;
 }
 
-/* write from tx_queue to RTP/RTCP socket */
+/* \brief write from tx_queue to RTP/RTCP socket */
 static int rtp_socket_write(struct rtp_socket *rs, struct rtp_sub_socket *rss)
 {
 	struct msgb *msg;
@@ -489,7 +492,7 @@
 }
 
 
-/* callback for the select.c:bfd_* layer */
+/*! \brief callback for the select.c:bfd_* layer */
 static int rtp_bfd_cb(struct osmo_fd *bfd, unsigned int flags)
 {
 	struct rtp_socket *rs = bfd->data;
@@ -515,6 +518,7 @@
 	return 0;
 }
 
+/*! \brief initialize one rtp sub-socket */
 static void init_rss(struct rtp_sub_socket *rss,
 		     struct rtp_socket *rs, int fd, int priv_nr)
 {
@@ -525,6 +529,7 @@
 	rss->bfd.cb = rtp_bfd_cb;
 }
 
+/*! \brief create a new RTP/RTCP socket and bind it */
 struct rtp_socket *rtp_socket_create(void)
 {
 	int rc;
@@ -604,7 +609,10 @@
 #define RTP_PORT_BASE	30000
 static unsigned int next_udp_port = RTP_PORT_BASE;
 
-/* bind a RTP socket to a local address */
+/*! \brief bind a RTP socket to a specific local address
+ *  \param[in] rs RTP socket to be bound
+ *  \param[in] ip local IP address to which socket is to be bound
+ */
 int rtp_socket_bind(struct rtp_socket *rs, uint32_t ip)
 {
 	int rc = -EIO;
@@ -655,7 +663,11 @@
 			   &alen);
 }
 
-/* 'connect' a RTP socket to a remote peer */
+/*! \brief 'connect' a RTP socket to a remote peer
+ *  \param[in] rs RTP socket to be connected
+ *  \param[in] ip remote IP address to which to connect
+ *  \param[in] port remote UDP port number to which to connect
+ */
 int rtp_socket_connect(struct rtp_socket *rs, uint32_t ip, uint16_t port)
 {
 	int rc;
@@ -672,7 +684,10 @@
 	return rtp_sub_socket_connect(&rs->rtcp, ip, port+1);
 }
 
-/* bind two RTP/RTCP sockets together */
+/*! \brief bind two RTP/RTCP sockets together in the proxy
+ *  \param[in] this First RTP socket
+ *  \param[in] other Second RTP socket
+ */
 int rtp_socket_proxy(struct rtp_socket *this, struct rtp_socket *other)
 {
 	DEBUGP(DLMUX, "rtp_socket_proxy(this=%p, other=%p)\n",
@@ -687,7 +702,11 @@
 	return 0;
 }
 
-/* bind RTP/RTCP socket to application */
+/*! \brief bind RTP/RTCP socket to application, disabling proxy
+ *  \param[in] this RTP socket
+ *  \param[in] net gsm_network argument to trau_tx_to_mncc()
+ *  \param[in] callref callref argument to trau_tx_to_mncc()
+ */
 int rtp_socket_upstream(struct rtp_socket *this, struct gsm_network *net,
 			uint32_t callref)
 {
@@ -712,6 +731,9 @@
 		msgb_free(msg);
 }
 
+/*! \brief Free/release a previously allocated RTP socket
+ *  \param[in[] rs RTP/RTCP socket to be released
+ */
 int rtp_socket_free(struct rtp_socket *rs)
 {
 	DEBUGP(DLMUX, "rtp_socket_free(rs=%p)\n", rs);
