diff --git a/openbsc/src/gprs/gprs_sndcp.c b/openbsc/src/gprs/gprs_sndcp.c
index ec704e0..694d11a 100644
--- a/openbsc/src/gprs/gprs_sndcp.c
+++ b/openbsc/src/gprs/gprs_sndcp.c
@@ -146,11 +146,20 @@
 /* Entry point for the SNSM-ACTIVATE.indication */
 int sndcp_sm_activate_ind(struct gprs_llc_lle *lle, uint8_t nsapi)
 {
-	if (sndcp_entity_by_lle(lle, nsapi))
-		return -EEXIST;
+	LOGP(DSNDCP, LOGL_INFO, "SNSM-ACTIVATE.ind (TLLI=%08x, NSAPI=%u)\n",
+		lle->llme->tlli, nsapi);
 
-	if (!sndcp_entity_alloc(lle, nsapi))
+	if (sndcp_entity_by_lle(lle, nsapi)) {
+		LOGP(DSNDCP, LOGL_ERROR, "Trying to ACTIVATE "
+			"already-existing entity (TLLI=%08x, NSAPI=%u)\n",
+			lle->llme->tlli, nsapi);
+		return -EEXIST;
+	}
+
+	if (!sndcp_entity_alloc(lle, nsapi)) {
+		LOGP(DSNDCP, LOGL_ERROR, "Out of memory during ACTIVATE\n");
 		return -ENOMEM;
+	}
 
 	return 0;
 }
@@ -161,7 +170,7 @@
 	struct sndcp_entity *sne;
 	struct sndcp_common_hdr *sch = (struct sndcp_common_hdr *)hdr;
 	struct sndcp_udata_hdr *suh;
-	uint8_t *comp, *npdu;
+	uint8_t *npdu;
 	uint16_t npdu_num;
 	int npdu_len;
 
@@ -170,14 +179,15 @@
 		return -EINVAL;
 	}
 
-	if (len < sizeof(*sch) + sizeof(*comp) + sizeof(*suh)) {
+	if (len < sizeof(*sch) + sizeof(*suh)) {
 		LOGP(DGPRS, LOGL_ERROR, "SN-UNITDATA PDU too short (%u)\n", len);
 		return -EIO;
 	}
 
 	sne = sndcp_entity_by_lle(lle, sch->nsapi);
 	if (!sne) {
-		LOGP(DGPRS, LOGL_ERROR, "Message for non-existing SNDCP Entity\n");
+		LOGP(DGPRS, LOGL_ERROR, "Message for non-existing SNDCP Entity "
+			"(TLLI=%08x, NSAPI=%u)\n", lle->llme->tlli, sch->nsapi);
 		return -EIO;
 	}
 
@@ -187,14 +197,13 @@
 		return -EIO;
 	}
 
-	comp = (hdr + sizeof(struct sndcp_common_hdr));
-	if (comp) {
+	if (sch->pcomp || sch->dcomp) {
 		LOGP(DGPRS, LOGL_ERROR, "We don't support compression yet\n");
 		return -EIO;
 	}
-	suh = (struct sndcp_udata_hdr *) (comp + sizeof(*comp));
-	npdu_num = (suh->npdu_high << 8) | suh->npdu_low;
 
+	suh = (struct sndcp_udata_hdr *) (hdr + sizeof(struct sndcp_common_hdr));
+	npdu_num = (suh->npdu_high << 8) | suh->npdu_low;
 	npdu = (uint8_t *)suh + sizeof(*suh);
 	npdu_len = (msg->data + msg->len) - npdu;
 	if (npdu_len) {
