From 58f9395711b34b9743fb77031e6474c1379b0863 Mon Sep 17 00:00:00 2001 From: Pau Espin Pedrol Date: Tue, 29 Aug 2017 16:03:44 +0200 Subject: [PATCH] sms: Fix sms send for qmi modems not returning TP-MR Gobi 2000 doesn't provide the QMI_WMS_RESULT_MESSAGE_ID field. As a result, delivery is resolved as failed and it tries to retransmit it again and again. From user point of view, a message is sent but the message is received 4 times. ofonod[6370]: drivers/qmimodem/qmibridge.c:ask_qmi() READ: QMI QMUX: QMI length = 19 QMI flags = 0x80 QMI service = "wms" QMI client = 1 QMI QMI: QMI flags = "response" QMI transaction = 293 QMI tlv_length = 7 QMI message = "Raw Send" (0x0020) QMI TLV: QMI type = "Result" (0x02) QMI length = 4 QMI value = 00:00:00:00 QMI translated = SUCCESS --- drivers/qmimodem/sms.c | 3 ++- src/sms.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/qmimodem/sms.c b/drivers/qmimodem/sms.c index 7e6baec5..23c85731 100644 --- a/drivers/qmimodem/sms.c +++ b/drivers/qmimodem/sms.c @@ -171,7 +171,8 @@ static void raw_send_cb(struct qmi_result *result, void *user_data) } if (!qmi_result_get_uint16(result, QMI_WMS_RESULT_MESSAGE_ID, &msgid)) { - CALLBACK_WITH_FAILURE(cb, -1, cbd->data); + DBG("TP-MR field missing"); + CALLBACK_WITH_SUCCESS(cb, -1, cbd->data); return; } diff --git a/src/sms.c b/src/sms.c index b86158e6..bec13ece 100644 --- a/src/sms.c +++ b/src/sms.c @@ -720,7 +720,7 @@ static void tx_finished(const struct ofono_error *error, int mr, void *data) entry->cur_pdu += 1; entry->retry = 0; - if (entry->flags & OFONO_SMS_SUBMIT_FLAG_REQUEST_SR) + if (entry->flags & OFONO_SMS_SUBMIT_FLAG_REQUEST_SR && mr >= 0) status_report_assembly_add_fragment(sms->sr_assembly, entry->uuid.uuid, &entry->receiver,