diff --git a/core/core_server.go b/core/core_server.go
index 841bf24..3e480cb 100644
--- a/core/core_server.go
+++ b/core/core_server.go
@@ -363,20 +363,20 @@
 				continue
 			}
 		case unipkt := <-unichannel:
-			logger.Debug("Received packet from UNI in grpc Server")
+			onuid := unipkt.Info.onuid
+			onu, _ := s.GetOnuByID(onuid)
+			utils.LoggerWithOnu(onu).Debug("Received packet from UNI in grpc Server")
 			if unipkt.Info == nil || unipkt.Info.iotype != "uni" {
 				logger.Debug("WARNING: This packet does not come from UNI ")
 				continue
 			}
 
 			intfid := unipkt.Info.intfid
-			onuid := unipkt.Info.onuid
 			gemid, _ := getGemPortID(intfid, onuid)
 			pkt := unipkt.Pkt
 			layerEth := pkt.Layer(layers.LayerTypeEthernet)
 			le, _ := layerEth.(*layers.Ethernet)
 			ethtype := le.EthernetType
-			onu, _ := s.GetOnuByID(onuid)
 
 			if ethtype == 0x888e {
 				utils.LoggerWithOnu(onu).WithFields(log.Fields{
@@ -390,7 +390,7 @@
 				//C-TAG
 				sn := convB2S(onu.SerialNumber.VendorSpecific)
 				if ctag, ok := s.CtagMap[sn]; ok == true {
-					tagpkt, err := PushVLAN(pkt, uint16(ctag))
+					tagpkt, err := PushVLAN(pkt, uint16(ctag), onu)
 					if err != nil {
 						utils.LoggerWithOnu(onu).WithFields(log.Fields{
 							"gemId": gemid,
@@ -458,10 +458,14 @@
 		if ethtype == 0x888e {
 			utils.LoggerWithOnu(onu).Info("Received downstream packet is EAPOL.")
 		} else if layerDHCP := rawpkt.Layer(layers.LayerTypeDHCPv4); layerDHCP != nil {
-			utils.LoggerWithOnu(onu).Info("Received downstream packet is DHCP.")
+			utils.LoggerWithOnu(onu).WithFields(log.Fields{
+				"payload": layerDHCP.LayerPayload(),
+				"type":    layerDHCP.LayerType().String(),
+			}).Info("Received downstream packet is DHCP.")
 			rawpkt, _, _ = PopVLAN(rawpkt)
 			rawpkt, _, _ = PopVLAN(rawpkt)
 		} else {
+			utils.LoggerWithOnu(onu).Info("WARNING: Received packet is not EAPOL or DHCP")
 			return nil
 		}
 		ioinfo, err := s.identifyUniIoinfo("inside", intfid, onuid)
@@ -469,10 +473,10 @@
 			return err
 		}
 		handle := ioinfo.handler
-		SendUni(handle, rawpkt)
+		SendUni(handle, rawpkt, onu)
 		return nil
 	}
-	logger.Info("WARNING: Received packet is not supported")
+	utils.LoggerWithOnu(onu).Info("WARNING: Received packet does not have layerEth")
 	return nil
 }
 
diff --git a/core/grpc_service.go b/core/grpc_service.go
index 3981aed..8678d87 100644
--- a/core/grpc_service.go
+++ b/core/grpc_service.go
@@ -116,6 +116,7 @@
 	intfid := packet.IntfId
 	rawpkt := gopacket.NewPacket(packet.Pkt, layers.LayerTypeEthernet, gopacket.Default)
 	if err := s.onuPacketOut(intfid, onuid, rawpkt); err != nil {
+		utils.LoggerWithOnu(onu).WithField("error", err).Errorf("OnuPacketOut Error ")
 		return new(openolt.Empty), err
 	}
 	return new(openolt.Empty), nil
diff --git a/core/io_worker.go b/core/io_worker.go
index 8524866..2533a19 100644
--- a/core/io_worker.go
+++ b/core/io_worker.go
@@ -22,7 +22,10 @@
 	"strconv"
 	"time"
 
+	"gerrit.opencord.org/voltha-bbsim/device"
+
 	"gerrit.opencord.org/voltha-bbsim/common/logger"
+	"gerrit.opencord.org/voltha-bbsim/common/utils"
 	"github.com/google/gopacket"
 	"github.com/google/gopacket/layers"
 	"github.com/google/gopacket/pcap"
@@ -41,12 +44,12 @@
 	}
 }
 
-func SendUni(handle *pcap.Handle, packet gopacket.Packet) {
+func SendUni(handle *pcap.Handle, packet gopacket.Packet, onu *device.Onu) {
 	err := handle.WritePacketData(packet.Data())
 	if err != nil {
-		logger.Error("Error in send packet to UNI-IF: %v e:%s", *handle, err)
+		utils.LoggerWithOnu(onu).Error("Error in send packet to UNI-IF: %v e:%s", *handle, err)
 	}
-	logger.Debug("Successfully send packet to UNI-IF: %v ", *handle)
+	utils.LoggerWithOnu(onu).Debug("Successfully send packet to UNI-IF: %v ", *handle)
 	//logger.Println(packet.Dump())
 }
 
@@ -86,7 +89,7 @@
 	//return nil, 0, errors.New("failed to pop vlan")
 }
 
-func PushVLAN(pkt gopacket.Packet, vid uint16) (gopacket.Packet, error) {
+func PushVLAN(pkt gopacket.Packet, vid uint16, onu *device.Onu) (gopacket.Packet, error) {
 	if eth := getEthernetLayer(pkt); eth != nil {
 		ethernetLayer := &layers.Ethernet{
 			SrcMAC:       eth.SrcMAC,
@@ -113,7 +116,7 @@
 			layers.LayerTypeEthernet,
 			gopacket.Default,
 		)
-		logger.Debug("Push the 802.1Q header (VID: %d)", vid)
+		utils.LoggerWithOnu(onu).Debugf("Push the 802.1Q header (VID: %d)", vid)
 		return ret, nil
 	}
 	return nil, errors.New("failed to push vlan")
