diff --git a/src/plugins/flowprobe/node.c b/src/plugins/flowprobe/node.c
index 8dfc47c..2dd49b3 100644
--- a/src/plugins/flowprobe/node.c
+++ b/src/plugins/flowprobe/node.c
@@ -26,7 +26,8 @@
 static void flowprobe_export_entry (vlib_main_t * vm, flowprobe_entry_t * e);
 
 /**
- * @file flow record generator graph node
+ * @file node.c
+ * flow record generator graph node
  */
 
 typedef struct
diff --git a/src/plugins/http_static/http_static.h b/src/plugins/http_static/http_static.h
index c882349..daa2ecf 100644
--- a/src/plugins/http_static/http_static.h
+++ b/src/plugins/http_static/http_static.h
@@ -31,8 +31,9 @@
 #include <vppinfra/tw_timer_2t_1w_2048sl.h>
 #include <vppinfra/bihash_vec8_8.h>
 
-/** @file Static http server definitions
-*/
+/** @file http_static.h
+ * Static http server definitions
+ */
 
 typedef struct
 {
diff --git a/src/plugins/http_static/static_server.c b/src/plugins/http_static/static_server.c
index 8945ee3..d7a7fcf 100644
--- a/src/plugins/http_static/static_server.c
+++ b/src/plugins/http_static/static_server.c
@@ -25,9 +25,10 @@
 
 #include <vppinfra/bihash_template.c>
 
-/** @file Static http server, sufficient to
-    serve .html / .css / .js content.
-*/
+/** @file static_server.c
+ *  Static http server, sufficient to
+ *  serve .html / .css / .js content.
+ */
 /*? %%clicmd:group_label Static HTTP Server %% ?*/
 
 http_static_server_main_t http_static_server_main;
@@ -299,6 +300,7 @@
 /** \brief send http data
     @param hs - http session
     @param data - the data vector to transmit
+    @param length - length of data
     @param offset - transmit offset for this operation
     @return offset for next transmit operation, may be unchanged w/ full fifo
 */
diff --git a/src/plugins/igmp/igmp.c b/src/plugins/igmp/igmp.c
index eea39d3..1c686e3 100644
--- a/src/plugins/igmp/igmp.c
+++ b/src/plugins/igmp/igmp.c
@@ -303,13 +303,6 @@
   return (rv);
 }
 
-/** \brief igmp hardware interface link up down
-    @param vnm - vnet main
-    @param hw_if_index - interface hw_if_index
-    @param flags - hw interface flags
-
-    If an interface goes down, remove its (S,G)s.
-*/
 static walk_rc_t
 igmp_sw_if_down (vnet_main_t * vnm, u32 sw_if_index, void *ctx)
 {
@@ -325,6 +318,13 @@
   return (WALK_CONTINUE);
 }
 
+/** \brief igmp hardware interface link up down
+    @param vnm - vnet main
+    @param hw_if_index - interface hw_if_index
+    @param flags - hw interface flags
+
+    If an interface goes down, remove its (S,G)s.
+*/
 static clib_error_t *
 igmp_hw_interface_link_up_down (vnet_main_t * vnm, u32 hw_if_index, u32 flags)
 {
diff --git a/src/plugins/igmp/igmp_api.h b/src/plugins/igmp/igmp_api.h
index cfeab92..81df4fd 100644
--- a/src/plugins/igmp/igmp_api.h
+++ b/src/plugins/igmp/igmp_api.h
@@ -33,11 +33,10 @@
 /**
  * @brief igmp listen (RFC3376 Section 2).
  * @param vm - vlib main
- * @param enable - 0 == remove (S,G), else add (S,G), aka. include/exclue
+ * @param enable - 0 == remove (S,G), else add (S,G), aka. include/exclude
  * @param sw_if_index - interface sw_if_index
  * @param saddr - source address
  * @param gaddr - group address
- * @param cli_api_configured - if zero, an igmp report has been received on interface
  *
  *   Add/del (S,G) on an interface. If user configured,
  *   send a status change report from the interface.
diff --git a/src/plugins/igmp/igmp_config.h b/src/plugins/igmp/igmp_config.h
index e3cd5d8..f03afe1 100644
--- a/src/plugins/igmp/igmp_config.h
+++ b/src/plugins/igmp/igmp_config.h
@@ -103,7 +103,6 @@
 
 /**
  * @brief igmp config lookup
- *  @param im - igmp main
  *  @param sw_if_index - interface sw_if_index
  */
 extern igmp_config_t *igmp_config_lookup (u32 sw_if_index);
diff --git a/src/plugins/igmp/igmp_proxy.h b/src/plugins/igmp/igmp_proxy.h
index 6d49159..b71b751 100644
--- a/src/plugins/igmp/igmp_proxy.h
+++ b/src/plugins/igmp/igmp_proxy.h
@@ -26,7 +26,7 @@
   /* VRF index */
   u32 vrf_id;
 
-  /* upstrema interface */
+  /* upstream interface */
   u32 upstream_if;
 
   /* downstream interfaces */
@@ -41,7 +41,7 @@
  *
  * Add/del IGMP proxy device. Interface must be IGMP enabled in HOST mode.
  */
-int igmp_proxy_device_add_del (u32 vfr_id, u32 sw_if_index, u8 add);
+int igmp_proxy_device_add_del (u32 vrf_id, u32 sw_if_index, u8 add);
 
 /**
  * @brief IGMP proxy device add/del interface
diff --git a/src/plugins/igmp/igmp_timer.c b/src/plugins/igmp/igmp_timer.c
index afa0c36..2d38dd0 100644
--- a/src/plugins/igmp/igmp_timer.c
+++ b/src/plugins/igmp/igmp_timer.c
@@ -95,7 +95,6 @@
 }
 
 /** \brief igmp get next timer
-    @param im - igmp main
 
     Get next timer.
 */
diff --git a/src/plugins/ioam/ipfixcollector/ipfixcollector.c b/src/plugins/ioam/ipfixcollector/ipfixcollector.c
index 4d6735f..37b828c 100644
--- a/src/plugins/ioam/ipfixcollector/ipfixcollector.c
+++ b/src/plugins/ioam/ipfixcollector/ipfixcollector.c
@@ -26,9 +26,9 @@
  * This function can be used by other VPP graph nodes to receive IP-FIX packets
  * with a particular setid.
  *
- * @param vlib_main_t Vlib main of the graph node which is interseted in
+ * @param vm Vlib main of the graph node which is interested in
  *                    getting IP-Fix packet.
- * @param ipfix_client_add_del_t Structure describing the client node which
+ * @param info Structure describing the client node which
  *                               is interested in getting the IP-Fix packets for
  *                               a SetID.
  *
diff --git a/src/plugins/ioam/ipfixcollector/ipfixcollector.h b/src/plugins/ioam/ipfixcollector/ipfixcollector.h
index ee57031..182f12d 100644
--- a/src/plugins/ioam/ipfixcollector/ipfixcollector.h
+++ b/src/plugins/ioam/ipfixcollector/ipfixcollector.h
@@ -36,7 +36,7 @@
   /** Node index where packets have to be redirected. */
   u32 client_node;
 
-  /** Setid of IPFix for which client is intereseted in getting packets. */
+  /** Setid of IPFix for which client is interested in getting packets. */
   u16 ipfix_setid;
 
   /** Add(0) or del(1) operation. */
@@ -58,7 +58,7 @@
   /** ipfix-collector next index where packets have to be redirected. */
   u32 client_next_node;
 
-  /** Setid of IPFix for which client is intereseted in getting packets. */
+  /** Setid of IPFix for which client is interested in getting packets. */
   u16 set_id;
 } ipfix_client;
 
@@ -91,9 +91,9 @@
  * This function can be used by other VPP graph nodes to receive IP-FIX packets
  * with a particular setid.
  *
- * @param vlib_main_t Vlib main of the graph node which is interseted in
+ * @param vm Vlib main of the graph node which is interested in
  *                    getting IP-Fix packet.
- * @param ipfix_client_add_del_t Structure describing the client node which
+ * @param info Structure describing the client node which
  *                               is interested in getting the IP-Fix packets for
  *                               a SetID.
  *
diff --git a/src/plugins/ioam/udp-ping/udp_ping_node.c b/src/plugins/ioam/udp-ping/udp_ping_node.c
index cf38bf6..6bfa8f6 100644
--- a/src/plugins/ioam/udp-ping/udp_ping_node.c
+++ b/src/plugins/ioam/udp-ping/udp_ping_node.c
@@ -391,8 +391,8 @@
  * out udp probe packets for all configured sessions.
  *
  * @param vm    vlib_main_t corresponding to the current thread.
- * @param node  vlib_node_runtime_t data for this node.
- * @param frame vlib_frame_t whose contents should be dispatched.
+ * @param rt    vlib_node_runtime_t data for this node.
+ * @param f     vlib_frame_t whose contents should be dispatched.
  *
  */
 uword
diff --git a/src/plugins/l3xc/l3xc.h b/src/plugins/l3xc/l3xc.h
index d5e1d37..9daecd0 100644
--- a/src/plugins/l3xc/l3xc.h
+++ b/src/plugins/l3xc/l3xc.h
@@ -64,7 +64,8 @@
 /**
  * Create or update an L3XC Policy
  *
- * @param sw_if_index_index the input interface
+ * @param sw_if_index the input interface
+ * @param is_ipv6 - 0 if ip4, 1 if ip6
  * @param rpaths The set of paths to add to the forwarding set
  * @return error code
  */
@@ -74,7 +75,8 @@
 /**
  * Delete an L3XC.
  *
- * @param sw_if_index_index the input interface
+ * @param sw_if_index the input interface
+ * @param is_ipv6 - 0 if ip4, 1 if ip6
  */
 extern int l3xc_delete (u32 sw_if_index, u8 is_ip6);
 
@@ -89,7 +91,7 @@
 extern void l3xc_walk (l3xc_walk_cb_t cb, void *ctx);
 
 /**
- * Find a L3 XC object from an interfce and FIB protocol
+ * Find a L3 XC object from an interface and FIB protocol
  */
 extern index_t l3xc_find (u32 sw_if_index, fib_protocol_t fproto);
 
diff --git a/src/plugins/lb/lb.h b/src/plugins/lb/lb.h
index 9899eab..ebbb1f6 100644
--- a/src/plugins/lb/lb.h
+++ b/src/plugins/lb/lb.h
@@ -592,6 +592,8 @@
  * Fix global load-balancer parameters.
  * @param ip4_address IPv4 source address used for encapsulated traffic
  * @param ip6_address IPv6 source address used for encapsulated traffic
+ * @param sticky_buckets FIXME
+ * @param flow_timeout FIXME
  * @return 0 on success. VNET_LB_ERR_XXX on error
  */
 int lb_conf(ip4_address_t *ip4_address, ip6_address_t *ip6_address,
diff --git a/src/plugins/mactime/mactime.c b/src/plugins/mactime/mactime.c
index bcd40b4..2add0e6 100644
--- a/src/plugins/mactime/mactime.c
+++ b/src/plugins/mactime/mactime.c
@@ -37,7 +37,8 @@
 
 mactime_main_t mactime_main;
 
-/** \file time-base src-mac filter device-input feature arc implementation
+/** \file mactime.c
+ * time-base src-mac filter device-input feature arc implementation
  */
 
 static void
diff --git a/src/plugins/mdata/mdata.c b/src/plugins/mdata/mdata.c
index 830673e..fc5bbfb 100644
--- a/src/plugins/mdata/mdata.c
+++ b/src/plugins/mdata/mdata.c
@@ -32,7 +32,8 @@
 
 mdata_main_t mdata_main;
 
-/** @file buffer metadata change tracker
+/** @file mdata.c
+ * buffer metadata change tracker
  */
 
 static mdata_t mdata_none;
diff --git a/src/plugins/mdata/mdata.h b/src/plugins/mdata/mdata.h
index 6f38918..c6bc4bd 100644
--- a/src/plugins/mdata/mdata.h
+++ b/src/plugins/mdata/mdata.h
@@ -23,7 +23,8 @@
 #include <vppinfra/hash.h>
 #include <vppinfra/error.h>
 
-/** @file buffer metadata change tracker definitions
+/** @file mdata.h
+ * buffer metadata change tracker definitions
  */
 
 typedef struct
diff --git a/src/plugins/nat/in2out.c b/src/plugins/nat/in2out.c
index 10acf18..3f8c4ab 100755
--- a/src/plugins/nat/in2out.c
+++ b/src/plugins/nat/in2out.c
@@ -446,6 +446,7 @@
  * @param[in,out] node           NAT node runtime
  * @param[in] thread_index       thread index
  * @param[in,out] b0             buffer containing packet to be translated
+ * @param[in,out] ip0            ip header
  * @param[out] p_proto           protocol used for matching
  * @param[out] p_value           address and port after NAT translation
  * @param[out] p_dont_translate  if packet should not be translated
@@ -569,6 +570,7 @@
  * @param[in,out] node           NAT node runtime
  * @param[in] thread_index       thread index
  * @param[in,out] b0             buffer containing packet to be translated
+ * @param[in,out] ip0            ip header
  * @param[out] p_proto           protocol used for matching
  * @param[out] p_value           address and port after NAT translation
  * @param[out] p_dont_translate  if packet should not be translated
diff --git a/src/plugins/nat/nat.h b/src/plugins/nat/nat.h
index bc998da..4a3ae65 100644
--- a/src/plugins/nat/nat.h
+++ b/src/plugins/nat/nat.h
@@ -13,7 +13,8 @@
  * limitations under the License.
  */
 /**
- * @file NAT plugin global declarations
+ * @file nat.c
+ * NAT plugin global declarations
  */
 #ifndef __included_nat_h__
 #define __included_nat_h__
@@ -512,7 +513,7 @@
 						 u32 rx_fib_index,
 						 u8 is_output);
 
-/* NAT address and port allacotaion function */
+/* NAT address and port allocation function */
 typedef int (nat_alloc_out_addr_and_port_function_t) (snat_address_t *
 						      addresses,
 						      u32 fib_index,
@@ -570,7 +571,7 @@
   /* vector of outside fibs */
   nat_outside_fib_t *outside_fibs;
 
-  /* Vector of twice NAT addresses for extenal hosts */
+  /* Vector of twice NAT addresses for external hosts */
   snat_address_t *twice_nat_addresses;
 
   /* sw_if_indices whose intfc addresses should be auto-added */
@@ -770,13 +771,13 @@
 #define is_affinity_sessions(s) (s->flags & SNAT_SESSION_FLAG_AFFINITY)
 
 /** \brief Check if NAT interface is inside.
-    @param i NAT interfce
+    @param i NAT interface
     @return 1 if inside interface
 */
 #define nat_interface_is_inside(i) i->flags & NAT_INTERFACE_FLAG_IS_INSIDE
 
 /** \brief Check if NAT interface is outside.
-    @param i NAT interfce
+    @param i NAT interface
     @return 1 if outside interface
 */
 #define nat_interface_is_outside(i) i->flags & NAT_INTERFACE_FLAG_IS_OUTSIDE
@@ -1088,6 +1089,7 @@
 /**
  * @brief Add external address to NAT44 pool
  *
+ * @param sm        snat global configuration data
  * @param addr      IPv4 address
  * @param vrf_id    VRF id of tenant, ~0 means independent of VRF
  * @param twice_nat 1 if twice NAT address
@@ -1100,6 +1102,7 @@
 /**
  * @brief Delete external address from NAT44 pool
  *
+ * @param sm        snat global configuration data
  * @param addr      IPv4 address
  * @param delete_sm 1 if delete static mapping using address
  * @param twice_nat 1 if twice NAT address
@@ -1206,11 +1209,11 @@
 					   int is_del);
 
 /**
- * @brief Add/delete NAT44 pool address from specific interfce
+ * @brief Add/delete NAT44 pool address from specific interface
  *
  * @param sw_if_index software index of the interface
  * @param is_del      1 = delete, 0 = add
- * @param twice_nat   1 = twice NAT address for extenal hosts
+ * @param twice_nat   1 = twice NAT address for external hosts
  *
  * @return 0 on success, non-zero value otherwise
  */
@@ -1234,6 +1237,7 @@
 /**
  * @brief Delete NAT44 endpoint-dependent session
  *
+ * @param sm     snat global configuration data
  * @param addr   IPv4 address
  * @param port   L4 port number
  * @param proto  L4 protocol
@@ -1247,8 +1251,9 @@
 			  u32 vrf_id, int is_in);
 
 /**
- * @brief Free NAT44 session data (lookup keys, external addrres port)
+ * @brief Free NAT44 session data (lookup keys, external address port)
  *
+ * @param sm           snat global configuration data
  * @param s            NAT session
  * @param thread_index thread index
  * @param is_ha        is HA event
@@ -1257,6 +1262,7 @@
 			    u32 thread_index, u8 is_ha);
 
 /**
+<<<<<<< bdfe5955f59a735fd8d70e9026f8c1867a4c8cc6
  * @brief Set NAT44 session limit (session limit, vrf id)
  *
  * @param session_limit Session limit
@@ -1267,6 +1273,9 @@
 
 /**
  * @brief Free NAT44 ED session data (lookup keys, external addrres port)
+=======
+ * @brief Free NAT44 ED session data (lookup keys, external address port)
+>>>>>>> docs: clean up make docs job
  *
  * @param s            NAT session
  * @param thread_index thread index
@@ -1293,6 +1302,7 @@
 /**
  * @brief Find or create NAT user
  *
+ * @param sm           snat global configuration data
  * @param addr         IPv4 address
  * @param fib_index    FIB table index
  * @param thread_index thread index
@@ -1306,8 +1316,10 @@
 /**
  * @brief Allocate new NAT session or recycle last used
  *
+ * @param sm           snat global configuration data
  * @param u            NAT user
  * @param thread_index thread index
+ * @param now          time now
  *
  * @return session data structure on success otherwise zero value
  */
@@ -1318,7 +1330,9 @@
 /**
  * @brief Allocate NAT endpoint-dependent session
  *
+ * @param sm           snat global configuration data
  * @param thread_index thread index
+ * @param now          time now
  *
  * @return session data structure on success otherwise zero value
  */
@@ -1366,7 +1380,7 @@
  * @param fib_index         FIB table index
  * @param thread_index      thread index
  * @param k                 allocated address and port pair
- * @param port_per_thread   number of ports per threead
+ * @param port_per_thread   number of ports per thread
  * @param snat_thread_index NAT thread index
  *
  * @return 0 on success, non-zero value otherwise
diff --git a/src/plugins/nat/nat_det_in2out.c b/src/plugins/nat/nat_det_in2out.c
index 22b7637..057b261 100644
--- a/src/plugins/nat/nat_det_in2out.c
+++ b/src/plugins/nat/nat_det_in2out.c
@@ -85,6 +85,7 @@
  * @param[in,out] node           NAT node runtime
  * @param[in] thread_index       thread index
  * @param[in,out] b0             buffer containing packet to be translated
+ * @param[in,out] ip0            ip header
  * @param[out] p_proto           protocol used for matching
  * @param[out] p_value           address and port after NAT translation
  * @param[out] p_dont_translate  if packet should not be translated
diff --git a/src/plugins/nat/nat_det_out2in.c b/src/plugins/nat/nat_det_out2in.c
index 74210e1..d45df4d 100644
--- a/src/plugins/nat/nat_det_out2in.c
+++ b/src/plugins/nat/nat_det_out2in.c
@@ -85,6 +85,7 @@
  * @param[in,out] node           NAT node runtime
  * @param[in] thread_index       thread index
  * @param[in,out] b0             buffer containing packet to be translated
+ * @param[in,out] ip0            ip header
  * @param[out] p_proto           protocol used for matching
  * @param[out] p_value           address and port after NAT translation
  * @param[out] p_dont_translate  if packet should not be translated
diff --git a/src/plugins/nat/out2in.c b/src/plugins/nat/out2in.c
index f920599..e931903 100755
--- a/src/plugins/nat/out2in.c
+++ b/src/plugins/nat/out2in.c
@@ -315,6 +315,7 @@
  * @param[in,out] node           NAT node runtime
  * @param[in] thread_index       thread index
  * @param[in,out] b0             buffer containing packet to be translated
+ * @param[in,out] ip0            ip header
  * @param[out] p_proto           protocol used for matching
  * @param[out] p_value           address and port after NAT translation
  * @param[out] p_dont_translate  if packet should not be translated
@@ -449,6 +450,7 @@
  * @param[in,out] node           NAT node runtime
  * @param[in] thread_index       thread index
  * @param[in,out] b0             buffer containing packet to be translated
+ * @param[in,out] ip0            ip header
  * @param[out] p_proto           protocol used for matching
  * @param[out] p_value           address and port after NAT translation
  * @param[out] p_dont_translate  if packet should not be translated
diff --git a/src/vlibapi/api_common.h b/src/vlibapi/api_common.h
index 2105f1b..0ea0943 100644
--- a/src/vlibapi/api_common.h
+++ b/src/vlibapi/api_common.h
@@ -20,7 +20,8 @@
 #ifndef included_api_common_h
 #define included_api_common_h
 
-/** \file API common definitions
+/** \file api_common.h
+ *  API common definitions
  * See api_doc.md for more info
  */
 
diff --git a/src/vnet/dpo/dpo.h b/src/vnet/dpo/dpo.h
index 19b47f2..d3c2371 100644
--- a/src/vnet/dpo/dpo.h
+++ b/src/vnet/dpo/dpo.h
@@ -284,12 +284,12 @@
 extern int dpo_is_adj(const dpo_id_t *dpo);
 
 /**
- * @biref Format a DPO_id_t oject
+ * @brief Format a DPO_id_t oject
  */
 extern u8 *format_dpo_id(u8 * s, va_list * args);
 
 /**
- * @biref format a DPO type
+ * @brief format a DPO type
  */
 extern u8 *format_dpo_type(u8 * s, va_list * args);
 
diff --git a/src/vnet/fib/fib_walk.c b/src/vnet/fib/fib_walk.c
index a09e34d..7c832df 100644
--- a/src/vnet/fib/fib_walk.c
+++ b/src/vnet/fib/fib_walk.c
@@ -400,7 +400,7 @@
 }
 
 /**
- * @breif Enurmerate the times of sleep between walks
+ * @brief Enurmerate the times of sleep between walks
  */
 typedef enum fib_walk_sleep_type_t_
 {
diff --git a/src/vnet/ip/ip6.h b/src/vnet/ip/ip6.h
index 5e16f99..ad70b7e 100644
--- a/src/vnet/ip/ip6.h
+++ b/src/vnet/ip/ip6.h
@@ -338,7 +338,7 @@
 void ip6_sw_interface_enable_disable (u32 sw_if_index, u32 is_enable);
 
 /**
- * @brie get first IPv6 interface address
+ * @brief get first IPv6 interface address
  */
 ip6_address_t *ip6_interface_first_address (ip6_main_t * im, u32 sw_if_index);
 
diff --git a/src/vnet/lisp-gpe/lisp_gpe_tenant.c b/src/vnet/lisp-gpe/lisp_gpe_tenant.c
index 8da1fd4..e2a310c 100644
--- a/src/vnet/lisp-gpe/lisp_gpe_tenant.c
+++ b/src/vnet/lisp-gpe/lisp_gpe_tenant.c
@@ -272,7 +272,7 @@
 }
 
 /**
- * @brif Show/display one tenant
+ * @brief Show/display one tenant
  */
 static u8 *
 format_lisp_gpe_tenant (u8 * s, va_list * ap)
diff --git a/src/vnet/lldp/dir.dox b/src/vnet/lldp/dir.dox
index 6aa45f7..84870f8 100644
--- a/src/vnet/lldp/dir.dox
+++ b/src/vnet/lldp/dir.dox
@@ -13,6 +13,6 @@
  * limitations under the License.
  */
 /**
- @dir vnet/vnet/lldp
+ @dir src/vnet/lldp
  @brief Link Layer Discovery Protocol (LLDP) implementation
 */
diff --git a/src/vnet/mpls/mpls_tunnel.h b/src/vnet/mpls/mpls_tunnel.h
index 11a461b..c060191 100644
--- a/src/vnet/mpls/mpls_tunnel.h
+++ b/src/vnet/mpls/mpls_tunnel.h
@@ -123,7 +123,7 @@
                                          fib_route_path_t *rpath);
 
 /**
- * @vrief return the tunnel index from the sw_if_index
+ * @brief return the tunnel index from the sw_if_index
  */
 extern int vnet_mpls_tunnel_get_index (u32 sw_if_index);
 
diff --git a/src/vnet/syslog/syslog.c b/src/vnet/syslog/syslog.c
index f104691..f05ce8d 100644
--- a/src/vnet/syslog/syslog.c
+++ b/src/vnet/syslog/syslog.c
@@ -13,7 +13,8 @@
  * limitations under the License.
  */
 /**
- * @file RFC5424 syslog protocol implementation
+ * @file syslog.c
+ * RFC5424 syslog protocol implementation
  */
 
 #include <unistd.h>
diff --git a/src/vnet/syslog/syslog.h b/src/vnet/syslog/syslog.h
index ed91587..4809af4 100644
--- a/src/vnet/syslog/syslog.h
+++ b/src/vnet/syslog/syslog.h
@@ -13,7 +13,8 @@
  * limitations under the License.
  */
 /**
- * @file RFC5424 syslog protocol declarations
+ * @file syslog.h
+ * RFC5424 syslog protocol declarations
  */
 #ifndef __included_syslog_h__
 #define __included_syslog_h__
diff --git a/src/vnet/syslog/syslog_udp.c b/src/vnet/syslog/syslog_udp.c
index f4fa1d0..a3b3bc4 100644
--- a/src/vnet/syslog/syslog_udp.c
+++ b/src/vnet/syslog/syslog_udp.c
@@ -13,7 +13,8 @@
  * limitations under the License.
  */
 /**
- * @file syslog protocol UDP transport layer implementation (RFC5426)
+ * @file syslog_udp.c
+ * syslog protocol UDP transport layer implementation (RFC5426)
  */
 
 #include <vnet/syslog/syslog_udp.h>
diff --git a/src/vnet/syslog/syslog_udp.h b/src/vnet/syslog/syslog_udp.h
index 008fed7..8bbedcd 100644
--- a/src/vnet/syslog/syslog_udp.h
+++ b/src/vnet/syslog/syslog_udp.h
@@ -13,7 +13,8 @@
  * limitations under the License.
  */
 /**
- * @file syslog protocol UDP transport layer declaration (RFC5426)
+ * @file syslog_udp.h
+ * syslog protocol UDP transport layer declaration (RFC5426)
  */
 #ifndef __included_syslog_udp_h__
 #define __included_syslog_udp_h__
diff --git a/src/vppinfra/random.c b/src/vppinfra/random.c
index ea89f0a..f16f396 100644
--- a/src/vppinfra/random.c
+++ b/src/vppinfra/random.c
@@ -37,7 +37,8 @@
 
 #include <vppinfra/random.h>
 
-/** \file Random number support
+/** \file random.c
+    Random number support
  */
 
 /** \brief Default random seed for standalone version of library.
