diff --git a/internal/pkg/uniprt/uniportadmin.go b/internal/pkg/uniprt/uniportadmin.go
index 0461ac5..2910f2e 100755
--- a/internal/pkg/uniprt/uniportadmin.go
+++ b/internal/pkg/uniprt/uniportadmin.go
@@ -33,17 +33,17 @@
 
 // LockStateFsm defines the structure for the state machine to lock/unlock the ONU UNI ports via OMCI
 type LockStateFsm struct {
-	deviceID                 string
 	pDeviceHandler           cmn.IdeviceHandler
 	pOnuDeviceEntry          cmn.IonuDeviceEntry
 	pOmciCC                  *cmn.OmciCC
-	mutexAdminState          sync.RWMutex
-	adminState               bool
-	requestEvent             cmn.OnuDeviceEvent
 	omciLockResponseReceived chan bool //seperate channel needed for checking UNI port OMCi message responses
 	PAdaptFsm                *cmn.AdapterFsm
-	mutexPLastTxMeInstance   sync.RWMutex
 	pLastTxMeInstance        *me.ManagedEntity
+	deviceID                 string
+	requestEvent             cmn.OnuDeviceEvent
+	mutexAdminState          sync.RWMutex
+	mutexPLastTxMeInstance   sync.RWMutex
+	adminState               bool
 }
 
 // events of lock/unlock UNI port FSM
@@ -439,11 +439,12 @@
 
 		if (omciAdminState == 1) || (1<<uniPort.UniID)&oFsm.pDeviceHandler.GetUniPortMask() == (1<<uniPort.UniID) {
 			var meInstance *me.ManagedEntity
+			var err error
 			if uniPort.PortType == cmn.UniPPTP {
 				logger.Debugw(ctx, "Setting PPTP admin state", log.Fields{
 					"device-id": oFsm.deviceID, "for PortNo": uniNo, "state (0-unlock)": omciAdminState})
 				oFsm.mutexPLastTxMeInstance.Lock()
-				meInstance, err := oFsm.pOmciCC.SendSetPptpEthUniLS(log.WithSpanFromContext(context.TODO(), ctx),
+				meInstance, err = oFsm.pOmciCC.SendSetPptpEthUniLS(log.WithSpanFromContext(context.TODO(), ctx),
 					uniPort.EntityID, oFsm.pDeviceHandler.GetOmciTimeout(),
 					true, requestedAttributes, oFsm.PAdaptFsm.CommChan)
 				if err != nil {
@@ -463,7 +464,7 @@
 				logger.Debugw(ctx, "Setting VEIP admin state", log.Fields{
 					"device-id": oFsm.deviceID, "for PortNo": uniNo, "state (0-unlock)": omciAdminState})
 				oFsm.mutexPLastTxMeInstance.Lock()
-				meInstance, err := oFsm.pOmciCC.SendSetVeipLS(log.WithSpanFromContext(context.TODO(), ctx),
+				meInstance, err = oFsm.pOmciCC.SendSetVeipLS(log.WithSpanFromContext(context.TODO(), ctx),
 					uniPort.EntityID, oFsm.pDeviceHandler.GetOmciTimeout(),
 					true, requestedAttributes, oFsm.PAdaptFsm.CommChan)
 				if err != nil {
@@ -501,7 +502,7 @@
 			oFsm.mutexPLastTxMeInstance.RUnlock()
 
 			//verify response
-			err := oFsm.waitforOmciResponse(ctx, meInstance)
+			err = oFsm.waitforOmciResponse(ctx, meInstance)
 			if err != nil {
 				logger.Errorw(ctx, "UniTP Admin State set failed, aborting LockState set!",
 					log.Fields{"device-id": oFsm.deviceID, "Port": uniNo})
@@ -520,6 +521,7 @@
 	_ = oFsm.PAdaptFsm.PFsm.Event(UniEvRxUnisResp)
 }
 
+//nolint:unparam
 func (oFsm *LockStateFsm) waitforOmciResponse(ctx context.Context, apMeInstance *me.ManagedEntity) error {
 	select {
 	// maybe be also some outside cancel (but no context modeled for the moment ...)
diff --git a/internal/pkg/uniprt/uniportstatus.go b/internal/pkg/uniprt/uniportstatus.go
index 5dc9d1b..a680f56 100755
--- a/internal/pkg/uniprt/uniportstatus.go
+++ b/internal/pkg/uniprt/uniportstatus.go
@@ -32,11 +32,11 @@
 
 // UniPortStatus implements methods to get uni port status info
 type UniPortStatus struct {
-	deviceID          string
 	pDeviceHandler    cmn.IdeviceHandler
 	pOmiCC            *cmn.OmciCC
 	omciRespChn       chan cmn.Message
 	pLastTxMeInstance *me.ManagedEntity
+	deviceID          string
 }
 
 // NewUniPortStatus creates a new instance of UniPortStatus
@@ -78,6 +78,7 @@
 	return PostUniStatusErrResponse(extension.GetValueResponse_INVALID_PORT_TYPE)
 }
 
+//nolint:unparam // ctx and apMeInstance are required by interface
 func (portStatus *UniPortStatus) waitforGetUniPortStatus(ctx context.Context, apMeInstance *me.ManagedEntity) *extension.SingleGetValueResponse {
 
 	select {
