diff --git a/internal/pkg/openflow/flowMod.go b/internal/pkg/openflow/flowMod.go
index 4ab1afc..da4fc1d 100644
--- a/internal/pkg/openflow/flowMod.go
+++ b/internal/pkg/openflow/flowMod.go
@@ -26,46 +26,47 @@
 )
 
 var oxmMap = map[string]int32{
-	"in_port":        0,
-	"in_phy_port":    1,
-	"metadata":       2,
-	"eth_dst":        3,
-	"eth_src":        4,
-	"eth_type":       5,
-	"vlan_vid":       6,
-	"vlan_pcp":       7,
-	"ip_dscp":        8,
-	"ip_ecn":         9,
-	"ip_proto":       10,
-	"ipv4_src":       11,
-	"ipv4_dst":       12,
-	"tcp_src":        13,
-	"tcp_dst":        14,
-	"udp_src":        15,
-	"udp_dst":        16,
-	"sctp_src":       17,
-	"sctp_dst":       18,
-	"icmpv4_type":    19,
-	"icmpv4_code":    20,
-	"arp_op":         21,
-	"arp_spa":        22,
-	"arp_tpa":        23,
-	"arp_sha":        24,
-	"arp_tha":        25,
-	"ipv6_src":       26,
-	"ipv6_dst":       27,
-	"ipv6_flabel":    28,
-	"icmpv6_type":    29,
-	"icmpv6_code":    30,
-	"ipv6_nd_target": 31,
-	"ipv6_nd_sll":    32,
-	"ipv6_nd_tll":    33,
-	"mpls_label":     34,
-	"mpls_tc":        35,
-	"mpls_bos":       36,
-	"pbb_isid":       37,
-	"tunnel_id":      38,
-	"ipv6_exthdr":    39,
+	"in_port":         0,
+	"in_phy_port":     1,
+	"metadata":        2,
+	"eth_dst":         3,
+	"eth_src":         4,
+	"eth_type":        5,
+	"vlan_vid":        6,
+	"vlan_pcp":        7,
+	"ip_dscp":         8,
+	"ip_ecn":          9,
+	"ip_proto":        10,
+	"ipv4_src":        11,
+	"ipv4_dst":        12,
+	"tcp_src":         13,
+	"tcp_dst":         14,
+	"udp_src":         15,
+	"udp_dst":         16,
+	"sctp_src":        17,
+	"sctp_dst":        18,
+	"icmpv4_type":     19,
+	"icmpv4_code":     20,
+	"arp_op":          21,
+	"arp_spa":         22,
+	"arp_tpa":         23,
+	"arp_sha":         24,
+	"arp_tha":         25,
+	"ipv6_src":        26,
+	"ipv6_dst":        27,
+	"ipv6_flabel":     28,
+	"icmpv6_type":     29,
+	"icmpv6_code":     30,
+	"ipv6_nd_target":  31,
+	"ipv6_nd_sll":     32,
+	"ipv6_nd_tll":     33,
+	"mpls_label":      34,
+	"mpls_tc":         35,
+	"mpls_bos":        36,
+	"pbb_isid":        37,
+	"tunnel_id":       38,
+	"ipv6_exthdr":     39,
+	"vlan_vid_masked": 200, //made up
 }
 
 func (ofc *OFClient) handleFlowAdd(flowAdd *ofp.FlowAdd) {
@@ -126,6 +127,20 @@
 			field.Value = &voltha.OfpOxmOfbField_VlanVid{
 				VlanVid: uint32((val.(uint16) & 0xfff) | 0x1000),
 			}
+		case 200: // voltha-protos doesn't actually have a type for vlan_mask
+			field = voltha.OfpOxmOfbField{Type: voltha.OxmOfbFieldTypes(oxmMap["vlan_vid"])}
+			field.HasMask = true
+			ofpOxmField = voltha.OfpOxmField{
+				OxmClass: ofp.OFPXMCOpenflowBasic,
+				Field:    &openflow_13.OfpOxmField_OfbField{OfbField: &field},
+			}
+			field.Value = &voltha.OfpOxmOfbField_VlanVid{
+				VlanVid: uint32(val.(uint16)),
+			}
+			vidMask := val.(uint16)
+			field.Mask = &voltha.OfpOxmOfbField_VlanVidMask{
+				VlanVidMask: uint32(vidMask),
+			}
 		}
 		oxmList = append(oxmList, &ofpOxmField)
 	}
@@ -207,6 +222,7 @@
 		logger.Debugf("FlowUpdate being sent to Voltha",
 			log.Fields{
 				"device-id":        ofc.DeviceID,
+				"flow-mod-object":  flowUpdate,
 				"flow-mod-request": flowUpdateJs})
 	}
 	if _, err := ofc.VolthaClient.UpdateLogicalDeviceFlowTable(context.Background(), &flowUpdate); err != nil {
@@ -316,7 +332,22 @@
 			field.Value = &voltha.OfpOxmOfbField_VlanVid{
 				VlanVid: uint32(val.(uint16)),
 			}
+		case 200: // voltha-protos doesn't actually have a type for vlan_mask
+			field = voltha.OfpOxmOfbField{Type: voltha.OxmOfbFieldTypes(oxmMap["vlan_vid"])}
+			field.HasMask = true
+			ofpOxmField = voltha.OfpOxmField{
+				OxmClass: ofp.OFPXMCOpenflowBasic,
+				Field:    &openflow_13.OfpOxmField_OfbField{OfbField: &field},
+			}
+			field.Value = &voltha.OfpOxmOfbField_VlanVid{
+				VlanVid: uint32(val.(uint16)),
+			}
+			vidMask := val.(uint16)
+			field.Mask = &voltha.OfpOxmOfbField_VlanVidMask{
+				VlanVidMask: uint32(vidMask),
+			}
 		}
+
 		oxmList = append(oxmList, &ofpOxmField)
 	}
 
diff --git a/internal/pkg/openflow/parseGrpcReturn.go b/internal/pkg/openflow/parseGrpcReturn.go
index 0ee2cec..a5bd1d1 100644
--- a/internal/pkg/openflow/parseGrpcReturn.go
+++ b/internal/pkg/openflow/parseGrpcReturn.go
@@ -67,12 +67,26 @@
 	case voltha.OxmOfbFieldTypes_OFPXMT_OFB_VLAN_VID:
 		ofpVlanVid := ofp.NewOxmVlanVid()
 		val := ofbField.GetValue()
-		if val != nil {
-			vlanId := val.(*openflow_13.OfpOxmOfbField_VlanVid)
-			ofpVlanVid.Value = uint16(vlanId.VlanVid) | 0x1000
-		} else {
+		if val == nil {
 			ofpVlanVid.Value = uint16(0)
+			return ofpVlanVid, 2
 		}
+		vlanId := val.(*openflow_13.OfpOxmOfbField_VlanVid)
+		if ofbField.HasMask {
+			ofpVlanVidMasked := ofp.NewOxmVlanVidMasked()
+			valMask := ofbField.GetMask()
+			vlanMask := valMask.(*openflow_13.OfpOxmOfbField_VlanVidMask)
+			if vlanId.VlanVid == 4096 && vlanMask.VlanVidMask == 4096 {
+				ofpVlanVidMasked.Value = uint16(vlanId.VlanVid)
+				ofpVlanVidMasked.ValueMask = uint16(vlanMask.VlanVidMask)
+			} else {
+				ofpVlanVidMasked.Value = uint16(vlanId.VlanVid) | 0x1000
+				ofpVlanVidMasked.ValueMask = uint16(vlanMask.VlanVidMask)
+
+			}
+			return ofpVlanVidMasked, 4
+		}
+		ofpVlanVid.Value = uint16(vlanId.VlanVid) | 0x1000
 		return ofpVlanVid, 2
 	case voltha.OxmOfbFieldTypes_OFPXMT_OFB_METADATA:
 		ofpMetadata := ofp.NewOxmMetadata()
diff --git a/internal/pkg/openflow/stats.go b/internal/pkg/openflow/stats.go
index 613b476..520b5a2 100644
--- a/internal/pkg/openflow/stats.go
+++ b/internal/pkg/openflow/stats.go
@@ -67,9 +67,10 @@
 			resJs, _ := json.Marshal(response)
 			logger.Debugw("handle-stats-request-flow",
 				log.Fields{
-					"device-id": ofc.DeviceID,
-					"request":   reqJs,
-					"response":  resJs})
+					"device-id":       ofc.DeviceID,
+					"request":         reqJs,
+					"response-object": response,
+					"response":        resJs})
 		}
 		return ofc.SendMessage(response)
 
