summaryrefslogtreecommitdiffstats
path: root/drivers/net/wwan/wwan_core.c
diff options
context:
space:
mode:
authorSergey Ryazanov <ryazanov.s.a@gmail.com>2021-06-08 07:02:38 +0300
committerDavid S. Miller <davem@davemloft.net>2021-06-08 14:33:43 -0700
commit72eedfc4bbc7480ea8fb38d5aebb57eafc03c8d5 (patch)
tree519b8bf63c9ab3a69dbf386e057ba1c0fd94ab22 /drivers/net/wwan/wwan_core.c
parentf458709ff40b0d992fec496952f79c7820dd3fde (diff)
downloadlinux-72eedfc4bbc7480ea8fb38d5aebb57eafc03c8d5.tar.bz2
net: wwan: core: expand ports number limit
Currently, we limit the total ports number to 256. It is quite common for PBX or SMS gateway to be equipped with a lot of modems. In now days, a modem could have 2-4 control ports or even more, what only accelerates the ports exhausing rate. To avoid facing the port number limitation issue reports, increase the limit up the maximum number of minors (i.e. up to 1 << MINORBITS). Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com> Reviewed-by: Loic Poulain <loic.poulain@linaro.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/wwan/wwan_core.c')
-rw-r--r--drivers/net/wwan/wwan_core.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/net/wwan/wwan_core.c b/drivers/net/wwan/wwan_core.c
index 2844b17a724c..9346b2661eb3 100644
--- a/drivers/net/wwan/wwan_core.c
+++ b/drivers/net/wwan/wwan_core.c
@@ -14,7 +14,8 @@
#include <linux/types.h>
#include <linux/wwan.h>
-#define WWAN_MAX_MINORS 256 /* 256 minors allowed with register_chrdev() */
+/* Maximum number of minors in use */
+#define WWAN_MAX_MINORS (1 << MINORBITS)
static DEFINE_MUTEX(wwan_register_lock); /* WWAN device create|remove lock */
static DEFINE_IDA(minors); /* minors for WWAN port chardevs */
@@ -634,7 +635,8 @@ static int __init wwan_init(void)
return PTR_ERR(wwan_class);
/* chrdev used for wwan ports */
- wwan_major = register_chrdev(0, "wwan_port", &wwan_port_fops);
+ wwan_major = __register_chrdev(0, 0, WWAN_MAX_MINORS, "wwan_port",
+ &wwan_port_fops);
if (wwan_major < 0) {
class_destroy(wwan_class);
return wwan_major;
@@ -645,7 +647,7 @@ static int __init wwan_init(void)
static void __exit wwan_exit(void)
{
- unregister_chrdev(wwan_major, "wwan_port");
+ __unregister_chrdev(wwan_major, 0, WWAN_MAX_MINORS, "wwan_port");
class_destroy(wwan_class);
}