diff --git a/src/dsl_fapi.c b/src/dsl_fapi.c
index e83021a1775045c1077671b8ac23e17451d12e60..cdbb2b9d0cb738a61f0308a0c3bd7b317af4cbe8 100644
--- a/src/dsl_fapi.c
+++ b/src/dsl_fapi.c
@@ -1751,7 +1751,6 @@ enum fapi_dsl_status fapi_dsl_channel_get(struct fapi_dsl_ctx *ctx, struct dsl_f
 	} dsl_driver_data;
 	DSL_DslModeSelection_t dsl_mode = DSL_MODE_NA;
 	unsigned int offset;
-	unsigned int max_offset;
 	int ret, fd;
 
 	if (ctx == NULL)
@@ -1813,7 +1812,7 @@ enum fapi_dsl_status fapi_dsl_channel_get(struct fapi_dsl_ctx *ctx, struct dsl_f
 
 	/* Device.DSL.Channel.LinkEncapsulationSupported */
 	memset(&dsl_driver_data.system_interface_config, 0x00, sizeof(DSL_SystemInterfaceConfig_t));
-	offset = max_offset = 0;
+	offset = 0;
 	dsl_driver_data.system_interface_config.nDslMode = DSL_MODE_ADSL;
 	ret = ioctl(fd, DSL_FIO_SYSTEM_INTERFACE_CONFIG_GET, (int)&dsl_driver_data.system_interface_config);
 	if ((ret < 0) && (dsl_driver_data.system_interface_config.accessCtl.nReturn < DSL_SUCCESS)) {
@@ -1842,12 +1841,6 @@ enum fapi_dsl_status fapi_dsl_channel_get(struct fapi_dsl_ctx *ctx, struct dsl_f
 		}
 		offset = strlen(obj->link_encapsulation_supported);
 	}
-	if (offset) {
-		++offset;
-		max_offset = (offset < sizeof(obj->link_encapsulation_supported)) ?
-			offset : sizeof(obj->link_encapsulation_supported) - 1;
-		obj->link_encapsulation_supported[max_offset] = ',';
-	}
 
 	memset(&dsl_driver_data.system_interface_config, 0x00, sizeof(DSL_SystemInterfaceConfig_t));
 
@@ -1857,25 +1850,34 @@ enum fapi_dsl_status fapi_dsl_channel_get(struct fapi_dsl_ctx *ctx, struct dsl_f
 		LOGF_LOG_ERROR("DSL FAPI: Device.DSL.Channel.LinkEncapsulationSupported:"
 			       "error code %d\n", dsl_driver_data.system_interface_config.accessCtl.nReturn);
 	} else {
+		const char *link_encap = NULL;
+
 		switch (dsl_driver_data.system_interface_config.data.nTcLayer) {
 		case DSL_TC_ATM:
-			strlcpy(obj->link_encapsulation_supported + offset,
-				"G.993.2_Annex_K_ATM", sizeof(obj->link_encapsulation_supported) - offset);
+			link_encap = "G.993.2_Annex_K_ATM";
 			break;
 
 		case DSL_TC_EFM:
 		case DSL_TC_EFM_FORCED:
-			strlcpy(obj->link_encapsulation_supported + offset,
-				"G.993.2_Annex_K_PTM", sizeof(obj->link_encapsulation_supported) - offset);
+			link_encap = "G.993.2_Annex_K_PTM";
 			break;
 
 		case DSL_TC_AUTO:
-			strlcpy(obj->link_encapsulation_supported + offset,
-				"G.994.1 (Auto)", sizeof(obj->link_encapsulation_supported) - offset);
+			link_encap = "G.994.1 (Auto)";
 			break;
 
 		default:
-			obj->link_encapsulation_supported[max_offset] = '\0';
+			break;
+		}
+
+		if (link_encap != NULL) {
+			if (offset > 0) {
+				strlcpy(obj->link_encapsulation_supported + offset,
+					",", sizeof(obj->link_encapsulation_supported) - offset);
+				offset++;
+			}
+			strlcpy(obj->link_encapsulation_supported + offset,
+				link_encap, sizeof(obj->link_encapsulation_supported) - offset);
 		}
 	}