Bug 9923

Summary: Unable conect to internet over ISDN AVM USB BlueFritz
Product: Networking Reporter: Mirko Vasilic (vasko)
Component: OtherAssignee: Arnaldo Carvalho de Melo (acme)
Status: RESOLVED CODE_FIX    
Severity: normal CC: pebolle
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 2.6.24 Subsystem:
Regression: --- Bisected commit-id:

Description Mirko Vasilic 2008-02-09 03:36:26 UTC
Latest working kernel version:2.6.22
Earliest failing kernel version:2.24
Distribution:opensuse 10.3
Hardware Environment:AVM BlueFritz USB ISDN
Software Environment:
Problem Description:
ifup ippp0
    ippp0
SIOCSIFFLAGS: Invalid argument
Cannot enable interface ippp0

Steps to reproduce:
Feb  9 11:20:54 linux-zhr0 klogd: ippp0: dialing 1 019193383... 
Feb  9 11:20:56 linux-zhr0 klogd: isdn_net: ippp0 connected
Feb  9 11:20:56 linux-zhr0 klogd: capidrv-1: chan 0 up with ncci 0x10101
Feb  9 11:20:56 linux-zhr0 ipppd[5624]: Local number: 906138, Remote number: 019193383, Type: outgoing
Feb  9 11:20:56 linux-zhr0 ipppd[5624]: PHASE_WAIT -> PHASE_ESTABLISHED, ifunit: 0, linkunit: 0, fd: 7
Feb  9 11:20:56 linux-zhr0 ipppd[5624]: ioctl(SIOCSIFMTU): Invalid argument, 6 ippp0 1524.
Feb  9 11:20:56 linux-zhr0 ipppd[5624]: MPPP negotiation, He: Yes We: Yes
Feb  9 11:20:56 linux-zhr0 ipppd[5624]: CCP enabled! Trying CCP.
Feb  9 11:20:56 linux-zhr0 ipppd[5624]: CCP: got ccp-unit 0 for link 0 (Compression Control Protocol)
Feb  9 11:20:56 linux-zhr0 ipppd[5624]: ccp_resetci!
Feb  9 11:20:56 linux-zhr0 ipppd[5624]: ccp_resetci!
Feb  9 11:20:58 linux-zhr0 klogd: Received CCP frame from peer slot(0)
Feb  9 11:20:58 linux-zhr0 klogd: [0/0].ccp-rcv[0]: 01 01 00 09 11 05 00 01 04 
Feb  9 11:20:58 linux-zhr0 klogd: Received CCP frame from daemon:
Feb  9 11:20:58 linux-zhr0 klogd: [0/0].ccp-xmit[0]: ff 03 80 fd 01 01 00 04 
Feb  9 11:20:58 linux-zhr0 klogd: Received CCP frame from daemon:
Feb  9 11:20:58 linux-zhr0 klogd: [0/0].ccp-xmit[0]: ff 03 80 fd 04 01 00 09 11 05 00 01 04 
Feb  9 11:20:58 linux-zhr0 klogd: Received CCP frame from peer slot(0)
Feb  9 11:20:58 linux-zhr0 klogd: [0/0].ccp-rcv[0]: 04 01 00 04 
Feb  9 11:20:58 linux-zhr0 ipppd[5624]: ccp_resetci!
Feb  9 11:20:58 linux-zhr0 klogd: Received CCP frame from peer slot(0)
Feb  9 11:20:58 linux-zhr0 klogd: [0/0].ccp-rcv[0]: 01 02 00 0a 11 06 00 01 01 03 
Feb  9 11:20:58 linux-zhr0 klogd: Received CCP frame from daemon:
Feb  9 11:20:58 linux-zhr0 klogd: [0/0].ccp-xmit[0]: ff 03 80 fd 01 02 00 04 
Feb  9 11:20:58 linux-zhr0 klogd: Received CCP frame from daemon:
Feb  9 11:20:58 linux-zhr0 klogd: [0/0].ccp-xmit[0]: ff 03 80 fd 04 02 00 0a 11 06 00 01 01 03 
Feb  9 11:20:58 linux-zhr0 klogd: Received CCP frame from peer slot(0)
Feb  9 11:20:58 linux-zhr0 klogd: [0/0].ccp-rcv[0]: 04 02 00 04 
Feb  9 11:20:59 linux-zhr0 ipppd[5624]: local  IP address 149.225.68.4
Feb  9 11:20:59 linux-zhr0 ipppd[5624]: remote IP address 139.4.250.4
Feb  9 11:20:59 linux-zhr0 ipppd[5624]: Ifup: ioctl(SIOCSIFFLAGS): Invalid argument
Feb  9 11:20:59 linux-zhr0 ip-down: SIOCSIFFLAGS: Invalid argument
Comment 1 Anonymous Emailer 2008-02-09 10:16:04 UTC
Reply-To: akpm@linux-foundation.org

On Sat,  9 Feb 2008 03:36:26 -0800 (PST) bugme-daemon@bugzilla.kernel.org wrote:

> http://bugzilla.kernel.org/show_bug.cgi?id=9923
> 
>            Summary: Unable conect to internet over ISDN AVM USB BlueFritz
>            Product: Networking
>            Version: 2.5
>      KernelVersion: 2.6.24
>           Platform: All
>         OS/Version: Linux
>               Tree: Mainline
>             Status: NEW
>           Severity: normal
>           Priority: P1
>          Component: Other
>         AssignedTo: acme@ghostprotocols.net
>         ReportedBy: vasko@arcor.de
> 
> 
> Latest working kernel version:2.6.22
> Earliest failing kernel version:2.24

A regression.

> Distribution:opensuse 10.3
> Hardware Environment:AVM BlueFritz USB ISDN
> Software Environment:
> Problem Description:
> ifup ippp0
>     ippp0
> SIOCSIFFLAGS: Invalid argument
> Cannot enable interface ippp0
> 
> Steps to reproduce:
> Feb  9 11:20:54 linux-zhr0 klogd: ippp0: dialing 1 019193383... 
> Feb  9 11:20:56 linux-zhr0 klogd: isdn_net: ippp0 connected
> Feb  9 11:20:56 linux-zhr0 klogd: capidrv-1: chan 0 up with ncci 0x10101
> Feb  9 11:20:56 linux-zhr0 ipppd[5624]: Local number: 906138, Remote number:
> 019193383, Type: outgoing
> Feb  9 11:20:56 linux-zhr0 ipppd[5624]: PHASE_WAIT -> PHASE_ESTABLISHED,
> ifunit: 0, linkunit: 0, fd: 7
> Feb  9 11:20:56 linux-zhr0 ipppd[5624]: ioctl(SIOCSIFMTU): Invalid argument,
> 6
> ippp0 1524.
> Feb  9 11:20:56 linux-zhr0 ipppd[5624]: MPPP negotiation, He: Yes We: Yes
> Feb  9 11:20:56 linux-zhr0 ipppd[5624]: CCP enabled! Trying CCP.
> Feb  9 11:20:56 linux-zhr0 ipppd[5624]: CCP: got ccp-unit 0 for link 0
> (Compression Control Protocol)
> Feb  9 11:20:56 linux-zhr0 ipppd[5624]: ccp_resetci!
> Feb  9 11:20:56 linux-zhr0 ipppd[5624]: ccp_resetci!
> Feb  9 11:20:58 linux-zhr0 klogd: Received CCP frame from peer slot(0)
> Feb  9 11:20:58 linux-zhr0 klogd: [0/0].ccp-rcv[0]: 01 01 00 09 11 05 00 01
> 04 
> Feb  9 11:20:58 linux-zhr0 klogd: Received CCP frame from daemon:
> Feb  9 11:20:58 linux-zhr0 klogd: [0/0].ccp-xmit[0]: ff 03 80 fd 01 01 00 04 
> Feb  9 11:20:58 linux-zhr0 klogd: Received CCP frame from daemon:
> Feb  9 11:20:58 linux-zhr0 klogd: [0/0].ccp-xmit[0]: ff 03 80 fd 04 01 00 09
> 11
> 05 00 01 04 
> Feb  9 11:20:58 linux-zhr0 klogd: Received CCP frame from peer slot(0)
> Feb  9 11:20:58 linux-zhr0 klogd: [0/0].ccp-rcv[0]: 04 01 00 04 
> Feb  9 11:20:58 linux-zhr0 ipppd[5624]: ccp_resetci!
> Feb  9 11:20:58 linux-zhr0 klogd: Received CCP frame from peer slot(0)
> Feb  9 11:20:58 linux-zhr0 klogd: [0/0].ccp-rcv[0]: 01 02 00 0a 11 06 00 01
> 01
> 03 
> Feb  9 11:20:58 linux-zhr0 klogd: Received CCP frame from daemon:
> Feb  9 11:20:58 linux-zhr0 klogd: [0/0].ccp-xmit[0]: ff 03 80 fd 01 02 00 04 
> Feb  9 11:20:58 linux-zhr0 klogd: Received CCP frame from daemon:
> Feb  9 11:20:58 linux-zhr0 klogd: [0/0].ccp-xmit[0]: ff 03 80 fd 04 02 00 0a
> 11
> 06 00 01 01 03 
> Feb  9 11:20:58 linux-zhr0 klogd: Received CCP frame from peer slot(0)
> Feb  9 11:20:58 linux-zhr0 klogd: [0/0].ccp-rcv[0]: 04 02 00 04 
> Feb  9 11:20:59 linux-zhr0 ipppd[5624]: local  IP address 149.225.68.4
> Feb  9 11:20:59 linux-zhr0 ipppd[5624]: remote IP address 139.4.250.4
> Feb  9 11:20:59 linux-zhr0 ipppd[5624]: Ifup: ioctl(SIOCSIFFLAGS): Invalid
> argument
> Feb  9 11:20:59 linux-zhr0 ip-down: SIOCSIFFLAGS: Invalid argument
> 
Comment 2 Paul Bolle 2008-04-07 04:44:49 UTC
Some additional data (re. Fedora 8):
- Latest working kernel version: kernel-2.6.23.15-137.fc8
- Earliest failing kernel version: kernel-2.6.24.3-12.fc8 
- Hardware Environment: Gigaset M105 USB DECT (module: usb_gigaset, so ISDN over USB too).
Comment 3 Paul Bolle 2008-04-10 06:50:17 UTC
0) I've bisected this until I got it down to (about) 37 revisions. My bisect log is:

# bad: [49914084e797530d9baaf51df9eda77babc98fa8] Linux 2.6.24
git-bisect start 'v2.6.24'
# good: [bbf25010f1a6b761914430f5fca081ec8c7accd1] Linux 2.6.23
git-bisect good bbf25010f1a6b761914430f5fca081ec8c7accd1
# good: [fe071d7e8aae5745c009c808bb8933f22a9e305a] oom: add oom_kill_allocating_task sysctl
git-bisect good fe071d7e8aae5745c009c808bb8933f22a9e305a
# bad: [a7e1e001f432d5960b929787a2a261cf5a7ddac5] Merge branch 'v2.6.24-rc1-lockdep' of git://git.kernel.org/pub/scm/linux/kernel/git/peterz/linux-2.6-lockdep
git-bisect bad a7e1e001f432d5960b929787a2a261cf5a7ddac5
# good: [b3d9d6be035a7d1cc6740cee695301bf37caedcd] Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev
git-bisect good b3d9d6be035a7d1cc6740cee695301bf37caedcd
# good: [d8581969904b8a72db726c4b9090234c0f0bb18f] Merge branch 'warnings' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/misc-2.6
git-bisect good d8581969904b8a72db726c4b9090234c0f0bb18f
# bad: [db8185360d91c01f6e482db5ee402c0ad90dec52] Merge git://git.kernel.org/pub/scm/linux/kernel/git/mingo/linux-2.6-sched
git-bisect bad db8185360d91c01f6e482db5ee402c0ad90dec52
# bad: [0e0940d4bb9b19c0a45c844a83e1d25686aaf433] [IPSEC]: Fix scatterlist handling in skb_icv_walk().
git-bisect bad 0e0940d4bb9b19c0a45c844a83e1d25686aaf433
# good: [7f1495745347bc2cb9cc4f50d0a889caeb71f1f1] Merge branch 'sg' of git://git.kernel.dk/linux-2.6-block
git-bisect good 7f1495745347bc2cb9cc4f50d0a889caeb71f1f1

1) By that time this commit started to become suspicious:
bada339ba24dee9e143bfb42e1dc61f146619846 [NET]: Validate device addr prior to interface-up

2) That made me try this (one-line) patch:
diff -up linux-2.6.24.i686/drivers/isdn/i4l/isdn_net.c.addr linux-2.6.24.i686/drivers/isdn/i4l/isdn_net.c
--- linux-2.6.24.i686/drivers/isdn/i4l/isdn_net.c.addr  2008-01-24 23:58:37.000000000 +0100
+++ linux-2.6.24.i686/drivers/isdn/i4l/isdn_net.c       2008-04-10 12:38:43.000000000 +0200
@@ -2010,6 +2010,7 @@ isdn_net_init(struct net_device *ndev)
        ndev->flags = IFF_NOARP|IFF_POINTOPOINT;
        ndev->type = ARPHRD_ETHER;
        ndev->addr_len = ETH_ALEN;
+       ndev->validate_addr = NULL;
 
        /* for clients with MPPP maybe higher values better */
        ndev->tx_queue_len = 30;

This patch fixed this bug for me.

3) I plan to send a proper patch to the ISDN subsystem maintainers and the Networking maintainers shortly.
Comment 4 Paul Bolle 2008-04-14 00:02:26 UTC
0) A patch is commited to David Miller's 2.6.x networking tree (d2dcba6, see: http://git.kernel.org/?p=linux/kernel/git/davem/net-2.6.git;a=commitdiff;h=d2dcba612b357a4687843ad4f46629d219233fd7). I guess this patch will eventually end up in Linus' 2.6 tree.

1) I'd say this patch should also end up in the 2.6.24 and/or 2.6.25 stable tree (or aren't they meant for regressions?)

2) Can the reporter connect with his ISDN AVM USB BlueFritz with this patch? (The "ioctl(SIOCSIFMTU): Invalid argument, 6 ippp0 1524" warning might still be a problem. It didn't show up in my logs. I haven't looked at it.)
Comment 5 Paul Bolle 2008-04-16 01:52:07 UTC
0) The patch is committed to Linus' tree, see: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d2dcba612b357a4687843ad4f46629d219233fd7

1) The reporter mailed me he couldn't test the patch (because he doesn't use ISDN anymore).

2) I guess this bug can be set to (something like) CLOSED/FIXED (which I'm not allowed to do).
Comment 6 Eric Companie 2008-05-18 09:17:01 UTC
The patch works!

I found your post after hours of research on the web, at 2am. Many of us unfortunate users of ISDN - I mean without a DSL line - must be desperate.
But you found the cure. I can definitely confirm that your patch works since I'm using my ISDN connection right now to type this message.

Here is a summary of my configuration:
2.6.24-16-generic (ubuntu 8.04)
hisax type=35 protocol=2
Network controller: Cologne Chip Designs GmbH ISDN network controller [HFC-PCI] (rev 02)

I downloaded the kernel sources, edited isdn_net.c and added the missing line of code exactly like you said after line 2012:

       ndev->validate_addr = NULL;

I copied my kernel configuration in /usr/src/linux-source-2.6.24 with cp /boot/config-$(uname -r) .config then I recompiled all the modules with make modules - make modules M=drivers/isdn/i4l could be enough - and copied (after I saved it elsewhere) isdn.ko in /lib/modules/$(uname -r)/kernel/drivers/isdn/i4l.

Once I rebooted the system, typing /etc/init.d/isdntutils start and isdnctrl dial ippp0 is all I needed to get on the web.

If I try to turn off Kernel hacking->Kernel debugging and Kernel hacking->Compile the kernel with debug info with make menuconfig, modprobe isdn works but modprobe hisax fails. What is the proper way to reduce the size of isdn.ko?

Thanks for your support!