Unix Technical Forum

SEO

vBulletin Search Engine Optimization


Go Back   Unix Technical Forum > Unix Operating Systems > OpenBSD > mailing.openbsd.tech

Register FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 05-10-2008, 02:01 PM
Kenneth R Westerback
 
Posts: n/a
Default Testing needed: Is your NIC correctly sending routing messages?

It has been discovered that some network drivers are not correctly
sending the routing messages (RTM_IFINFO) expected when link status
changes. These messages are used by dhclient to react properly to
such link status changes, even more so in upcoming diffs.

The diff below, which you are free to test, 'fixes' bge(4).

It would be helpful to discover which drivers are currently
misbehaving, if any other than bge do. Testing your network
card/driver is easy and fun!

As root or via sudo run

route -n monitor

and unplug and plug in your cable. You should see something like:

$ sudo route -n monitor
Password:
got message of size 144 on Fri May 9 09:06:03 2008
RTM_IFINFO: iface status change: len 144, if# 2, link: no carrier,
flags:<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST>
got message of size 144 on Fri May 9 09:06:05 2008
RTM_IFINFO: iface status change: len 144, if# 2, link: active,
flags:<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST>

Some I(many?) cards and drivers can't detect link changes and can't
be fixed easily but if we find drivers that are simply missing
something easy we can make dhclient work better by fixing them.

No need to report success, just cards that don't produce the
messages. Thanks.

..... Ken

Index: if_bge.c
================================================== =================
RCS file: /cvs/src/sys/dev/pci/if_bge.c,v
retrieving revision 1.226
diff -u -p -r1.226 if_bge.c
--- if_bge.c 20 Apr 2008 01:37:35 -0000 1.226
+++ if_bge.c 8 May 2008 16:35:31 -0000
@@ -3582,14 +3582,14 @@ bge_link_upd(struct bge_softc *sc)
timeout_del(&sc->bge_timeout);
bge_tick(sc);

- if (!BGE_STS_BIT(sc, BGE_STS_LINK) &&
+ if (BGE_STS_BIT(sc, BGE_STS_LINK))
+ BGE_STS_CLRBIT(sc, BGE_STS_LINK);
+
+ else if (!BGE_STS_BIT(sc, BGE_STS_LINK) &&
mii->mii_media_status & IFM_ACTIVE &&
- IFM_SUBTYPE(mii->mii_media_active) != IFM_NONE)
+ (IFM_SUBTYPE(mii->mii_media_active) != IFM_NONE) &&
+ (IFM_SUBTYPE(mii->mii_media_active) != (IFM_ETHER|IFM_NONE)))
BGE_STS_SETBIT(sc, BGE_STS_LINK);
- else if (BGE_STS_BIT(sc, BGE_STS_LINK) &&
- (!(mii->mii_media_status & IFM_ACTIVE) ||
- IFM_SUBTYPE(mii->mii_media_active) == IFM_NONE))
- BGE_STS_CLRBIT(sc, BGE_STS_LINK);
}
}

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT. The time now is 04:49 AM.


Powered by vBulletin® Version 3.6.5
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145