diff --git a/internal/pkg/ofagent/changeEvent.go b/internal/pkg/ofagent/changeEvent.go
index 7ec9aae..3f5bb7f 100644
--- a/internal/pkg/ofagent/changeEvent.go
+++ b/internal/pkg/ofagent/changeEvent.go
@@ -29,6 +29,9 @@
 )
 
 func (ofa *OFAgent) receiveChangeEvents(ctx context.Context) {
+	span, ctx := log.CreateChildSpan(ctx, "receive-change-events")
+	defer span.Finish()
+
 	logger.Debug(ctx, "receive-change-events-started")
 	// If we exit, assume disconnected
 	defer func() {
diff --git a/internal/pkg/ofagent/connection.go b/internal/pkg/ofagent/connection.go
index f369ab3..4fe0de3 100644
--- a/internal/pkg/ofagent/connection.go
+++ b/internal/pkg/ofagent/connection.go
@@ -55,7 +55,7 @@
 		if err == nil {
 			svc := voltha.NewVolthaServiceClient(conn)
 			if svc != nil {
-				if _, err = svc.GetVoltha(context.Background(), &empty.Empty{}); err == nil {
+				if _, err = svc.GetVoltha(log.WithSpanFromContext(context.Background(), ctx), &empty.Empty{}); err == nil {
 					logger.Debugw(ctx, "Established connection to Voltha",
 						log.Fields{
 							"VolthaApiEndPoint": ofa.VolthaApiEndPoint,
diff --git a/internal/pkg/ofagent/packetIn.go b/internal/pkg/ofagent/packetIn.go
index 2a49e94..4d28410 100644
--- a/internal/pkg/ofagent/packetIn.go
+++ b/internal/pkg/ofagent/packetIn.go
@@ -31,6 +31,9 @@
 )
 
 func (ofa *OFAgent) receivePacketsIn(ctx context.Context) {
+	span, ctx := log.CreateChildSpan(ctx, "receive-packets-in")
+	defer span.Finish()
+
 	logger.Debug(ctx, "receive-packets-in-started")
 	// If we exit, assume disconnected
 	defer func() {
@@ -42,7 +45,7 @@
 		return
 	}
 	opt := grpc.EmptyCallOption{}
-	streamCtx, streamDone := context.WithCancel(context.Background())
+	streamCtx, streamDone := context.WithCancel(log.WithSpanFromContext(context.Background(), ctx))
 	defer streamDone()
 	stream, err := ofa.volthaClient.Get().ReceivePacketsIn(streamCtx, &empty.Empty{}, opt)
 	if err != nil {
@@ -70,6 +73,9 @@
 }
 
 func (ofa *OFAgent) handlePacketsIn(ctx context.Context) {
+	span, ctx := log.CreateChildSpan(ctx, "handle-packets-in")
+	defer span.Finish()
+
 	logger.Debug(ctx, "handle-packets-in-started")
 top:
 	for {
diff --git a/internal/pkg/ofagent/packetOut.go b/internal/pkg/ofagent/packetOut.go
index d4b6a73..c8bd299 100644
--- a/internal/pkg/ofagent/packetOut.go
+++ b/internal/pkg/ofagent/packetOut.go
@@ -25,6 +25,9 @@
 )
 
 func (ofa *OFAgent) streamPacketOut(ctx context.Context) {
+	span, ctx := log.CreateChildSpan(ctx, "stream-packet-out")
+	defer span.Finish()
+
 	logger.Debug(ctx, "packet-out-started")
 	// If we exit, assume disconnected
 	defer func() {
@@ -36,7 +39,7 @@
 		return
 	}
 	opt := grpc.EmptyCallOption{}
-	streamCtx, streamDone := context.WithCancel(context.Background())
+	streamCtx, streamDone := context.WithCancel(log.WithSpanFromContext(context.Background(), ctx))
 	outClient, err := ofa.volthaClient.Get().StreamPacketsOut(streamCtx, opt)
 	defer streamDone()
 	if err != nil {
diff --git a/internal/pkg/ofagent/refresh.go b/internal/pkg/ofagent/refresh.go
index 43cbb86..f2dd1b0 100644
--- a/internal/pkg/ofagent/refresh.go
+++ b/internal/pkg/ofagent/refresh.go
@@ -43,13 +43,16 @@
 }
 
 func (ofa *OFAgent) refreshDeviceList(ctx context.Context) {
+	span, ctx := log.CreateChildSpan(ctx, "refresh-device-list")
+	defer span.Finish()
+
 	// If we exit, assume disconnected
 	if ofa.volthaClient == nil {
 		logger.Error(ctx, "no-voltha-connection")
 		ofa.events <- ofaEventVolthaDisconnected
 		return
 	}
-	deviceList, err := ofa.volthaClient.Get().ListLogicalDevices(context.Background(), &empty.Empty{})
+	deviceList, err := ofa.volthaClient.Get().ListLogicalDevices(log.WithSpanFromContext(context.Background(), ctx), &empty.Empty{})
 	if err != nil {
 		logger.Errorw(ctx, "ofagent failed to query device list from voltha",
 			log.Fields{"error": err})
