diff --git a/CHANGELOG.md b/CHANGELOG.md
index fb8228d..4e9ed9c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,9 +4,18 @@ All notable changes to this project will be documented in this file. Dates are d
Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
-#### [2.0.0](https://github.com/rdkcentral/cable-modem-agent/compare/1.3.0...2.0.0)
+#### [2.1.0](https://github.com/rdkcentral/cable-modem-agent/compare/2.0.0...2.1.0)
+
+- RDKB-62709 RDKB-62780: Update Bootfile param to 255 char in CM Agent [`#20`](https://github.com/rdkcentral/cable-modem-agent/pull/20)
+- RDKB-60656 : Available memory check for firmware downloads [`#23`](https://github.com/rdkcentral/cable-modem-agent/pull/23)
+- Merge tag '2.0.0' into develop [`3f1dd7c`](https://github.com/rdkcentral/cable-modem-agent/commit/3f1dd7c501d11c63101c8b5a6c258074a2ef3d91)
+
+### [2.0.0](https://github.com/rdkcentral/cable-modem-agent/compare/1.3.0...2.0.0)
+
+> 21 January 2026
- RDKCOM-5478: RDKBDEV-3320 Add CcspCMAgent Documentation [`#19`](https://github.com/rdkcentral/cable-modem-agent/pull/19)
+- Add changelog for release 2.0.0 [`ca45354`](https://github.com/rdkcentral/cable-modem-agent/commit/ca45354c6c468b0f322fe7e68be5e06cc6c2cdd1)
- Merge tag '1.3.0' into develop [`15a87fe`](https://github.com/rdkcentral/cable-modem-agent/commit/15a87fed50e024cd7003bdea7353476197352c95)
#### [1.3.0](https://github.com/rdkcentral/cable-modem-agent/compare/1.2.0...1.3.0)
diff --git a/config-arm/TR181-CM.XML b/config-arm/TR181-CM.XML
index 0ed0384..d463ef3 100644
--- a/config-arm/TR181-CM.XML
+++ b/config-arm/TR181-CM.XML
@@ -273,7 +273,7 @@
BootFileName
- string(64)
+ string(256)
string
@@ -373,7 +373,7 @@
IPv6BootFileName
- string(64)
+ string(256)
string
diff --git a/source/CMAgentSsp/ssp_main.c b/source/CMAgentSsp/ssp_main.c
index d9c9ed6..118e583 100644
--- a/source/CMAgentSsp/ssp_main.c
+++ b/source/CMAgentSsp/ssp_main.c
@@ -51,6 +51,7 @@
//#include
#include "safec_lib_common.h"
#include "syscfg/syscfg.h"
+#include "telemetry_busmessage_sender.h"
#include
#define DEBUG_INI_NAME "/etc/debug.ini"
@@ -960,6 +961,7 @@ int main(int argc, char *argv[])
CcspTraceInfo(("pthread create docsis registration\n"));
pthread_create(&docsisclbk_tid, NULL, GWP_docsisregistration_threadfunc, NULL);
#endif
+ t2_init("CcspCMAgent");
cmd_dispatch('e');
// printf("Calling Docsis\n");
diff --git a/source/TR-181/include/cosa_x_cisco_com_cablemodem_apis.h b/source/TR-181/include/cosa_x_cisco_com_cablemodem_apis.h
index f4c4072..5a2695e 100644
--- a/source/TR-181/include/cosa_x_cisco_com_cablemodem_apis.h
+++ b/source/TR-181/include/cosa_x_cisco_com_cablemodem_apis.h
@@ -93,7 +93,7 @@ typedef struct
_COSA_CM_DHCP_INFO
{
ANSC_IPV4_ADDRESS IPAddress;
- char BootFileName[64];
+ char BootFileName[256];
ANSC_IPV4_ADDRESS SubnetMask;
ANSC_IPV4_ADDRESS Gateway;
ANSC_IPV4_ADDRESS TFTPServer;
@@ -165,7 +165,7 @@ typedef struct
_COSA_CM_IPV6DHCP_INFO
{
char IPv6Address[40];
- char IPv6BootFileName[64];
+ char IPv6BootFileName[256];
char IPv6Prefix[40];
char IPv6Router[40];
char IPv6TFTPServer[40];
diff --git a/source/TR-181/integration_src.shared/Makefile.am b/source/TR-181/integration_src.shared/Makefile.am
index 944ab48..acd49bb 100644
--- a/source/TR-181/integration_src.shared/Makefile.am
+++ b/source/TR-181/integration_src.shared/Makefile.am
@@ -29,7 +29,7 @@ libCcspCMAgent_integration_src_shared_la_CPPFLAGS = \
-I$(top_srcdir)/source/Custom
libCcspCMAgent_integration_src_shared_la_SOURCES = cosa_x_cisco_com_cablemodem_apis.c cosa_device_info_apis.c cosa_x_rdkcentral_com_cablemodem_apis.c
-libCcspCMAgent_integration_src_shared_la_LDFLAGS = -lccsp_common -lcm_mgnt -lsysevent -lsecure_wrapper
+libCcspCMAgent_integration_src_shared_la_LDFLAGS = -lccsp_common -lcm_mgnt -lsysevent -lsecure_wrapper -lfw_download_chk
if CORE_NET_LIB_FEATURE_SUPPORT
libCcspCMAgent_integration_src_shared_la_LDFLAGS += -lnet
endif
diff --git a/source/TR-181/integration_src.shared/cosa_device_info_apis.c b/source/TR-181/integration_src.shared/cosa_device_info_apis.c
index a32336a..bf65b80 100644
--- a/source/TR-181/integration_src.shared/cosa_device_info_apis.c
+++ b/source/TR-181/integration_src.shared/cosa_device_info_apis.c
@@ -77,6 +77,7 @@
#include "safec_lib_common.h"
#include
#include "secure_wrapper.h"
+#include "fw_download_check.h"
#define CM_HTTPURL_LEN 512
#define VALID_fW_LEN 128
@@ -379,7 +380,6 @@ ANSC_STATUS CosaDmlDIGetRfSignalStatus(BOOLEAN *pRfSignalStatus) {
}
#endif
-
ANSC_STATUS CosaDmlDIDownloadNow(ANSC_HANDLE hContext)
{
PCOSA_DATAMODEL_DEVICEINFO pMyObject = (PCOSA_DATAMODEL_DEVICEINFO)hContext;
@@ -491,6 +491,12 @@ ANSC_STATUS CosaDmlDIDownloadNow(ANSC_HANDLE hContext)
}
} */
+
+ if(can_proceed_fw_download() == FW_DWNLD_MEMCHK_NOT_ENOUGH_MEM){
+ CcspTraceError(("CosaDmlDIDownloadNow : Not enough memory to proceed firmware download\n"));
+ return ANSC_STATUS_FAILURE;
+ }
+
pthread_t FWDL_Thread;
res = pthread_create(&FWDL_Thread, NULL, FWDL_ThreadFunc, "FWDL_ThreadFunc");
if(res != 0)