bal packet indication bug fix, heartbeat and reboot procedures
Change-Id: If798c1802c488dd6b4a73595c72245b7d5daa8d7
diff --git a/src/asfvolt16_driver.c b/src/asfvolt16_driver.c
index 1178ff2..24bca9d 100755
--- a/src/asfvolt16_driver.c
+++ b/src/asfvolt16_driver.c
@@ -95,6 +95,12 @@
cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler )bal_omci_data_indication_cb;
bcmbal_subscribe_ind(0, &cb_cfg);
+ /* Bearer Channel Data */
+ cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)bal_packet_data_indication_cb;
+ 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);
+
#if 0
/* Access Terminal Operational State Change */
cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)bal_acc_term_osc_indication_cb;
@@ -166,11 +172,6 @@
cb_cfg.p_subgroup = &ind_subgroup;
err = err ? err : bcmbal_subscribe_ind(access_term_id, &cb_cfg);
- /* Bearer Channel Data */
- cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)bal_packet_data_indication_cb;
- 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);
/* OAM Channel Data - oam response indication */
cb_cfg.ind_cb_hdlr = (f_bcmbal_ind_handler)bal_oam_data_indication_cb;
@@ -186,7 +187,7 @@
/********************************************************************
* *
* gRPC service RPC function implementation *
- * *
+ * *
********************************************************************/
/********************************************************************\
@@ -215,7 +216,7 @@
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 = 5;
client = grpc_c_client_init(ip_and_port, "bal_client", NULL);
/* Init BAL */
@@ -237,7 +238,7 @@
}
#endif
- /* Register the call back functions to handle any
+ /* Register the call back functions to handle any
* indications from the BAL */
bcmbal_cb_cfg cb_cfg = {};
uint16_t ind_subgroup;
@@ -282,7 +283,7 @@
* 1) Access Terminal Cfg *
* 2) Interface(PON & NNI) Cfg *
* 3) Subscriber Terminal (ONU) cfg *
- * 4) Flow Cfg *
+ * 4) Flow Cfg *
* 5) Group Cfg (In case of Multicast) *
********************************************************************/
uint32_t asfvolt16_bal_cfg_set(BalCfg *cfg)
@@ -349,7 +350,7 @@
* 1) Access Terminal Cfg *
* 2) Interface(PON & NNI) Cfg *
* 3) Subscriber Terminal (ONU) cfg *
- * 4) Flow Cfg *
+ * 4) Flow Cfg *
* 5) Group Cfg (In case of Multicast) *
********************************************************************/
uint32_t asfvolt16_bal_cfg_clear(BalKey *key)
@@ -419,7 +420,7 @@
* 1) Access Terminal Cfg *
* 2) Interface(PON & NNI) Cfg *
* 3) Subscriber Terminal (ONU) cfg *
- * 4) Flow Cfg *
+ * 4) Flow Cfg *
* 5) Group Cfg (In case of Multicast) *
********************************************************************/
uint32_t asfvolt16_bal_cfg_get(BalKey *key, BalCfg *cfg)
diff --git a/src/bal_indications_hdlr.c b/src/bal_indications_hdlr.c
index 1c34d6e..44c4620 100755
--- a/src/bal_indications_hdlr.c
+++ b/src/bal_indications_hdlr.c
@@ -18,7 +18,7 @@
/*static bcmos_mutex bal_ind_lock; - Need to define bcm independent mutex*/
/********************************************************************\
- * Function : bal_acc_term_indication_cb *
+ * Function : bal_acc_term_indication_cb *
* Description : This function will handle the indications for *
* Access Terminal Indication *
* *
@@ -27,7 +27,7 @@
{
bcmos_errno result = BCM_ERR_OK;
- if(BCMBAL_OBJ_ID_ACCESS_TERMINAL != obj->obj_type ||
+ if(BCMBAL_OBJ_ID_ACCESS_TERMINAL != obj->obj_type ||
bcmbal_access_terminal_auto_id_ind != obj->subgroup)
{
ASFVOLT_LOG(ASFVOLT_ERROR, "Processing BAL API \'%s\' IND callback (status is %s)\n",
@@ -49,7 +49,6 @@
balIndCfg.device_id = voltha_device_id;
bcmbal_access_terminal_ind *acc_term_ind = (bcmbal_access_terminal_ind *)obj;
-
BalAccessTerminalInd acessTermInd;
memset(&acessTermInd, 0, sizeof(BalAccessTerminalInd));
@@ -61,61 +60,61 @@
bal_obj__init(&hdr);
balIndCfg.access_term_ind->hdr = &hdr;
- BalAccessTerminalKey accessTermkey;
+ BalAccessTerminalKey accessTermkey;
memset(&accessTermkey, 0, sizeof(BalAccessTerminalKey));
bal_access_terminal_key__init(&accessTermkey);
- balIndCfg.access_term_ind->key = &accessTermkey;
+ balIndCfg.access_term_ind->key = &accessTermkey;
- balIndCfg.access_term_ind->key->has_access_term_id = BAL_GRPC_PRES;
+ balIndCfg.access_term_ind->key->has_access_term_id = BAL_GRPC_PRES;
balIndCfg.access_term_ind->key->access_term_id = acc_term_ind->key.access_term_id;
-
+
BalAccessTerminalIndData accessTermIndData;
memset(&accessTermIndData, 0, sizeof(BalAccessTerminalIndData));
bal_access_terminal_ind_data__init(&accessTermIndData);
- balIndCfg.access_term_ind->data = &accessTermIndData;
+ balIndCfg.access_term_ind->data = &accessTermIndData;
- balIndCfg.access_term_ind->data->has_admin_state = BAL_GRPC_PRES;
- balIndCfg.access_term_ind->data->admin_state = acc_term_ind->data.admin_state;
- balIndCfg.access_term_ind->data->has_oper_status = BAL_GRPC_PRES;
- balIndCfg.access_term_ind->data->oper_status = acc_term_ind->data.oper_status;
- balIndCfg.access_term_ind->data->has_iwf_mode = BAL_GRPC_PRES;
- balIndCfg.access_term_ind->data->iwf_mode = acc_term_ind->data.iwf_mode;
+ balIndCfg.access_term_ind->data->has_admin_state = BAL_GRPC_PRES;
+ balIndCfg.access_term_ind->data->admin_state = acc_term_ind->data.admin_state;
+ balIndCfg.access_term_ind->data->has_oper_status = BAL_GRPC_PRES;
+ balIndCfg.access_term_ind->data->oper_status = acc_term_ind->data.oper_status;
+ balIndCfg.access_term_ind->data->has_iwf_mode = BAL_GRPC_PRES;
+ balIndCfg.access_term_ind->data->iwf_mode = acc_term_ind->data.iwf_mode;
BalTopology balTop;
memset(&balTop, 0, sizeof(BalTopology));
bal_topology__init(&balTop);
- balIndCfg.access_term_ind->data->topology = &balTop;
+ balIndCfg.access_term_ind->data->topology = &balTop;
- balIndCfg.access_term_ind->data->topology->has_num_of_nni_ports = BAL_GRPC_PRES;
- balIndCfg.access_term_ind->data->topology->num_of_nni_ports =
- acc_term_ind->data.topology.num_of_nni_ports;
- balIndCfg.access_term_ind->data->topology->has_num_of_pon_ports = BAL_GRPC_PRES;
- balIndCfg.access_term_ind->data->topology->num_of_pon_ports =
- acc_term_ind->data.topology.num_of_pon_ports;
- balIndCfg.access_term_ind->data->topology->has_num_of_mac_devs = BAL_GRPC_PRES;
- balIndCfg.access_term_ind->data->topology->num_of_mac_devs =
- acc_term_ind->data.topology.num_of_mac_devs;
- balIndCfg.access_term_ind->data->topology->has_num_of_pons_per_mac_dev = BAL_GRPC_PRES;
- balIndCfg.access_term_ind->data->topology->num_of_pons_per_mac_dev =
- acc_term_ind->data.topology.num_of_pons_per_mac_dev;
- balIndCfg.access_term_ind->data->topology->has_pon_family = BAL_GRPC_PRES;
- balIndCfg.access_term_ind->data->topology->pon_family =
- acc_term_ind->data.topology.pon_family;
- balIndCfg.access_term_ind->data->topology->has_pon_sub_family = BAL_GRPC_PRES;
- balIndCfg.access_term_ind->data->topology->pon_sub_family =
- acc_term_ind->data.topology.pon_sub_family;
+ balIndCfg.access_term_ind->data->topology->has_num_of_nni_ports = BAL_GRPC_PRES;
+ balIndCfg.access_term_ind->data->topology->num_of_nni_ports =
+ acc_term_ind->data.topology.num_of_nni_ports;
+ balIndCfg.access_term_ind->data->topology->has_num_of_pon_ports = BAL_GRPC_PRES;
+ balIndCfg.access_term_ind->data->topology->num_of_pon_ports =
+ acc_term_ind->data.topology.num_of_pon_ports;
+ balIndCfg.access_term_ind->data->topology->has_num_of_mac_devs = BAL_GRPC_PRES;
+ balIndCfg.access_term_ind->data->topology->num_of_mac_devs =
+ acc_term_ind->data.topology.num_of_mac_devs;
+ balIndCfg.access_term_ind->data->topology->has_num_of_pons_per_mac_dev = BAL_GRPC_PRES;
+ balIndCfg.access_term_ind->data->topology->num_of_pons_per_mac_dev =
+ acc_term_ind->data.topology.num_of_pons_per_mac_dev;
+ balIndCfg.access_term_ind->data->topology->has_pon_family = BAL_GRPC_PRES;
+ balIndCfg.access_term_ind->data->topology->pon_family =
+ acc_term_ind->data.topology.pon_family;
+ balIndCfg.access_term_ind->data->topology->has_pon_sub_family = BAL_GRPC_PRES;
+ balIndCfg.access_term_ind->data->topology->pon_sub_family =
+ acc_term_ind->data.topology.pon_sub_family;
BalSwVersion balsv;
memset(&balsv, 0, sizeof(BalSwVersion));
bal_sw_version__init(&balsv);
- balIndCfg.access_term_ind->data->sw_version = &balsv;
+ balIndCfg.access_term_ind->data->sw_version = &balsv;
- balIndCfg.access_term_ind->data->sw_version->has_version_type = BAL_GRPC_PRES;
- balIndCfg.access_term_ind->data->sw_version->version_type =
- acc_term_ind->data.sw_version.version_type;
- balIndCfg.access_term_ind->data->sw_version->has_major_rev = BAL_GRPC_PRES;
- balIndCfg.access_term_ind->data->sw_version->major_rev =
- acc_term_ind->data.sw_version.major_rev;
+ balIndCfg.access_term_ind->data->sw_version->has_version_type = BAL_GRPC_PRES;
+ balIndCfg.access_term_ind->data->sw_version->version_type =
+ acc_term_ind->data.sw_version.version_type;
+ balIndCfg.access_term_ind->data->sw_version->has_major_rev = BAL_GRPC_PRES;
+ balIndCfg.access_term_ind->data->sw_version->major_rev =
+ acc_term_ind->data.sw_version.major_rev;
balIndCfg.access_term_ind->data->sw_version->has_minor_rev = BAL_GRPC_PRES;
balIndCfg.access_term_ind->data->sw_version->minor_rev =
acc_term_ind->data.sw_version.minor_rev;
@@ -1487,6 +1486,8 @@
/*bcmos_mutex_lock(&bal_ind_lock);-- Need to define bcm independent mutex*/
BalIndications balIndCfg;
+ memset(&balIndCfg, 0, sizeof(BalIndications));
+ bal_indications__init(&balIndCfg);
balIndCfg.u_case = BAL_INDICATIONS__U_PKT_DATA;
balIndCfg.has_objtype = BAL_GRPC_PRES;
balIndCfg.objtype = obj->obj_type;
@@ -1596,6 +1597,7 @@
balIndCfg.pktdata->data->flow_cookie = rx_channel->data.flow_cookie;
balIndCfg.pktdata->data->has_pkt = BAL_GRPC_PRES;
balIndCfg.pktdata->data->pkt.len = rx_channel->data.pkt.len;
+ balIndCfg.pktdata->data->pkt.data = (uint8_t *)malloc((balIndCfg.pktdata->data->pkt.len)*sizeof(uint8_t));
memcpy(balIndCfg.pktdata->data->pkt.data, rx_channel->data.pkt.val, balIndCfg.pktdata->data->pkt.len);
/*bcmos_mutex_unlock(&bal_ind_lock);-- Need to define bcm independent mutex*/