RP-ACK needs to be sent in a CP-DATA
diff --git a/src/gsm_04_11.c b/src/gsm_04_11.c
index a409a59..59ab6d3 100644
--- a/src/gsm_04_11.c
+++ b/src/gsm_04_11.c
@@ -127,10 +127,12 @@
 	msg->lchan = lchan;
 
 	gh = (struct gsm48_hdr *) msgb_put(msg, sizeof(*gh));
-	gh->proto_discr = GSM48_PDISC_SMS | trans_id<<4;
-	gh->msg_type = GSM411_MT_CP_ACK;
+	// Outgoing needs the highest bit set
+	gh->proto_discr = GSM48_PDISC_SMS | trans_id<<4 | 0x80;
+	gh->msg_type = GSM411_MT_CP_DATA;
 
 	rp = (struct gsm411_rp_hdr *)msgb_put(msg, sizeof(*rp));
+	rp->len = 2;
 	rp->msg_type = GSM411_MT_RP_ACK_MT;
 	rp->msg_ref = msg_ref;
 
@@ -149,8 +151,9 @@
 	msg->lchan = lchan;
 
 	gh = (struct gsm48_hdr *) msgb_put(msg, sizeof(*gh));
-	gh->proto_discr = GSM48_PDISC_SMS | trans_id<<4;
-	gh->msg_type = GSM411_MT_CP_ERROR;
+	// Outgoing needs the highest bit set
+	gh->proto_discr = GSM48_PDISC_SMS | trans_id<<4 | 0x80;
+	gh->msg_type = GSM411_MT_CP_DATA;
 
 	rp = (struct gsm411_rp_hdr *)msgb_put(msg, sizeof(*rp));
 	rp->msg_type = GSM411_MT_RP_ERROR_MT;