Re: Problem found: kaweth fails to work on 2.6.12-rc[456]

From: Oliver Neukum
Date: Sun Jun 12 2005 - 03:00:21 EST


Am Sonntag, 12. Juni 2005 02:41 schrieb Wakko Warner:
> After doing some testing, I believe a patch that went into rc4 broke kaweth.
> The kaweth driver itself did not change from rc2 through rc6.
>
> As a test, I reverted a patch that went into rc4 which modified
> net/core/link_watch.c. Once I compiled the kernel, my netgear EA101 works
> again.
>
> The following is the patch that caused it to stop working:
> --- BEGIN PATCH ---
> diff -urN linux-2.6.12-rc3/net/core/link_watch.c linux-2.6.12-rc4/net/core/link_watch.c
> --- linux-2.6.12-rc3/net/core/link_watch.c 2005-03-01 23:37:30.000000000 -0800
> +++ linux-2.6.12-rc4/net/core/link_watch.c 2005-05-06 22:59:27.439802792 -0700
> @@ -74,6 +75,12 @@
> clear_bit(__LINK_STATE_LINKWATCH_PENDING, &dev->state);
>
> if (dev->flags & IFF_UP) {
> + if (netif_carrier_ok(dev)) {
> + WARN_ON(dev->qdisc_sleeping == &noop_qdisc);
> + dev_activate(dev);
> + } else
> + dev_deactivate(dev);
> +
> netdev_state_change(dev);
> }
>
> --- END PATCH ---
> The above is not cut'n'paste. There was 1 other addition (an include) that
> I removed from the patch inorder to revert it. The patch above was applied
> to 2.6.12-rc6 using -Rp1. This is why I believe that kaweth is broken.
> With my limited understanding of the kernel, it would appear that kaweth
> doesn't support netif_carrier_ok properly.
> Anyway, I found what caused it to break, but at this point, I do not have
> the required knowledge to do a proper fix.

static void int_callback(struct urb *u, struct pt_regs *regs)
is supposed to handle the link state. Maybe it fails in your case. Could you
add a printk to this callback to check linkstate?

Regards
Oliver

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/