diff --git a/apps/patchpanel/src/main/java/org/onosproject/patchpanel/impl/PatchPanelService.java b/apps/patchpanel/src/main/java/org/onosproject/patchpanel/impl/PatchPanelService.java
index 8c9921f..affb6a5 100644
--- a/apps/patchpanel/src/main/java/org/onosproject/patchpanel/impl/PatchPanelService.java
+++ b/apps/patchpanel/src/main/java/org/onosproject/patchpanel/impl/PatchPanelService.java
@@ -27,6 +27,7 @@
      *
      * @param cp    the first connect point
      * @param cp2   the second connect point
+     * @return      true if the patch was created, false otherwise
      */
     boolean addPatch(ConnectPoint cp, ConnectPoint cp2);
 }
diff --git a/drivers/default/src/main/java/org/onosproject/driver/pipeline/Ofdpa2Pipeline.java b/drivers/default/src/main/java/org/onosproject/driver/pipeline/Ofdpa2Pipeline.java
index 4600eb8..f2fcdab 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/pipeline/Ofdpa2Pipeline.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/pipeline/Ofdpa2Pipeline.java
@@ -834,6 +834,7 @@
      *
      * @param fwd the forwarding objective
      * @param allowDefaultRoute allow wildcarded IPv4_DST or not
+     * @param mplsNextTable next MPLS table
      * @return A collection of flow rules, or an empty set
      */
     protected Collection<FlowRule> processEthTypeSpecificInternal(ForwardingObjective fwd,
diff --git a/drivers/fujitsu/src/main/java/org/onosproject/drivers/fujitsu/behaviour/VoltFwdlConfig.java b/drivers/fujitsu/src/main/java/org/onosproject/drivers/fujitsu/behaviour/VoltFwdlConfig.java
index 221c5b1..baef4d8 100644
--- a/drivers/fujitsu/src/main/java/org/onosproject/drivers/fujitsu/behaviour/VoltFwdlConfig.java
+++ b/drivers/fujitsu/src/main/java/org/onosproject/drivers/fujitsu/behaviour/VoltFwdlConfig.java
@@ -28,6 +28,7 @@
      * Upgrade firmware manually in an ONU in the device.
      *
      * @param target input data in string
+     * @return string representing the reply
      */
     String upgradeFirmwareOndemand(String target);
 
diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisInterface.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisInterface.java
index 864b6e5..49bfd74 100644
--- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisInterface.java
+++ b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/DefaultIsisInterface.java
@@ -512,6 +512,7 @@
      *
      * @param isisMessage received ISIS message
      * @param isisLsdb    ISIS LSDB instance
+     * @param channel     channel
      */
     public void processIsisMessage(IsisMessage isisMessage, IsisLsdb isisLsdb, Channel channel) {
         log.debug("IsisInterfaceImpl::processIsisMessage...!!!");
@@ -1122,4 +1123,4 @@
         exServiceHello.shutdown();
         helloSenderStarted = false;
     }
-}
\ No newline at end of file
+}
diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/LspEventConsumer.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/LspEventConsumer.java
index 8730814..590be7b 100755
--- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/LspEventConsumer.java
+++ b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/LspEventConsumer.java
@@ -230,7 +230,6 @@
      *
      * @param localSystemId  local system ID
      * @param remoteSystemId remote system ID
-     * @return link information
      * @param interfaceIp interface address
      * @param neighborIp neighbor address
      * @param lsPdu link state PDU instance
@@ -351,4 +350,4 @@
         }
         return isisLinkTed;
     }
-}
\ No newline at end of file
+}
diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLsdb.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLsdb.java
index 2062ccc..3be5e89 100755
--- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLsdb.java
+++ b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/lsdb/DefaultIsisLsdb.java
@@ -236,6 +236,9 @@
     /**
      * Installs a new self-originated LSP.
      *
+     * @param isisMessage ISIS message
+     * @param isSelfOriginated is the message self originated?
+     * @param isisInterface ISIS interface
      * @return true if successfully added
      */
     public boolean addLsp(IsisMessage isisMessage, boolean isSelfOriginated, IsisInterface isisInterface) {
@@ -431,4 +434,4 @@
             log.debug("Added LSp In Blocking queue: {}", lspWrapper);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/DefaultIsisRouter.java b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/DefaultIsisRouter.java
index 90bc131..9c459b8 100644
--- a/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/DefaultIsisRouter.java
+++ b/protocols/isis/ctl/src/main/java/org/onosproject/isis/controller/impl/topology/DefaultIsisRouter.java
@@ -42,6 +42,8 @@
 
     /**
      * Sets IP address of the Router.
+     *
+     * @param systemId system identifier of the router
      */
     public void setSystemId(String systemId) {
         this.systemId = systemId;
@@ -129,4 +131,4 @@
     public int hashCode() {
         return Objects.hashCode(systemId, neighborRouterId, interfaceId);
     }
-}
\ No newline at end of file
+}
diff --git a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/LispLocatorRecord.java b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/LispLocatorRecord.java
index 35aa1da..e96a2af 100644
--- a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/LispLocatorRecord.java
+++ b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/LispLocatorRecord.java
@@ -84,6 +84,7 @@
      * Writes LISP message object into communication channel.
      *
      * @param byteBuf byte buffer
+     * @throws LispWriterException on error
      */
     void writeTo(ByteBuf byteBuf) throws LispWriterException;
 
diff --git a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/LispMapRecord.java b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/LispMapRecord.java
index d710ebc..ae7cb59 100644
--- a/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/LispMapRecord.java
+++ b/protocols/lisp/msg/src/main/java/org/onosproject/lisp/msg/protocols/LispMapRecord.java
@@ -86,6 +86,7 @@
      * Writes LISP message object into communication channel.
      *
      * @param byteBuf byte buffer
+     * @throws LispWriterException on error
      */
     void writeTo(ByteBuf byteBuf) throws LispWriterException;
 
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/OspfAreaImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/OspfAreaImpl.java
index 9a7bd47..0738787 100644
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/OspfAreaImpl.java
+++ b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/area/OspfAreaImpl.java
@@ -524,6 +524,7 @@
      *
      * @param ospfLsa       OSPF LSA instance
      * @param ospfInterface OSPF interface instance
+     * @throws Exception on error
      */
     public void addLsa(OspfLsa ospfLsa, OspfInterface ospfInterface) throws Exception {
         //second param is false as lsa from network
@@ -536,6 +537,7 @@
      * @param ospfLsa          OSPF LSA instance
      * @param isSelfOriginated true if the LSA is self originated. Else false
      * @param ospfInterface    OSPF interface instance
+     * @throws Exception on error
      */
     public void addLsa(OspfLsa ospfLsa, boolean isSelfOriginated, OspfInterface ospfInterface)
             throws Exception {
@@ -720,4 +722,4 @@
     public OspfLsdb database() {
         return database;
     }
-}
\ No newline at end of file
+}
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfNbrImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfNbrImpl.java
index 800d571..f563a39 100644
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfNbrImpl.java
+++ b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfNbrImpl.java
@@ -556,6 +556,7 @@
      * In addition, stop the possibly activated re transmission timer.
      *
      * @param ch netty channel instance
+     * @throws Exception on error
      */
     public void badLSReq(Channel ch) throws Exception {
         log.debug("OSPFNbr::badLSReq...!!!");
@@ -1932,4 +1933,4 @@
             return lsUpdateList;
         }
     }
-}
\ No newline at end of file
+}
diff --git a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfRouterImpl.java b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfRouterImpl.java
index fe0fe32..2d152a1 100644
--- a/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfRouterImpl.java
+++ b/protocols/ospf/ctl/src/main/java/org/onosproject/ospf/controller/impl/OspfRouterImpl.java
@@ -44,6 +44,8 @@
 
     /**
      * Sets IP address of the Router.
+     *
+     * @param routerIp IP address of the router
      */
     public void setRouterIp(Ip4Address routerIp) {
         this.routerIp = routerIp;
@@ -60,6 +62,8 @@
 
     /**
      * Sets the area id for this device.
+     *
+     * @param areaIdOfInterface area identifier for the device
      */
     public void setAreaIdOfInterface(Ip4Address areaIdOfInterface) {
         this.areaIdOfInterface = areaIdOfInterface;
@@ -154,4 +158,4 @@
     public void setDr(boolean dr) {
         isDr = dr;
     }
-}
\ No newline at end of file
+}
diff --git a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/tlvtypes/OpaqueTopLevelTlvTypes.java b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/tlvtypes/OpaqueTopLevelTlvTypes.java
index ab96e94..5ec036d 100644
--- a/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/tlvtypes/OpaqueTopLevelTlvTypes.java
+++ b/protocols/ospf/protocol/src/main/java/org/onosproject/ospf/protocol/lsa/tlvtypes/OpaqueTopLevelTlvTypes.java
@@ -28,7 +28,7 @@
     /**
      * Creates an instance of Opaque top level tlv types.
      *
-     * @param value
+     * @param value opaque TLV value
      */
     OpaqueTopLevelTlvTypes(int value) {
         this.value = value;
diff --git a/protocols/restconf/client/api/src/main/java/org/onosproject/protocol/restconf/RestConfNotificationEventListener.java b/protocols/restconf/client/api/src/main/java/org/onosproject/protocol/restconf/RestConfNotificationEventListener.java
index dc49a72..569a302 100644
--- a/protocols/restconf/client/api/src/main/java/org/onosproject/protocol/restconf/RestConfNotificationEventListener.java
+++ b/protocols/restconf/client/api/src/main/java/org/onosproject/protocol/restconf/RestConfNotificationEventListener.java
@@ -25,8 +25,7 @@
     /**
      * Handles the notification event.
      *
-     * @param <T>
-     *
+     * @param <T> entity type
      * @param deviceId of the restconf device
      * @param eventJsonString the json string representation of the event
      */
diff --git a/protocols/restconf/client/ctl/src/main/java/org/onosproject/protocol/restconf/ctl/RestConfSBControllerImpl.java b/protocols/restconf/client/ctl/src/main/java/org/onosproject/protocol/restconf/ctl/RestConfSBControllerImpl.java
index e5fb377..ab6c919 100644
--- a/protocols/restconf/client/ctl/src/main/java/org/onosproject/protocol/restconf/ctl/RestConfSBControllerImpl.java
+++ b/protocols/restconf/client/ctl/src/main/java/org/onosproject/protocol/restconf/ctl/RestConfSBControllerImpl.java
@@ -191,9 +191,9 @@
         }
 
         /**
-         * @param request
-         * @param mediaType
-         * @param device
+         * @param request request
+         * @param mediaType media type
+         * @param device device identifier
          */
         public GetChunksRunnable(String request, String mediaType,
                                  DeviceId device) {
diff --git a/tools/build/conf/src/main/resources/onos/checkstyle.xml b/tools/build/conf/src/main/resources/onos/checkstyle.xml
index 78110c83d..5d81aa5 100644
--- a/tools/build/conf/src/main/resources/onos/checkstyle.xml
+++ b/tools/build/conf/src/main/resources/onos/checkstyle.xml
@@ -132,8 +132,10 @@
         <!-- Checks for Javadoc comments.                     -->
         <!-- See http://checkstyle.sf.net/config_javadoc.html -->
         <module name="JavadocMethod">
-            <property name="severity" value="warning"/>
+            <property name="scope" value="package"/>
+	    <property name="allowMissingJavadoc" value="true"/>
             <property name="allowUndeclaredRTE" value="true"/>
+	    <property name="suppressLoadErrors" value="true"/>
         </module>
         <module name="JavadocType">
             <property name="severity" value="warning"/>
diff --git a/tools/build/conf/src/main/resources/onos/suppressions.xml b/tools/build/conf/src/main/resources/onos/suppressions.xml
index 4af0d62..3c51c95 100644
--- a/tools/build/conf/src/main/resources/onos/suppressions.xml
+++ b/tools/build/conf/src/main/resources/onos/suppressions.xml
@@ -17,7 +17,6 @@
 <!DOCTYPE suppressions PUBLIC "-//Puppy Crawl//DTD Suppressions 1.1//EN" "http://www.puppycrawl.com/dtds/suppressions_1_1.dtd">
 
 <suppressions>
-
     <suppress files="org.apache.karaf.branding.*" checks="[a-zA-Z0-9]*"/>
 
     <suppress files=".*" checks="FinalParametersCheck"/>
@@ -34,13 +33,13 @@
     <suppress files="org.onosproject.segmentrouting.*" checks="AbbreviationAsWordInName" />
 
     <!-- Suppressions for unit testing code -->
-    <suppress checks="JavadocPackage"
+    <suppress checks="Javadoc.*"
               files=".*/src/test/.*.java"
             />
 
-    <suppress checks="JavadocPackage"
+    <suppress checks="Javadoc.*"
               files=".*/thirdparty/.*.java"/>
 
     <!-- Suppressions for yangutils generated code -->
-    <suppress files="org.onosproject.yang.gen.v1.*" checks="JavadocStyle" />
+    <suppress files="org.onosproject.yang.gen.v1.*" checks="Javadoc.*" />
 </suppressions>
diff --git a/utils/misc/src/main/java/org/onlab/packet/IGMPQuery.java b/utils/misc/src/main/java/org/onlab/packet/IGMPQuery.java
index d79eaec..273ed25 100644
--- a/utils/misc/src/main/java/org/onlab/packet/IGMPQuery.java
+++ b/utils/misc/src/main/java/org/onlab/packet/IGMPQuery.java
@@ -121,6 +121,7 @@
      *
      * @param bb ByteBuffer pointing at the IGMP Query group address
      * @return the IGMP Group object
+     * @throws DeserializationException on serializer error
      */
     public IGMPGroup deserialize(ByteBuffer bb) throws DeserializationException {
 
diff --git a/utils/misc/src/main/java/org/onlab/packet/pim/PIMHello.java b/utils/misc/src/main/java/org/onlab/packet/pim/PIMHello.java
index 2f0c369..567a3bd 100644
--- a/utils/misc/src/main/java/org/onlab/packet/pim/PIMHello.java
+++ b/utils/misc/src/main/java/org/onlab/packet/pim/PIMHello.java
@@ -91,6 +91,11 @@
 
     /**
      * XXX: This is deprecated, DO NOT USE, use the deserializer() function instead.
+     *
+     * @param data bytes to deserialize
+     * @param offset offset to start deserializing from
+     * @param length length of the data to deserialize
+     * @return nothing
      */
     public IPacket deserialize(final byte[] data, final int offset,
                                final int length) {
