[VOL-2616] :
- When vlan pcp bit is 0xff, this means no pcp bit.
- This change is compatible with OpenOlt adapter
changes coming as part of https://gerrit.opencord.org/#/c/17602/.
Change-Id: Ie0e7b9090d3d9b74af7418df84935ac646c2de8c
diff --git a/VERSION b/VERSION
index 7f8d85c..eca07e4 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.1.2-dev
+2.1.2
diff --git a/agent/src/core_api_handler.cc b/agent/src/core_api_handler.cc
index 7a90107..006e6fb 100644
--- a/agent/src/core_api_handler.cc
+++ b/agent/src/core_api_handler.cc
@@ -1447,21 +1447,21 @@
single_tag = true;
OPENOLT_LOG(DEBUG, openolt_log_id, "classify o_pbits 0x%x\n", classifier.o_pbits());
- //According to makeOpenOltClassifierField in voltha-openolt-adapter, o_pbits 0xFF means PCP value 0.
- if(0xFF == classifier.o_pbits()){
- BCMOLT_FIELD_SET(&c_val, classifier, o_pbits, 0);
- }
- else{
+ // OpenOlt adapter will send 0xFF in case of no pbit classification
+ // If it is any other value (0 to 7), it is for outer pbit classification.
+ // OpenFlow protocol does not provide inner pbit classification (in case of double tagged packets),
+ // and VOLTHA has not used any workaround to solve this problem (for ex: use metadata field).
+ // Also there exists no use case for i-pbit classification, so we can safely ignore this for now.
+ if(0xFF != classifier.o_pbits()){
BCMOLT_FIELD_SET(&c_val, classifier, o_pbits, classifier.o_pbits());
}
} else if (classifier.pkt_tag_type().compare("double_tag") == 0) {
BCMOLT_FIELD_SET(&c_val, classifier, pkt_tag_type, BCMOLT_PKT_TAG_TYPE_DOUBLE_TAG);
OPENOLT_LOG(DEBUG, openolt_log_id, "classify o_pbits 0x%x\n", classifier.o_pbits());
- if(0xFF == classifier.o_pbits()){
- BCMOLT_FIELD_SET(&c_val, classifier, o_pbits, 0);
- }
- else{
+ // Same comments as in case of "single_tag" packets.
+ // 0xFF means no pbit classification, otherwise a valid PCP (0 to 7).
+ if(0xFF != classifier.o_pbits()){
BCMOLT_FIELD_SET(&c_val, classifier, o_pbits, classifier.o_pbits());
}
}