diff --git a/internal/common/omci/get.go b/internal/common/omci/get.go
index 78aa98e..67ce88f 100644
--- a/internal/common/omci/get.go
+++ b/internal/common/omci/get.go
@@ -44,7 +44,7 @@
 	return msgObj, nil
 }
 
-func CreateGetResponse(omciPkt gopacket.Packet, omciMsg *omci.OMCI, onuSn *openolt.SerialNumber) ([]byte, error) {
+func CreateGetResponse(omciPkt gopacket.Packet, omciMsg *omci.OMCI, onuSn *openolt.SerialNumber, mds uint8) ([]byte, error) {
 
 	msgObj, err := ParseGetRequest(omciPkt)
 
@@ -56,7 +56,7 @@
 		"EntityClass":    msgObj.EntityClass,
 		"EntityInstance": msgObj.EntityInstance,
 		"AttributeMask":  fmt.Sprintf("%x", msgObj.AttributeMask),
-	}).Trace("recevied-omci-get-request")
+	}).Trace("received-omci-get-request")
 
 	var response *omci.GetResponse
 	switch msgObj.EntityClass {
@@ -75,7 +75,7 @@
 	case me.AniGClassID:
 		response = createAnigResponse(msgObj.AttributeMask, msgObj.EntityInstance)
 	case me.OnuDataClassID:
-		response = createOnuDataResponse(msgObj.AttributeMask, msgObj.EntityInstance)
+		response = createOnuDataResponse(msgObj.AttributeMask, msgObj.EntityInstance, mds)
 	default:
 		omciLogger.WithFields(log.Fields{
 			"EntityClass":    msgObj.EntityClass,
@@ -85,12 +85,12 @@
 		return nil, nil
 	}
 
-	pkt, err := serialize(omci.GetResponseType, response, omciMsg.TransactionID)
+	pkt, err := Serialize(omci.GetResponseType, response, omciMsg.TransactionID)
 	if err != nil {
 		omciLogger.WithFields(log.Fields{
 			"Err":  err,
 			"TxID": strconv.FormatInt(int64(omciMsg.TransactionID), 16),
-		}).Error("cannot-serialize-Onu2gResponse")
+		}).Error("cannot-Serialize-Onu2gResponse")
 		return nil, err
 	}
 
@@ -330,12 +330,12 @@
 	}
 }
 
-func createOnuDataResponse(attributeMask uint16, entityID uint16) *omci.GetResponse {
+func createOnuDataResponse(attributeMask uint16, entityID uint16, mds uint8) *omci.GetResponse {
 	managedEntity, meErr := me.NewOnuData(me.ParamData{
 		EntityID: entityID,
 		Attributes: me.AttributeValueMap{
 			"ManagedEntityId": entityID,
-			"MibDataSync":     0,
+			"MibDataSync":     mds,
 		},
 	})
 
