Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src Add a port of the umb(4) driver from OpenBSD



details:   https://anonhg.NetBSD.org/src/rev/9ef51cd2ff16
branches:  trunk
changeset: 365088:9ef51cd2ff16
user:      khorben <khorben%NetBSD.org@localhost>
date:      Tue Jul 31 16:44:28 2018 +0000

description:
Add a port of the umb(4) driver from OpenBSD

The umb(4) driver provides support for USB MBIM (Mobile Broadband
Interface Model) devices.

MBIM devices establish connections via cellular networks such as GPRS,
UMTS, and LTE. They appear as a regular point-to-point network interface, transporting raw IP frames.

Required configuration parameters like PIN and APN have to be set with
umbctl(8), a new tool specific to this driver. The IP address is configured
automatically; the default route and DNS server information have to be set
separately.

The driver is not fully functional yet, it is therefore still marked as
experimental and disabled by default. Any help welcome to complete it!

Tested on NetBSD/amd64, with a Sierra Wireless EM7345 LTE modem on a Lenovo
ThinkPad T440s. No functional change expected otherwise.

diffstat:

 distrib/sets/lists/base/mi        |     3 +-
 distrib/sets/lists/base/rescue.mi |     3 +-
 distrib/sets/lists/comp/mi        |     4 +-
 distrib/sets/lists/debug/mi       |     3 +-
 distrib/sets/lists/man/mi         |     8 +-
 rescue/list                       |     3 +-
 sbin/Makefile                     |     4 +-
 sbin/umbctl/Makefile              |     6 +
 sbin/umbctl/umbctl.8              |   165 ++
 sbin/umbctl/umbctl.c              |   482 ++++++
 share/man/man4/Makefile           |     4 +-
 share/man/man4/umb.4              |    91 +
 sys/arch/amd64/conf/GENERIC       |     5 +-
 sys/arch/i386/conf/GENERIC        |     5 +-
 sys/dev/usb/Makefile              |     4 +-
 sys/dev/usb/files.usb             |     7 +-
 sys/dev/usb/if_umb.c              |  2889 +++++++++++++++++++++++++++++++++++++
 sys/dev/usb/if_umbreg.h           |   407 +++++
 sys/dev/usb/mbim.h                |   697 ++++++++
 sys/dev/usb/usb.h                 |    23 +-
 sys/dev/usb/usbdi.c               |    35 +-
 sys/dev/usb/usbdi.h               |     4 +-
 sys/net/if_types.h                |     3 +-
 sys/sys/sockio.h                  |     6 +-
 24 files changed, 4830 insertions(+), 31 deletions(-)

diffs (truncated from 5204 to 300 lines):

diff -r 1ba91b6ae85c -r 9ef51cd2ff16 distrib/sets/lists/base/mi
--- a/distrib/sets/lists/base/mi        Tue Jul 31 16:28:56 2018 +0000
+++ b/distrib/sets/lists/base/mi        Tue Jul 31 16:44:28 2018 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.1181 2018/07/24 15:29:05 christos Exp $
+# $NetBSD: mi,v 1.1182 2018/07/31 16:44:28 khorben Exp $
 #
 # Note:        Don't delete entries from here - mark them as "obsolete" instead,
 #      unless otherwise stated below.
@@ -616,6 +616,7 @@
 ./sbin/tbrconfig                               base-router-root
 ./sbin/ttyflags                                        base-sysutil-root
 ./sbin/tunefs                                  base-sysutil-root
+./sbin/umbctl                                  base-netutil-root
 ./sbin/umount                                  base-sysutil-root
 ./sbin/veriexecctl                             base-sysutil-root
 ./sbin/verifiedexec_load                       base-obsolete           obsolete
diff -r 1ba91b6ae85c -r 9ef51cd2ff16 distrib/sets/lists/base/rescue.mi
--- a/distrib/sets/lists/base/rescue.mi Tue Jul 31 16:28:56 2018 +0000
+++ b/distrib/sets/lists/base/rescue.mi Tue Jul 31 16:44:28 2018 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: rescue.mi,v 1.41 2018/04/11 00:26:38 rin Exp $
+# $NetBSD: rescue.mi,v 1.42 2018/07/31 16:44:28 khorben Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -152,6 +152,7 @@
 ./rescue/tetris                                        base-rescue-root
 ./rescue/ttyflags                              base-rescue-root
 ./rescue/tunefs                                        base-rescue-root
+./rescue/umbctl                                        base-rescue-root
 ./rescue/umount                                        base-rescue-root
 ./rescue/veriexecctl                           base-rescue-root
 ./rescue/vi                                    base-rescue-root
diff -r 1ba91b6ae85c -r 9ef51cd2ff16 distrib/sets/lists/comp/mi
--- a/distrib/sets/lists/comp/mi        Tue Jul 31 16:28:56 2018 +0000
+++ b/distrib/sets/lists/comp/mi        Tue Jul 31 16:44:28 2018 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: mi,v 1.2213 2018/07/31 13:04:10 rjs Exp $
+#      $NetBSD: mi,v 1.2214 2018/07/31 16:44:28 khorben Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 ./etc/mtree/set.comp                           comp-sys-root
@@ -736,6 +736,8 @@
 ./usr/include/dev/tc/tcdsvar.h                 comp-obsolete           obsolete
 ./usr/include/dev/tc/tcreg.h                   comp-obsolete           obsolete
 ./usr/include/dev/tc/tcvar.h                   comp-obsolete           obsolete
+./usr/include/dev/usb/if_umbreg.h              comp-c-include
+./usr/include/dev/usb/mbim.h                   comp-c-include
 ./usr/include/dev/usb/ukyopon.h                        comp-c-include
 ./usr/include/dev/usb/urio.h                   comp-c-include
 ./usr/include/dev/usb/usb.h                    comp-c-include
diff -r 1ba91b6ae85c -r 9ef51cd2ff16 distrib/sets/lists/debug/mi
--- a/distrib/sets/lists/debug/mi       Tue Jul 31 16:28:56 2018 +0000
+++ b/distrib/sets/lists/debug/mi       Tue Jul 31 16:44:28 2018 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.258 2018/07/24 15:29:05 christos Exp $
+# $NetBSD: mi,v 1.259 2018/07/31 16:44:29 khorben Exp $
 ./etc/mtree/set.debug                           comp-sys-root
 ./usr/lib                                      comp-sys-usr            compatdir
 ./usr/lib/i18n/libBIG5_g.a                     comp-c-debuglib         debuglib,compatfile
@@ -430,6 +430,7 @@
 ./usr/libdata/debug/sbin/tbrconfig.debug       comp-router-debug       debug
 ./usr/libdata/debug/sbin/ttyflags.debug                comp-sysutil-debug      debug
 ./usr/libdata/debug/sbin/tunefs.debug          comp-sysutil-debug      debug
+./usr/libdata/debug/sbin/umbctl.debug          comp-netutil-debug      debug
 ./usr/libdata/debug/sbin/umount.debug          comp-sysutil-debug      debug
 ./usr/libdata/debug/sbin/veriexecctl.debug     comp-sysutil-debug      debug
 ./usr/libdata/debug/sbin/wdogctl.debug         comp-sysutil-debug      debug
diff -r 1ba91b6ae85c -r 9ef51cd2ff16 distrib/sets/lists/man/mi
--- a/distrib/sets/lists/man/mi Tue Jul 31 16:28:56 2018 +0000
+++ b/distrib/sets/lists/man/mi Tue Jul 31 16:44:28 2018 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.1602 2018/07/27 12:02:26 rkujawa Exp $
+# $NetBSD: mi,v 1.1603 2018/07/31 16:44:29 khorben Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -1866,6 +1866,7 @@
 ./usr/share/man/cat4/ukyopon.0                 man-sys-catman          .cat
 ./usr/share/man/cat4/ulpt.0                    man-sys-catman          .cat
 ./usr/share/man/cat4/umass.0                   man-sys-catman          .cat
+./usr/share/man/cat4/umb.0                     man-sys-catman          .cat
 ./usr/share/man/cat4/umcs.0                    man-sys-catman          .cat
 ./usr/share/man/cat4/umct.0                    man-sys-catman          .cat
 ./usr/share/man/cat4/umidi.0                   man-sys-catman          .cat
@@ -3152,6 +3153,7 @@
 ./usr/share/man/cat8/trsp.0                    man-obsolete            obsolete
 ./usr/share/man/cat8/ttyflags.0                        man-sysutil-catman      .cat
 ./usr/share/man/cat8/tunefs.0                  man-sysutil-catman      .cat
+./usr/share/man/cat8/umbctl.0                  man-isdn-catman         .cat
 ./usr/share/man/cat8/umount.0                  man-sysutil-catman      .cat
 ./usr/share/man/cat8/unbound-anchor.0          man-netutil-catman      .cat,unbound
 ./usr/share/man/cat8/unbound-checkconf.0       man-netutil-catman      .cat,unbound
@@ -4937,6 +4939,7 @@
 ./usr/share/man/html4/ukyopon.html             man-sys-htmlman         html
 ./usr/share/man/html4/ulpt.html                        man-sys-htmlman         html
 ./usr/share/man/html4/umass.html               man-sys-htmlman         html
+./usr/share/man/html4/umb.html                 man-sys-htmlman         html
 ./usr/share/man/html4/umcs.html                        man-sys-htmlman         html
 ./usr/share/man/html4/umct.html                        man-sys-htmlman         html
 ./usr/share/man/html4/umidi.html               man-sys-htmlman         html
@@ -6010,6 +6013,7 @@
 ./usr/share/man/html8/trpt.html                        man-netutil-htmlman     html
 ./usr/share/man/html8/ttyflags.html            man-sysutil-htmlman     html
 ./usr/share/man/html8/tunefs.html              man-sysutil-htmlman     html
+./usr/share/man/html8/umbctl.html              man-isdn-htmlman        html
 ./usr/share/man/html8/umount.html              man-sysutil-htmlman     html
 ./usr/share/man/html8/unbound-anchor.html      man-netutil-htmlman     html,unbound
 ./usr/share/man/html8/unbound-checkconf.html   man-netutil-htmlman     html,unbound
@@ -7932,6 +7936,7 @@
 ./usr/share/man/man4/ukyopon.4                 man-sys-man             .man
 ./usr/share/man/man4/ulpt.4                    man-sys-man             .man
 ./usr/share/man/man4/umass.4                   man-sys-man             .man
+./usr/share/man/man4/umb.4                     man-sys-man             .man
 ./usr/share/man/man4/umcs.4                    man-sys-man             .man
 ./usr/share/man/man4/umct.4                    man-sys-man             .man
 ./usr/share/man/man4/umidi.4                   man-sys-man             .man
@@ -9215,6 +9220,7 @@
 ./usr/share/man/man8/trsp.8                    man-obsolete            obsolete
 ./usr/share/man/man8/ttyflags.8                        man-sysutil-man         .man
 ./usr/share/man/man8/tunefs.8                  man-sysutil-man         .man
+./usr/share/man/man8/umbctl.8                  man-isdn-man            .man
 ./usr/share/man/man8/umount.8                  man-sysutil-man         .man
 ./usr/share/man/man8/unbound-anchor.8          man-netutil-man         .man,unbound
 ./usr/share/man/man8/unbound-checkconf.8       man-netutil-man         .man,unbound
diff -r 1ba91b6ae85c -r 9ef51cd2ff16 rescue/list
--- a/rescue/list       Tue Jul 31 16:28:56 2018 +0000
+++ b/rescue/list       Tue Jul 31 16:44:28 2018 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: list,v 1.49 2018/04/11 00:26:38 rin Exp $
+#      $NetBSD: list,v 1.50 2018/07/31 16:44:29 khorben Exp $
 
 SRCDIRS        bin
 
@@ -114,6 +114,7 @@
 PROG   sysctl
 PROG   ttyflags
 PROG   tunefs
+PROG   umbctl
 PROG   umount
 PROG   wdogctl
 PROG   veriexecctl
diff -r 1ba91b6ae85c -r 9ef51cd2ff16 sbin/Makefile
--- a/sbin/Makefile     Tue Jul 31 16:28:56 2018 +0000
+++ b/sbin/Makefile     Tue Jul 31 16:44:28 2018 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: Makefile,v 1.132 2018/01/14 22:44:04 christos Exp $
+#      $NetBSD: Makefile,v 1.133 2018/07/31 16:44:29 khorben Exp $
 #      @(#)Makefile    8.5 (Berkeley) 3/31/94
 
 # Not ported: XNSrouted enpload scsiformat startslip
@@ -14,7 +14,7 @@
        newbtconf nologin nvmectl \
        ping pppoectl raidctl reboot rcorder rndctl route routed \
        savecore scan_ffs scsictl shutdown slattach svhlabel swapctl sysctl \
-       ttyflags umount veriexecctl wdogctl wsconsctl
+       ttyflags umbctl umount veriexecctl wdogctl wsconsctl
 
 # support for various file systems
 SUBDIR+= newfs_ext2fs fsck_ext2fs
diff -r 1ba91b6ae85c -r 9ef51cd2ff16 sbin/umbctl/Makefile
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sbin/umbctl/Makefile      Tue Jul 31 16:44:28 2018 +0000
@@ -0,0 +1,6 @@
+#      $NetBSD: Makefile,v 1.1 2018/07/31 16:44:29 khorben Exp $
+
+PROG=  umbctl
+MAN=   umbctl.8
+
+.include <bsd.prog.mk>
diff -r 1ba91b6ae85c -r 9ef51cd2ff16 sbin/umbctl/umbctl.8
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sbin/umbctl/umbctl.8      Tue Jul 31 16:44:28 2018 +0000
@@ -0,0 +1,165 @@
+.\"    $NetBSD: umbctl.8,v 1.1 2018/07/31 16:44:29 khorben Exp $
+.\"
+.\" Copyright (c) 2018 by Pierre Pronchery <khorben%defora.org@localhost>
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in the
+.\"    documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS
+.\" OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+.\" DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT,
+.\" INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+.\" (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+.\" SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+.\" STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+.\" IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+.\" POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" From: pppoectl.8,v 1.30 2016/09/12 05:35:20 sevan Exp $
+.\"
+.\" $Id: umbctl.8,v 1.1 2018/07/31 16:44:29 khorben Exp $
+.\"
+.\" last edit-date: [Thu Aug 31 10:47:33 2000]
+.\"
+.Dd July 24, 2018
+.Dt UMBCTL 8
+.Os
+.Sh NAME
+.Nm umbctl
+.Nd "display or set parameters for a MBIM interface (4G/LTE)"
+.Sh SYNOPSIS
+.Nm umbctl
+.Op Fl v
+.Ar ifname
+.Op Ar parameter Ns Op \&= Ns Ar value
+.Op Ar ...
+.Pp
+.Nm umbctl
+.Op Fl v
+.Op Fl f Ar config-file
+.Ar ifname
+.Op Ar parameter Ns Op \&= Ns Ar value
+.Op Ar ...
+.Pp
+.Sh DESCRIPTION
+.Bl -tag -width indent
+.It Fl v
+enables verbose mode.
+.It Fl f
+parse
+.Ar config-file
+for
+.Ar parameter Ns Op \&= Ns Ar value
+pairs, one per line, as if they had been specified on the command line.
+This allows the password or PIN codes to be not passed as command line
+arguments.
+Comments starting with # to the end of the current line are ignored.
+.El
+.Pp
+The
+.Xr umb 4
+driver may require a number of additional arguments or optional
+parameters besides the settings that can be adjusted with
+.Xr ifconfig 8 .
+These may be credentials or other tunable connectivity variables.
+The
+.Nm
+utility can be used to display the current settings, or adjust these
+parameters as required.
+.Pp
+For whatever intent
+.Nm
+is being called, at least the parameter
+.Ar ifname
+needs to be specified, naming the interface for which the settings
+are to be performed or displayed.
+Use
+.Xr ifconfig 8
+or
+.Xr netstat 1
+to see which interfaces are available.
+.Pp
+If no other parameter is given,
+.Nm
+will just list the current status for
+.Ar ifname
+and exit.
+.Pp
+If any additional parameter is supplied, superuser privileges are
+required, and the command works in
+.Ql set
+mode.
+This is normally done quietly, unless the option
+.Fl v
+is also enabled, which will cause a final printout of the status as
+described above once all other actions have been taken.
+.Pp
+The parameters currently supported include:
+.Bl -tag -width xxxxxxxxxxxxxxxxxxxxxxxxx
+.It Ar apn Ns \&= Ns Em access-point
+Set the APN to
+.Em access-point .
+.It Ar username Ns \&= Ns Em username
+Set the username to
+.Em username .
+.It Ar password Ns \&= Ns Em password
+Set the password to
+.Em password .
+.It Ar pin Ns \&= Ns Em pin-code
+Enter the PIN
+.Em pin-code .
+.It Ar puk Ns \&= Ns Em puk-code
+Enter the PUK
+.Em puk-code .
+.It Ar roaming
+Allow data connections when roaming.
+.It Ar -roaming



Home | Main Index | Thread Index | Old Index