diff mbox series

umbim: Add mbim message timeout option, -T

Message ID 20230705130824.1315847-1-daniel@dd-wrt.com
State New
Headers show
Series umbim: Add mbim message timeout option, -T | expand

Commit Message

Daniel Danzberger July 5, 2023, 1:08 p.m. UTC
Some modems, depending on their state and connection quality can take
longer than 15 seconds to answer mbim message requests.

This commit adds the -T option, allowing the user to specifiy a custom
message timeout in seconds.

Default is still 15.

Signed-off-by: Daniel Danzberger <daniel@dd-wrt.com>
---
 cli.c      | 9 +++++++--
 mbim-dev.c | 2 +-
 mbim.h     | 1 +
 3 files changed, 9 insertions(+), 3 deletions(-)

Comments

Eric July 5, 2023, 3:03 p.m. UTC | #1
The sender domain has a DMARC Reject/Quarantine policy which disallows
sending mailing list messages using the original "From" header.

To mitigate this problem, the original message has been wrapped
automatically by the mailing list software.
On Wednesday, July 5th, 2023 at 06:08, Daniel Danzberger <daniel@dd-wrt.com> wrote:
> Some modems, depending on their state and connection quality can take
> longer than 15 seconds to answer mbim message requests.
> 
> This commit adds the -T option, allowing the user to specifiy a custom
> message timeout in seconds.
> 
> Default is still 15.
> 
> Signed-off-by: Daniel Danzberger daniel@dd-wrt.com
> 
> ---
> cli.c | 9 +++++++--
> mbim-dev.c | 2 +-
> mbim.h | 1 +
> 3 files changed, 9 insertions(+), 3 deletions(-)
> 
> diff --git a/cli.c b/cli.c
> index 3a845d4..b23fc6d 100644
> --- a/cli.c
> +++ b/cli.c
> @@ -35,6 +35,7 @@
> 
> int return_code = -1;
> int verbose;
> +int msg_timeout_ms = 15 * 1000;
> 
> struct mbim_handler *current_handler;
> static uint8_t uuid_context_type_internet[16] = { 0x7E, 0x5E, 0x2A, 0x7E, 0x4E, 0x6F, 0x72, 0x72, 0x73, 0x6B, 0x65, 0x6E, 0x7E, 0x5E, 0x2A, 0x7E };
> @@ -533,7 +534,8 @@ usage(void)
> #endif
> " -d <device> the device (/dev/cdc-wdmX)\n"
> 
> " -t <transaction> the transaction id\n"
> 
> - " -n no close\n\n"
> + " -n no close\n"
> + " -T MBIM message timeout in seconds [15]\n\n"

Shouldn't the usage indicate explicitly that it takes a parameter, as do -d and -t?

   " -T <seconds>    MBIM message timeout...

> " -v verbose\n\n");
> return 1;
> }
> @@ -548,7 +550,7 @@ main(int argc, char **argv)
> int proxy = 0;
> #endif
> 
> - while ((ch = getopt(argc, argv, "pnvd:t:")) != -1) {
> + while ((ch = getopt(argc, argv, "pnvd:t:T:")) != -1) {
> switch (ch) {
> case 'v':
> verbose = 1;
> @@ -563,6 +565,9 @@ main(int argc, char **argv)
> no_open = 1;
> transaction_id = atoi(optarg);
> break;
> + case 'T':
> + msg_timeout_ms = atoi(optarg) * 1000;
> + break;
> #ifdef LIBQMI_MBIM_PROXY
> case 'p':
> proxy = 1;
> diff --git a/mbim-dev.c b/mbim-dev.c
> index 2a94d49..12d1189 100644
> --- a/mbim-dev.c
> +++ b/mbim-dev.c
> @@ -78,7 +78,7 @@ mbim_send(void)
> perror("writing data failed: ");
> } else {
> expected = le32toh(hdr->type) | 0x80000000;
> 
> - uloop_timeout_set(&tout, 15000);
> + uloop_timeout_set(&tout, msg_timeout_ms);
> }
> return ret;
> }
> diff --git a/mbim.h b/mbim.h
> index 746257e..28999b5 100644
> --- a/mbim.h
> +++ b/mbim.h
> @@ -20,6 +20,7 @@
> 
> extern int return_code;
> extern int verbose;
> +extern int msg_timeout_ms;
> 
> #include "mbim-type.h"
> #include "mbim-enum.h"
> --
> 2.40.1
Daniel Danzberger July 5, 2023, 3:04 p.m. UTC | #2
On Wed, 2023-07-05 at 15:03 +0000, Eric wrote:
> On Wednesday, July 5th, 2023 at 06:08, Daniel Danzberger <daniel@dd-wrt.com> wrote:
> > Some modems, depending on their state and connection quality can take
> > longer than 15 seconds to answer mbim message requests.
> > 
> > This commit adds the -T option, allowing the user to specifiy a custom
> > message timeout in seconds.
> > 
> > Default is still 15.
> > 
> > Signed-off-by: Daniel Danzberger daniel@dd-wrt.com
> > 
> > ---
> > cli.c | 9 +++++++--
> > mbim-dev.c | 2 +-
> > mbim.h | 1 +
> > 3 files changed, 9 insertions(+), 3 deletions(-)
> > 
> > diff --git a/cli.c b/cli.c
> > index 3a845d4..b23fc6d 100644
> > --- a/cli.c
> > +++ b/cli.c
> > @@ -35,6 +35,7 @@
> > 
> > int return_code = -1;
> > int verbose;
> > +int msg_timeout_ms = 15 * 1000;
> > 
> > struct mbim_handler *current_handler;
> > static uint8_t uuid_context_type_internet[16] = { 0x7E, 0x5E, 0x2A, 0x7E, 0x4E, 0x6F, 0x72, 0x72, 0x73, 0x6B, 0x65, 0x6E, 0x7E, 0x5E, 0x2A, 0x7E
> > };
> > @@ -533,7 +534,8 @@ usage(void)
> > #endif
> > " -d <device> the device (/dev/cdc-wdmX)\n"
> > 
> > " -t <transaction> the transaction id\n"
> > 
> > - " -n no close\n\n"
> > + " -n no close\n"
> > + " -T MBIM message timeout in seconds [15]\n\n"
> 
> Shouldn't the usage indicate explicitly that it takes a parameter, as do -d and -t?
> 
>    " -T <seconds>    MBIM message timeout...
Yes, makes sense.
> 
> > " -v verbose\n\n");
> > return 1;
> > }
> > @@ -548,7 +550,7 @@ main(int argc, char **argv)
> > int proxy = 0;
> > #endif
> > 
> > - while ((ch = getopt(argc, argv, "pnvd:t:")) != -1) {
> > + while ((ch = getopt(argc, argv, "pnvd:t:T:")) != -1) {
> > switch (ch) {
> > case 'v':
> > verbose = 1;
> > @@ -563,6 +565,9 @@ main(int argc, char **argv)
> > no_open = 1;
> > transaction_id = atoi(optarg);
> > break;
> > + case 'T':
> > + msg_timeout_ms = atoi(optarg) * 1000;
> > + break;
> > #ifdef LIBQMI_MBIM_PROXY
> > case 'p':
> > proxy = 1;
> > diff --git a/mbim-dev.c b/mbim-dev.c
> > index 2a94d49..12d1189 100644
> > --- a/mbim-dev.c
> > +++ b/mbim-dev.c
> > @@ -78,7 +78,7 @@ mbim_send(void)
> > perror("writing data failed: ");
> > } else {
> > expected = le32toh(hdr->type) | 0x80000000;
> > 
> > - uloop_timeout_set(&tout, 15000);
> > + uloop_timeout_set(&tout, msg_timeout_ms);
> > }
> > return ret;
> > }
> > diff --git a/mbim.h b/mbim.h
> > index 746257e..28999b5 100644
> > --- a/mbim.h
> > +++ b/mbim.h
> > @@ -20,6 +20,7 @@
> > 
> > extern int return_code;
> > extern int verbose;
> > +extern int msg_timeout_ms;
> > 
> > #include "mbim-type.h"
> > #include "mbim-enum.h"
> > --
> > 2.40.1
> 
>
diff mbox series

Patch

diff --git a/cli.c b/cli.c
index 3a845d4..b23fc6d 100644
--- a/cli.c
+++ b/cli.c
@@ -35,6 +35,7 @@ 
 
 int return_code = -1;
 int verbose;
+int msg_timeout_ms = 15 * 1000;
 
 struct mbim_handler *current_handler;
 static uint8_t uuid_context_type_internet[16] = { 0x7E, 0x5E, 0x2A, 0x7E, 0x4E, 0x6F, 0x72, 0x72, 0x73, 0x6B, 0x65, 0x6E, 0x7E, 0x5E, 0x2A, 0x7E };
@@ -533,7 +534,8 @@  usage(void)
 #endif
 		"    -d <device>	the device (/dev/cdc-wdmX)\n"
 		"    -t <transaction>	the transaction id\n"
-		"    -n 		no close\n\n"
+		"    -n 		no close\n"
+		"    -T 		MBIM message timeout in seconds [15]\n\n"
 		"    -v 		verbose\n\n");
 	return 1;
 }
@@ -548,7 +550,7 @@  main(int argc, char **argv)
 	int proxy = 0;
 #endif
 
-	while ((ch = getopt(argc, argv, "pnvd:t:")) != -1) {
+	while ((ch = getopt(argc, argv, "pnvd:t:T:")) != -1) {
 		switch (ch) {
 		case 'v':
 			verbose = 1;
@@ -563,6 +565,9 @@  main(int argc, char **argv)
 			no_open = 1;
 			transaction_id = atoi(optarg);
 			break;
+		case 'T':
+			msg_timeout_ms = atoi(optarg) * 1000;
+			break;
 #ifdef LIBQMI_MBIM_PROXY
 		case 'p':
 			proxy = 1;
diff --git a/mbim-dev.c b/mbim-dev.c
index 2a94d49..12d1189 100644
--- a/mbim-dev.c
+++ b/mbim-dev.c
@@ -78,7 +78,7 @@  mbim_send(void)
 		perror("writing data failed: ");
 	} else {
 		expected = le32toh(hdr->type) | 0x80000000;
-		uloop_timeout_set(&tout, 15000);
+		uloop_timeout_set(&tout, msg_timeout_ms);
 	}
 	return ret;
 }
diff --git a/mbim.h b/mbim.h
index 746257e..28999b5 100644
--- a/mbim.h
+++ b/mbim.h
@@ -20,6 +20,7 @@ 
 
 extern int return_code;
 extern int verbose;
+extern int msg_timeout_ms;
 
 #include "mbim-type.h"
 #include "mbim-enum.h"