diff --git a/core/api/src/main/java/org/onosproject/net/behaviour/TunnelDescription.java b/core/api/src/main/java/org/onosproject/net/behaviour/TunnelDescription.java
index a06ea23..7b6fd92 100644
--- a/core/api/src/main/java/org/onosproject/net/behaviour/TunnelDescription.java
+++ b/core/api/src/main/java/org/onosproject/net/behaviour/TunnelDescription.java
@@ -185,6 +185,7 @@
         /**
          * Returns tunnel interface description builder with a tunnel key.
          *
+         * @param tunnelKey tunnel key
          * @return tunnel description builder
          */
         Builder key(TunnelKey tunnelKey);
diff --git a/core/api/src/main/java/org/onosproject/net/config/NetworkConfigService.java b/core/api/src/main/java/org/onosproject/net/config/NetworkConfigService.java
index d1d280f..26c11b8 100644
--- a/core/api/src/main/java/org/onosproject/net/config/NetworkConfigService.java
+++ b/core/api/src/main/java/org/onosproject/net/config/NetworkConfigService.java
@@ -182,6 +182,7 @@
      * Clears the  configuration including queued based on the subject.
      * If does not exists this call has no effect.
      *
+     * @param <S>               type of subject
      * @param subject           configuration subject
      */
     <S> void removeConfig(S subject);
@@ -190,6 +191,7 @@
      * Clears the complete configuration including queued.
      * If does not exists this call has no effect.
      *
+     * @param <S>               type of subject
      */
     <S> void removeConfig();
 }
diff --git a/core/api/src/main/java/org/onosproject/net/config/NetworkConfigStore.java b/core/api/src/main/java/org/onosproject/net/config/NetworkConfigStore.java
index 62c3ffa..b3d4ae1 100644
--- a/core/api/src/main/java/org/onosproject/net/config/NetworkConfigStore.java
+++ b/core/api/src/main/java/org/onosproject/net/config/NetworkConfigStore.java
@@ -155,6 +155,7 @@
      * Clears the  configuration based on the subject including queued.
      * If does not exists this call has no effect.
      *
+     * @param <S>               type of subject
      * @param subject   configuration subject
      */
     <S> void clearConfig(S subject);
@@ -163,6 +164,7 @@
      * Clears the complete configuration including queued.
      * If does not exists this call has no effect.
      *
+     * @param <S>               type of subject
      */
     <S> void clearConfig();
 
diff --git a/core/api/src/main/java/org/onosproject/net/driver/BehaviourClassResolver.java b/core/api/src/main/java/org/onosproject/net/driver/BehaviourClassResolver.java
index a5474f0..b49e439 100644
--- a/core/api/src/main/java/org/onosproject/net/driver/BehaviourClassResolver.java
+++ b/core/api/src/main/java/org/onosproject/net/driver/BehaviourClassResolver.java
@@ -24,7 +24,7 @@
     /**
      * Returns the class corresponding to the specified class name.
      * @param className class className
-     * @return
+     * @return class for the resolver
      */
     Class<? extends Behaviour> getBehaviourClass(String className);
 
diff --git a/core/api/src/main/java/org/onosproject/net/flow/FlowEntry.java b/core/api/src/main/java/org/onosproject/net/flow/FlowEntry.java
index 1511d21..c56abbf 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/FlowEntry.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/FlowEntry.java
@@ -71,6 +71,7 @@
     /**
      * Returns the time this flow rule has been applied.
      *
+     * @param unit time unit the result will be converted to
      * @return time in the requested {@link TimeUnit}
      */
     long life(TimeUnit unit);
diff --git a/core/api/src/main/java/org/onosproject/net/link/ProbedLinkProvider.java b/core/api/src/main/java/org/onosproject/net/link/ProbedLinkProvider.java
index 6a04f83..3b633ac 100644
--- a/core/api/src/main/java/org/onosproject/net/link/ProbedLinkProvider.java
+++ b/core/api/src/main/java/org/onosproject/net/link/ProbedLinkProvider.java
@@ -36,6 +36,9 @@
     /**
      * Build a stringified MAC address using the ClusterMetadata hash for uniqueness.
      * Form of MAC is "02:eb" followed by four bytes of clusterMetadata hash.
+     *
+     * @param cm cluster metadata
+     * @return stringified mac address
      */
     static String fingerprintMac(ClusterMetadata cm) {
         if (cm == null) {
diff --git a/core/api/src/main/java/org/onosproject/net/resource/ResourceConsumerId.java b/core/api/src/main/java/org/onosproject/net/resource/ResourceConsumerId.java
index 630c845..6bc6261 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/ResourceConsumerId.java
+++ b/core/api/src/main/java/org/onosproject/net/resource/ResourceConsumerId.java
@@ -94,6 +94,7 @@
     /**
      * Creates ResourceConsumerId from given value and class.
      *
+     * @param <T> resource consumer class type
      * @param value ID value unique within the given class
      * @param cls class of ResourceConsumer implementation
      * @return created ResourceConsumerId object
@@ -105,6 +106,7 @@
     /**
      * Creates ResourceConsumerId instance from Identifier object.
      *
+     * @param <T> resource consumer class type
      * @param id identifier object backed by Long value
      * @return created ResourceConsumerId object
      */
diff --git a/core/api/src/main/java/org/onosproject/net/utils/ForwardingPort.java b/core/api/src/main/java/org/onosproject/net/utils/ForwardingPort.java
index 7485b1e..8d48d47 100644
--- a/core/api/src/main/java/org/onosproject/net/utils/ForwardingPort.java
+++ b/core/api/src/main/java/org/onosproject/net/utils/ForwardingPort.java
@@ -59,6 +59,9 @@
      * call {@code super.toEqualsBuilder(..)} and append fields.
      * To remove field from comparison, override this method
      * or manually implement equals().
+     *
+     * @param that object to compare to
+     * @return builder object
      */
     protected EqualsBuilder toEqualsBuilder(Port that) {
         if (that == null) {
