VOL-1447: Changes in OpenOLT driver for creating the Traffic Schedulers and
Queues as per the TechProfile configuration
Change-Id: I3a51ce53c8f9bd369b89b5f1f55f74f73893d65e
diff --git a/protos/Makefile b/protos/Makefile
index 6a830dc..aa5f8da 100644
--- a/protos/Makefile
+++ b/protos/Makefile
@@ -23,7 +23,7 @@
GRPC_CPP_PLUGIN = grpc_cpp_plugin
GRPC_CPP_PLUGIN_PATH ?= `which $(GRPC_CPP_PLUGIN)`
-OBJS = openolt.pb.o openolt.grpc.pb.o ./googleapis/gens/google/api/annotations.grpc.pb.o ./googleapis/gens/google/api/annotations.pb.o ./googleapis/gens/google/api/http.pb.o
+OBJS = tech_profile.pb.o tech_profile.grpc.pb.o openolt.pb.o openolt.grpc.pb.o ./googleapis/gens/google/api/annotations.grpc.pb.o ./googleapis/gens/google/api/annotations.pb.o ./googleapis/gens/google/api/http.pb.o
all: googleapis libopenoltapi.a
diff --git a/protos/openolt.proto b/protos/openolt.proto
index ddc8f74..9fa9566 100644
--- a/protos/openolt.proto
+++ b/protos/openolt.proto
@@ -15,6 +15,7 @@
syntax = "proto3";
package openolt;
import "google/api/annotations.proto";
+import "tech_profile.proto";
service Openolt {
@@ -130,16 +131,30 @@
};
}
- rpc CreateTconts(Tconts) returns (Empty) {
+ rpc CreateTrafficSchedulers(tech_profile.TrafficSchedulers) returns (Empty) {
option (google.api.http) = {
- post: "/v1/CreateTconts"
+ post: "/v1/CreateTrafficSchedulers"
body: "*"
};
}
- rpc RemoveTconts(Tconts) returns (Empty) {
+ rpc RemoveTrafficSchedulers(tech_profile.TrafficSchedulers) returns (Empty) {
option (google.api.http) = {
- post: "/v1/RemoveTconts"
+ post: "/v1/RemoveTrafficSchedulers"
+ body: "*"
+ };
+ }
+
+ rpc CreateTrafficQueues(tech_profile.TrafficQueues) returns (Empty) {
+ option (google.api.http) = {
+ post: "/v1/CreateTrafficQueues"
+ body: "*"
+ };
+ }
+
+ rpc RemoveTrafficQueues(tech_profile.TrafficQueues) returns (Empty) {
+ option (google.api.http) = {
+ post: "/v1/RemoveTrafficQueues"
body: "*"
};
}
@@ -247,6 +262,7 @@
fixed32 intf_id = 1;
fixed32 onu_id = 2;
fixed32 port_no = 4;
+ fixed32 gemport_id = 5;
bytes pkt = 3;
}
@@ -464,93 +480,5 @@
fixed32 onu_id = 2;
}
-enum Direction {
- UPSTREAM = 0;
- DOWNSTREAM = 1;
- BIDIRECTIONAL = 2;
-}
-
-enum SchedulingPolicy {
- WRR = 0;
- StrictPriority = 1;
- Hybrid = 2;
-}
-
-enum AdditionalBW {
- AdditionalBW_None = 0;
- AdditionalBW_NA = 1;
- AdditionalBW_BestEffort = 2;
- AdditionalBW_Auto = 3;
-}
-
-enum DiscardPolicy {
- TailDrop = 0;
- WTailDrop = 1;
- Red = 2;
- WRed = 3;
-}
-
-enum InferredAdditionBWIndication {
- InferredAdditionBWIndication_None = 0;
- InferredAdditionBWIndication_Assured = 1;
- InferredAdditionBWIndication_BestEffort = 2;
-}
-
-message Scheduler {
- Direction direction = 1;
- AdditionalBW additional_bw = 2; // Valid on for “direction == Upstream”.
- fixed32 priority = 3;
- fixed32 weight = 4;
- SchedulingPolicy sched_policy = 5;
-}
-
-message TrafficShapingInfo {
- fixed32 cir = 1;
- fixed32 cbs = 2;
- fixed32 pir = 3;
- fixed32 pbs = 4;
- fixed32 gir = 5; // only if “direction == Upstream ”
- InferredAdditionBWIndication add_bw_ind = 6; // only if “direction == Upstream”
-}
-
-message Tcont {
- Direction direction = 1;
- fixed32 alloc_id = 2; // valid only if “direction == Upstream ”
- Scheduler scheduler = 3;
- TrafficShapingInfo traffic_shaping_info = 4;
-}
-
-message Tconts {
- fixed32 intf_id = 1;
- fixed32 onu_id = 2;
- fixed32 uni_id = 4;
- fixed32 port_no = 5;
- repeated Tcont tconts = 3;
-}
-
-message TailDropDiscardConfig {
- fixed32 queue_size = 1;
-}
-
-message RedDiscardConfig {
- fixed32 min_threshold = 1;
- fixed32 max_threshold = 2;
- fixed32 max_probability = 3;
-}
-
-message WRedDiscardConfig {
- RedDiscardConfig green = 1;
- RedDiscardConfig yellow = 2;
- RedDiscardConfig red = 3;
-}
-
-message DiscardConfig {
- DiscardPolicy discard_policy = 1;
- oneof discard_config {
- TailDropDiscardConfig tail_drop_discard_config = 2;
- RedDiscardConfig red_discard_config = 3;
- WRedDiscardConfig wred_discard_config = 4;
- }
-}
-
message Empty {}
+
diff --git a/protos/tech_profile.proto b/protos/tech_profile.proto
new file mode 100644
index 0000000..1b98e2d
--- /dev/null
+++ b/protos/tech_profile.proto
@@ -0,0 +1,126 @@
+// Copyright (c) 2018 Open Networking Foundation
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at:
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+syntax = "proto3";
+package tech_profile;
+import "google/api/annotations.proto";
+
+enum Direction {
+ UPSTREAM = 0;
+ DOWNSTREAM = 1;
+ BIDIRECTIONAL = 2;
+}
+
+enum SchedulingPolicy {
+ WRR = 0;
+ StrictPriority = 1;
+ Hybrid = 2;
+}
+
+enum AdditionalBW {
+ AdditionalBW_None = 0;
+ AdditionalBW_NA = 1;
+ AdditionalBW_BestEffort = 2;
+ AdditionalBW_Auto = 3;
+}
+
+enum DiscardPolicy {
+ TailDrop = 0;
+ WTailDrop = 1;
+ Red = 2;
+ WRed = 3;
+}
+
+enum InferredAdditionBWIndication {
+ InferredAdditionBWIndication_None = 0;
+ InferredAdditionBWIndication_Assured = 1;
+ InferredAdditionBWIndication_BestEffort = 2;
+}
+
+message SchedulerConfig {
+ Direction direction = 1;
+ AdditionalBW additional_bw = 2; // Valid on for “direction == Upstream”.
+ fixed32 priority = 3;
+ fixed32 weight = 4;
+ SchedulingPolicy sched_policy = 5;
+}
+
+message TrafficShapingInfo {
+ fixed32 cir = 1;
+ fixed32 cbs = 2;
+ fixed32 pir = 3;
+ fixed32 pbs = 4;
+ fixed32 gir = 5; // only if “direction == Upstream ”
+ InferredAdditionBWIndication add_bw_ind = 6; // only if “direction == Upstream”
+}
+
+message TrafficScheduler {
+ Direction direction = 1;
+ fixed32 alloc_id = 2; // valid only if “direction == Upstream ”
+ SchedulerConfig scheduler = 3;
+ TrafficShapingInfo traffic_shaping_info = 4;
+}
+
+message TrafficSchedulers {
+ fixed32 intf_id = 1;
+ fixed32 onu_id = 2;
+ fixed32 uni_id = 4;
+ fixed32 port_no = 5;
+ repeated TrafficScheduler traffic_scheds = 3;
+}
+
+message TailDropDiscardConfig {
+ fixed32 queue_size = 1;
+}
+
+message RedDiscardConfig {
+ fixed32 min_threshold = 1;
+ fixed32 max_threshold = 2;
+ fixed32 max_probability = 3;
+}
+
+message WRedDiscardConfig {
+ RedDiscardConfig green = 1;
+ RedDiscardConfig yellow = 2;
+ RedDiscardConfig red = 3;
+}
+
+message DiscardConfig {
+ DiscardPolicy discard_policy = 1;
+ oneof discard_config {
+ TailDropDiscardConfig tail_drop_discard_config = 2;
+ RedDiscardConfig red_discard_config = 3;
+ WRedDiscardConfig wred_discard_config = 4;
+ }
+}
+
+message TrafficQueue {
+ Direction direction = 1;
+ fixed32 gemport_id = 2;
+ string pbit_map = 3;
+ bool aes_encryption = 4;
+ SchedulingPolicy sched_policy = 5;
+ fixed32 priority = 6;
+ fixed32 weight = 7;
+ DiscardPolicy discard_policy = 8;
+ DiscardConfig discard_config = 9;
+}
+
+message TrafficQueues {
+ fixed32 intf_id = 1;
+ fixed32 onu_id = 2;
+ fixed32 uni_id = 4;
+ fixed32 port_no = 5;
+ repeated TrafficQueue traffic_queues = 6;
+}