VOL-1236: BAL upgrade for 2.6 and support for Traffic Shaping
Change-Id: If12f914e5981b2eabfca90a70dbb0f0750a76c4b
diff --git a/src/asfvolt16_driver.c b/src/asfvolt16_driver.c
index 14cd505..3d824af 100755
--- a/src/asfvolt16_driver.c
+++ b/src/asfvolt16_driver.c
@@ -54,13 +54,33 @@
cb_cfg.module = BCMOS_MODULE_ID_NONE;
- /* Access Terminal Operational State Change */
+ /* Register to get indications for access terminal objects
+ */
cb_cfg.obj_type = BCMBAL_OBJ_ID_ACCESS_TERMINAL;
- cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)bal_acc_term_osc_indication_cb;
- ind_subgroup = bcmbal_access_terminal_auto_id_oper_status_change;
+
+
+ /* Access Terminal processing error */
+ cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)bal_acc_term_processing_error_indication_cb;
+ ind_subgroup = bcmbal_access_terminal_auto_id_processing_error;
cb_cfg.p_subgroup = &ind_subgroup;
err = err ? err : bcmbal_subscribe_ind(access_term_id, &cb_cfg);
+ /* Register to get indication callbacks for flow objects
+ */
+ cb_cfg.obj_type = BCMBAL_OBJ_ID_FLOW;
+
+ /* Flow Operational State Change */
+ cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)bal_flow_osc_indication_cb;
+ ind_subgroup = bcmbal_flow_auto_id_oper_status_change;
+ cb_cfg.p_subgroup = &ind_subgroup;
+ err = bcmbal_subscribe_ind(access_term_id, &cb_cfg);
+
+ /* Flow processing error */
+ cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)bal_flow_processing_error_indication_cb;
+ ind_subgroup = bcmbal_flow_auto_id_processing_error;
+ cb_cfg.p_subgroup = &ind_subgroup;
+ err = bcmbal_subscribe_ind(access_term_id, &cb_cfg);
+
/* Register to get indications for interface objects
*/
cb_cfg.obj_type = BCMBAL_OBJ_ID_INTERFACE;
@@ -71,52 +91,12 @@
cb_cfg.p_subgroup = &ind_subgroup;
err = err ? err : bcmbal_subscribe_ind(access_term_id, &cb_cfg);
- /* Interface Indication */
- cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)bal_interface_indication_cb;
- ind_subgroup = bcmbal_interface_auto_id_ind;
- cb_cfg.p_subgroup = &ind_subgroup;
- err = err ? err : bcmbal_subscribe_ind(access_term_id, &cb_cfg);
-
/* Interface Operational State Change */
cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)bal_interface_osc_indication_cb;
ind_subgroup = bcmbal_interface_auto_id_oper_status_change;
cb_cfg.p_subgroup = &ind_subgroup;
err = err ? err : bcmbal_subscribe_ind(access_term_id, &cb_cfg);
- /* Register to get indications for subscriber terminal objects
- */
- cb_cfg.obj_type = BCMBAL_OBJ_ID_SUBSCRIBER_TERMINAL;
-
- /* Subscriber Terminal Alarm */
- cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)bal_sub_term_alarm_indication_cb;
- ind_subgroup = bcmbal_subscriber_terminal_auto_id_sub_term_alarm;
- cb_cfg.p_subgroup = &ind_subgroup;
- err = err ? err : bcmbal_subscribe_ind(access_term_id, &cb_cfg);
-
- /* Subscriber Terminal dgi */
- cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)bal_sub_term_dgi_indication_cb;
- ind_subgroup = bcmbal_subscriber_terminal_auto_id_dgi;
- cb_cfg.p_subgroup = &ind_subgroup;
- err = err ? err : bcmbal_subscribe_ind(access_term_id, &cb_cfg);
-
- /* Subscriber Terminal Discovery */
- cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)bal_sub_term_disc_indication_cb;
- ind_subgroup = bcmbal_subscriber_terminal_auto_id_sub_term_disc;
- cb_cfg.p_subgroup = &ind_subgroup;
- err = err ? err : bcmbal_subscribe_ind(access_term_id, &cb_cfg);
-
- /* Subscriber Terminal Indication */
- cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)bal_sub_term_indication_cb;
- ind_subgroup = bcmbal_subscriber_terminal_auto_id_ind;
- cb_cfg.p_subgroup = &ind_subgroup;
- err = err ? err : bcmbal_subscribe_ind(access_term_id, &cb_cfg);
-
- /* Subscriber Terminal Operational State Change */
- cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)bal_sub_term_osc_indication_cb;
- ind_subgroup = bcmbal_subscriber_terminal_auto_id_oper_status_change;
- cb_cfg.p_subgroup = &ind_subgroup;
- err = err ? err : bcmbal_subscribe_ind(access_term_id, &cb_cfg);
-
/* Register to get indication callbacks for OMCI objects
*/
cb_cfg.obj_type = BCMBAL_OBJ_ID_PACKET;
@@ -132,6 +112,9 @@
ind_subgroup = bcmbal_packet_auto_id_bearer_channel_rx;
cb_cfg.p_subgroup = &ind_subgroup;
err = err ? err : bcmbal_subscribe_ind(access_term_id, &cb_cfg);
+
+ // On registering for OAM Channel Data, voltha_bal_driver crashes.
+ // This is not important/necessary right now, hence bypassing this.
#if 0
/* OAM Channel Data - oam response indication */
cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)bal_oam_data_indication_cb;
@@ -139,45 +122,95 @@
cb_cfg.p_subgroup = &ind_subgroup;
err = err ? err : bcmbal_subscribe_ind(access_term_id, &cb_cfg);
#endif
- /* Register to get indication callbacks for flow objects
+
+ /* Register to get indications for subscriber terminal objects
*/
- cb_cfg.obj_type = BCMBAL_OBJ_ID_FLOW;
+ cb_cfg.obj_type = BCMBAL_OBJ_ID_SUBSCRIBER_TERMINAL;
- /* Flow Operational State Change */
- cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)bal_flow_osc_indication_cb;
- ind_subgroup = bcmbal_flow_auto_id_oper_status_change;
- cb_cfg.p_subgroup = &ind_subgroup;
- err = bcmbal_subscribe_ind(access_term_id, &cb_cfg);
-
- /* Flow Indication */
- cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)bal_flow_indication_cb;
- ind_subgroup = bcmbal_flow_auto_id_ind;
- cb_cfg.p_subgroup = &ind_subgroup;
- err = bcmbal_subscribe_ind(access_term_id, &cb_cfg);
-
- /* Register to get indication callbacks for tm queue objects
- */
- cb_cfg.obj_type = BCMBAL_OBJ_ID_TM_QUEUE;
- cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)bal_tm_queue_indication_cb;
- ind_subgroup = bcmbal_tm_queue_auto_id_ind;
+ /* Subscriber Terminal dgi */
+ cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)bal_sub_term_dgi_indication_cb;
+ ind_subgroup = bcmbal_subscriber_terminal_auto_id_dgi;
cb_cfg.p_subgroup = &ind_subgroup;
err = err ? err : bcmbal_subscribe_ind(access_term_id, &cb_cfg);
- /* Register to get indication callbacks for tm sched objects
+ /* Subscriber Terminal dowi*/
+ cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)bal_sub_term_dowi_indication_cb;
+ ind_subgroup = bcmbal_subscriber_terminal_auto_id_dowi;
+ cb_cfg.p_subgroup = &ind_subgroup;
+ err = err ? err : bcmbal_subscribe_ind(access_term_id, &cb_cfg);
+
+ /* Subscriber Terminal looci*/
+ cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)bal_sub_term_looci_indication_cb;
+ ind_subgroup = bcmbal_subscriber_terminal_auto_id_looci;
+ cb_cfg.p_subgroup = &ind_subgroup;
+ err = err ? err : bcmbal_subscribe_ind(access_term_id, &cb_cfg);
+
+ /* Subscriber Terminal Operational State Change */
+ cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)bal_sub_term_osc_indication_cb;
+ ind_subgroup = bcmbal_subscriber_terminal_auto_id_oper_status_change;
+ cb_cfg.p_subgroup = &ind_subgroup;
+ err = err ? err : bcmbal_subscribe_ind(access_term_id, &cb_cfg);
+
+ /* Subscriber Terminal processing error*/
+ cb_cfg.ind_cb_hdlr = \
+ (f_bcmbal_ind_handler)bal_sub_term_processing_error_indication_cb;
+ ind_subgroup = bcmbal_subscriber_terminal_auto_id_processing_error;
+ cb_cfg.p_subgroup = &ind_subgroup;
+ err = err ? err : bcmbal_subscribe_ind(access_term_id, &cb_cfg);
+
+ /* Subscriber Terminal sdi */
+ cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)bal_sub_term_sdi_indication_cb;
+ ind_subgroup = bcmbal_subscriber_terminal_auto_id_sdi;
+ cb_cfg.p_subgroup = &ind_subgroup;
+ err = err ? err : bcmbal_subscribe_ind(access_term_id, &cb_cfg);
+
+ /* Subscriber Terminal sfi */
+ cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)bal_sub_term_sfi_indication_cb;
+ ind_subgroup = bcmbal_subscriber_terminal_auto_id_sfi;
+ cb_cfg.p_subgroup = &ind_subgroup;
+ err = err ? err : bcmbal_subscribe_ind(access_term_id, &cb_cfg);
+
+ /* Subscriber Terminal activation fail */
+ cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)bal_sub_term_act_fail_indication_cb;
+ ind_subgroup = bcmbal_subscriber_terminal_auto_id_sub_term_act_fail;
+ cb_cfg.p_subgroup = &ind_subgroup;
+ err = err ? err : bcmbal_subscribe_ind(access_term_id, &cb_cfg);
+
+ /* Subscriber Terminal Alarm */
+ cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)bal_sub_term_alarm_indication_cb;
+ ind_subgroup = bcmbal_subscriber_terminal_auto_id_sub_term_alarm;
+ cb_cfg.p_subgroup = &ind_subgroup;
+ err = err ? err : bcmbal_subscribe_ind(access_term_id, &cb_cfg);
+
+ /* Subscriber Terminal Discovery */
+ cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)bal_sub_term_disc_indication_cb;
+ ind_subgroup = bcmbal_subscriber_terminal_auto_id_sub_term_disc;
+ cb_cfg.p_subgroup = &ind_subgroup;
+ err = err ? err : bcmbal_subscribe_ind(access_term_id, &cb_cfg);
+
+ /* Subscriber Terminal sufi */
+ cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)bal_sub_term_sufi_indication_cb;
+ ind_subgroup = bcmbal_subscriber_terminal_auto_id_sufi;
+ cb_cfg.p_subgroup = &ind_subgroup;
+ err = err ? err : bcmbal_subscribe_ind(access_term_id, &cb_cfg);
+
+ /* Subscriber Terminal tiwi */
+ cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)bal_sub_term_tiwi_indication_cb;
+ ind_subgroup = bcmbal_subscriber_terminal_auto_id_tiwi;
+ cb_cfg.p_subgroup = &ind_subgroup;
+ err = err ? err : bcmbal_subscribe_ind(access_term_id, &cb_cfg);
+
+ /* Register to get indication callbacks for Tm Sched Objects
*/
cb_cfg.obj_type = BCMBAL_OBJ_ID_TM_SCHED;
- cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)bal_tm_sched_indication_cb;
- ind_subgroup = bcmbal_tm_sched_auto_id_ind;
+
+ /* TM Sched operation status change */
+ cb_cfg.ind_cb_hdlr = \
+ (f_bcmbal_ind_handler)bal_tm_sched_auto_id_oper_status_change_cb;
+ ind_subgroup = bcmbal_tm_sched_auto_id_oper_status_change;
cb_cfg.p_subgroup = &ind_subgroup;
err = err ? err : bcmbal_subscribe_ind(access_term_id, &cb_cfg);
- /* Register to get indication callbacks for group objects
- */
- cb_cfg.obj_type = BCMBAL_OBJ_ID_GROUP;
- cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)bal_group_indication_cb;
- ind_subgroup = bcmbal_group_auto_id_ind;
- cb_cfg.p_subgroup = &ind_subgroup;
- err = err ? err : bcmbal_subscribe_ind(access_term_id, &cb_cfg);
return err;
}
@@ -208,17 +241,15 @@
ip_and_port = bal_init->voltha_adapter_ip_port;
ASFVOLT_LOG(ASFVOLT_DEBUG,"Received Adapter IP and Port from VOLTHA is %s",ip_and_port);
}
- char *argv[6];
+ char *argv[4];
/* Initialize BAL */
argv[1] = coreInfo->bal_core_arg1;
argv[2] = coreInfo->bal_core_ip_port;
- argv[3] = coreInfo->bal_core_arg2;
- argv[4] = coreInfo->bal_shared_lib_ip_port;
- int argc = 5;
+ int argc = 3;
client = grpc_c_client_init(ip_and_port, "bal_client", NULL);
/* Init BAL */
- err = bcmbal_apiend_init_all(argc, argv, NULL,3);
+ err = bcmbal_apiend_init_all(argc, argv, NULL, 3);
if(err != BCM_ERR_OK)
{
printf("\n Failed in bcmbal_init \n");
@@ -236,26 +267,26 @@
}
#endif
- /* Register the call back functions to handle any
- * indications from the BAL */
- bcmbal_cb_cfg cb_cfg = {};
- uint16_t ind_subgroup;
+ /* Register the call back functions to handle access term oper change
+ * indications from the BAL */
+ bcmbal_cb_cfg cb_cfg = {};
+ uint16_t ind_subgroup;
- cb_cfg.module = BCMOS_MODULE_ID_NONE;
- /* Register to get indications for access terminal objects
- */
- cb_cfg.obj_type = BCMBAL_OBJ_ID_ACCESS_TERMINAL;
+ cb_cfg.module = BCMOS_MODULE_ID_NONE;
+ /* Register to get indications for access terminal objects
+ */
+ cb_cfg.obj_type = BCMBAL_OBJ_ID_ACCESS_TERMINAL;
- /* Access Terminal Indication */
- cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)bal_acc_term_indication_cb;
- ind_subgroup = bcmbal_access_terminal_auto_id_ind;
+ /* Access Terminal Operational State Change */
+ cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)bal_acc_term_osc_indication_cb;
+ ind_subgroup = bcmbal_access_terminal_auto_id_oper_status_change;
cb_cfg.p_subgroup = &ind_subgroup;
err = err ? err : bcmbal_subscribe_ind(access_term_id, &cb_cfg);
- if (err)
- {
- ASFVOLT_LOG(ASFVOLT_ERROR, "failed to register call back functions to BAL");
- }
+ if (err)
+ {
+ ASFVOLT_LOG(ASFVOLT_ERROR, "failed to register call back functions to BAL");
+ }
return err;
}
@@ -421,51 +452,45 @@
* 4) Flow Cfg *
* 5) Group Cfg (In case of Multicast) *
********************************************************************/
-uint32_t asfvolt16_bal_cfg_get(BalKey *key, BalCfg *cfg)
+uint32_t asfvolt16_bal_cfg_get(BalCfg *cfg)
{
bcmos_errno err = BCM_ERR_OK;
- if(!key->hdr->has_obj_type)
- {
- ASFVOLT_LOG(ASFVOLT_ERROR, "object type is not present for get");
- return BAL_ERRNO__BAL_ERR_INVALID_OP;
- }
-
- switch(key->hdr->obj_type)
+ switch(cfg->hdr->obj_type)
{
case BAL_OBJ_ID__BAL_OBJ_ID_ACCESS_TERMINAL:
{
- err = bal_access_terminal_cfg_get(key->access_term_key, cfg->cfg );
+ err = bal_access_terminal_cfg_get(cfg->cfg);
break;
}
case BAL_OBJ_ID__BAL_OBJ_ID_INTERFACE:
{
- err = bal_interface_cfg_get(key->interface_key, cfg->interface);
+ err = bal_interface_cfg_get(cfg->interface);
break;
}
case BAL_OBJ_ID__BAL_OBJ_ID_SUBSCRIBER_TERMINAL:
{
- err = bal_subscriber_terminal_cfg_get(key->terminal_key, cfg->terminal);
+ err = bal_subscriber_terminal_cfg_get(cfg->terminal);
break;
}
case BAL_OBJ_ID__BAL_OBJ_ID_FLOW:
{
- err = bal_flow_cfg_get(key->flow_key, cfg->flow);
+ err = bal_flow_cfg_get(cfg->flow);
break;
}
case BAL_OBJ_ID__BAL_OBJ_ID_GROUP:
{
- err = bal_group_cfg_get(key->group_key, cfg->group);
+ err = bal_group_cfg_get(cfg->group);
break;
}
case BAL_OBJ_ID__BAL_OBJ_ID_TM_QUEUE:
{
- err = bal_tm_queue_cfg_get(key->tm_queue_key, cfg->tm_queue_cfg);
+ err = bal_tm_queue_cfg_get(cfg->tm_queue_cfg);
break;
}
case BAL_OBJ_ID__BAL_OBJ_ID_TM_SCHED:
{
- err = bal_tm_sched_cfg_get(key->tm_sched_key, cfg->tm_sched_cfg);
+ err = bal_tm_sched_cfg_get(cfg->tm_sched_cfg);
break;
}
case BAL_OBJ_ID__BAL_OBJ_ID_PACKET: