diff mbox series

[09/10] udevng: Set the QMI minimum service request period for Quectel BG96 modems.

Message ID 5f9277b84477f13890620d4dbda3804881142946.1739339173.git.gerickson@nuovations.com (mailing list archive)
State Superseded
Headers show
Series Add QMI Device Service Request Rate-limit Option | expand

Commit Message

Grant Erickson Feb. 12, 2025, 5:52 a.m. UTC
The Quectel Wireless Solutions Co., Ltd. (2c7c) BG96 CAT-M1/NB-IoT
modem (0296) has a firmware issue where it can lock up and hang (not
responding to subsequent commands) due to high QMI service request
arrival rates. If the vendor and model match those, then rate limit
QMI service requests to no more than one every 2,000 us.
---
 plugins/udevng.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

Comments

Denis Kenzior Feb. 12, 2025, 7:30 p.m. UTC | #1
Hi Grant,

On 2/11/25 11:52 PM, Grant Erickson wrote:
> The Quectel Wireless Solutions Co., Ltd. (2c7c) BG96 CAT-M1/NB-IoT
> modem (0296) has a firmware issue where it can lock up and hang (not
> responding to subsequent commands) due to high QMI service request
> arrival rates. If the vendor and model match those, then rate limit
> QMI service requests to no more than one every 2,000 us.
> ---
>   plugins/udevng.c | 14 ++++++++++++++
>   1 file changed, 14 insertions(+)
> 
> diff --git a/plugins/udevng.c b/plugins/udevng.c
> index 64875a47752b..e7cf494a70ff 100644
> --- a/plugins/udevng.c
> +++ b/plugins/udevng.c
> @@ -1118,6 +1118,20 @@ static gboolean setup_quectelqmi(struct modem_info *modem)
>   
>   	DBG("%s", modem->syspath);
>   
> +	/*
> +	 * The Quectel Wireless Solutions Co., Ltd. (2c7c) BG96
> +	 * CAT-M1/NB-IoT modem (0296) has a firmware issue where it can
> +	 * lock up and hang (not responding to subsequent commands) due to
> +	 * high QMI service request arrival rates. If the vendor and model
> +	 * match those, then rate limit QMI service requests to no more
> +	 * than one every 2,000 us.
> +	 */
> +	if (g_strcmp0(modem->vendor, "2c7c") == 0) {

Please use ell for all new code.  l_streq0 or so.

> +		if (g_strcmp0(modem->model, "0296") == 0) {
> +			ofono_modem_set_integer(modem->modem, "QMIMinReqPeriodUs", 2000);
> +		}
> +	}

The {} are unnecessary.

> +
>   	for (list = modem->devices; list; list = g_slist_next(list)) {
>   		const struct device_info *info = list->data;
>   		const char *subsystem =

Regards,
-Denis
Grant Erickson Feb. 13, 2025, 12:16 a.m. UTC | #2
On Feb 12, 2025, at 11:30 AM, Denis Kenzior <denkenz@gmail.com> wrote:
> On 2/11/25 11:52 PM, Grant Erickson wrote:
>> The Quectel Wireless Solutions Co., Ltd. (2c7c) BG96 CAT-M1/NB-IoT
>> modem (0296) has a firmware issue where it can lock up and hang (not
>> responding to subsequent commands) due to high QMI service request
>> arrival rates. If the vendor and model match those, then rate limit
>> QMI service requests to no more than one every 2,000 us.
>> ---
>>  plugins/udevng.c | 14 ++++++++++++++
>>  1 file changed, 14 insertions(+)
>> diff --git a/plugins/udevng.c b/plugins/udevng.c
>> index 64875a47752b..e7cf494a70ff 100644
>> --- a/plugins/udevng.c
>> +++ b/plugins/udevng.c
>> @@ -1118,6 +1118,20 @@ static gboolean setup_quectelqmi(struct modem_info *modem)
>>     DBG("%s", modem->syspath);
>>  + /*
>> + * The Quectel Wireless Solutions Co., Ltd. (2c7c) BG96
>> + * CAT-M1/NB-IoT modem (0296) has a firmware issue where it can
>> + * lock up and hang (not responding to subsequent commands) due to
>> + * high QMI service request arrival rates. If the vendor and model
>> + * match those, then rate limit QMI service requests to no more
>> + * than one every 2,000 us.
>> + */
>> + if (g_strcmp0(modem->vendor, "2c7c") == 0) {
> 
> Please use ell for all new code.  l_streq0 or so.
> 
>> + if (g_strcmp0(modem->model, "0296") == 0) {
>> + ofono_modem_set_integer(modem->modem, "QMIMinReqPeriodUs", 2000);
>> + }
>> + }
> 
> The {} are unnecessary.

Denis,

Noted; will include both in a v2.

Best,

Grant
diff mbox series

Patch

diff --git a/plugins/udevng.c b/plugins/udevng.c
index 64875a47752b..e7cf494a70ff 100644
--- a/plugins/udevng.c
+++ b/plugins/udevng.c
@@ -1118,6 +1118,20 @@  static gboolean setup_quectelqmi(struct modem_info *modem)
 
 	DBG("%s", modem->syspath);
 
+	/*
+	 * The Quectel Wireless Solutions Co., Ltd. (2c7c) BG96
+	 * CAT-M1/NB-IoT modem (0296) has a firmware issue where it can
+	 * lock up and hang (not responding to subsequent commands) due to
+	 * high QMI service request arrival rates. If the vendor and model
+	 * match those, then rate limit QMI service requests to no more
+	 * than one every 2,000 us.
+	 */
+	if (g_strcmp0(modem->vendor, "2c7c") == 0) {
+		if (g_strcmp0(modem->model, "0296") == 0) {
+			ofono_modem_set_integer(modem->modem, "QMIMinReqPeriodUs", 2000);
+		}
+	}
+
 	for (list = modem->devices; list; list = g_slist_next(list)) {
 		const struct device_info *info = list->data;
 		const char *subsystem =