| We've tried it, but the address doesn't show as changed. Below is the SDA
output and the code used (in macro). Can anyone see what we're doing wrong as
the QIO returns without error but the physical address stays the same.
Thanks for any ideas,
Steve
$ mcr latcp sho link lat$link
Link Name: LAT$LINK Datalink Address: 08-00-2B-24-FC-FD
Device Name: _FXA109: DECnet Address: Enabled
Link State: Off
$ latadr2:==$fred:latadr2
$ latadr2 fxa109:
$ mcr latcp show link lat$link
Link Name: LAT$LINK Datalink Address: 08-00-2B-24-FC-FD
Device Name: _FXA109: DECnet Address: Enabled
Link State: Off
$ anal/sys
SDA> sho lan/full/dev=fxa109
LAN Data Structures
-------------------
-- LAN Information Summary 9-FEB-1992 11:19:53 --
LAN flags: 0002 LAN_init
LAN module version 1 First SVAPTE 92B4A88C
LAN address 80984BA0 Number of PTEs 4
Number of stations 4 SVA of pages 80314600
First LSB address 8098E0E0
Press RETURN for more.
SDA>
LAN Data Structures
-------------------
-- LAN CSMACD Network Management 9-FEB-1992 11:19:53 --
Creation time None Times created 0
Deletion time None Times deleted 0
Module EAB 00000000 Latest EIB 00000000
Port EAB 00000000
Station EAB 00000000
-- LAN FDDI Network Management 9-FEB-1992 11:19:53 --
Creation time None Times created 0
Deletion time None Times deleted 0
Module EAB 00000000 Latest EIB 00000000
Port EAB 00000000
Station EAB 00000000
Link EAB 00000000
PHY port EAB 00000000
Press RETURN for more.
SDA>
LAN Data Structures
-------------------
-- FXA109 60-04 (LAT) Unit Information 9-FEB-1992 11:20:09 --
LSB address 8098E0E0 VCIB address 00000000
Packet format Ethernet Error count 0
Device buffer size 1500 LAN medium FDDI
Maximum buffer size 4470 Eth protocol type 60-04
Hardware buffer quota 32 802E protocol ID 00-00-00-60-04
Receive buffer quota 1504 802.2 SAP 00
Allow prom client ON 802.2 Group SAPs 00,00,00,00
Promiscuous mode OFF Maximum header size 24
802.2 service OFF Hardware address 08-00-2B-24-FC-FD
Data chaining OFF Physical address 08-00-2B-24-FC-FD
Padding mode OFF Can change address OFF
Automatic restart ON Access mode EXCLUSIVE
CRC generation mode ON Controller mode NORMAL
Maintenance state ON Rcv buffs to queue 1
P2 parameters 00734395 Starter's PID 00050045
All multicast mode OFF Creator's PID 0001002D
Rcv buffer quota 1504 LSB size 4650
Press RETURN for more.
SDA>
LAN Data Structures
-------------------
-- FXA109 60-04 (LAT) Counters & Misc Info 9-FEB-1992 11:20:09 --
Last receive None Last transmit 9-FEB 10:59:44
Octets received 0 Octets sent 0
PDUs received 0 PDUs sent 3
Mcast octets received 0 Mcast octets sent 0
Mcast PDUs received 0 Mcast PDUs sent 0
Unavail user buffer 0 Last start attempt 9-FEB 11:18:26
Last start done 9-FEB 11:18:26 Last start failed None
Share UCB total quota 0
Receive IRP queue 809D6F74 Status: Valid, empty
Shared users queue 809D6F64 Status: Valid, empty
Receive pending queue 809D6F6C Status: Valid, empty
Press RETURN for more.
SDA>
LAN Data Structures
-------------------
-- FXA109 60-04 (LAT) Multicast Address Info 9-FEB-1992 11:20:09 --
Multicast address table, embedded:
09-00-2B-00-00-0F
09-00-2B-02-01-04
09-00-2B-02-01-07
SDA> exit
$ mcr latcp sho link lat$link
Link Name: LAT$LINK Datalink Address: 08-00-2B-24-FC-FD
Device Name: _FXA109: DECnet Address: Enabled
Link State: Off
$
...and here is the code...
.title latadr
.ident /1.0-1/
.library /sys$library:lib.mlb/
.library /sys$library:starlet.mlb/
$ssdef
$iodef
$nmadef
.macro check_status ?l1
blbs r0,'l1'
pushl r0
calls #1,g^lib$stop
'l1':
.endm check_status
.psect $data noexe,rd,wrt
iosb: .quad 0
chan: .word 0
buf_len = 32
device: .long buf_len
.address 10$
10$: .blkb buf_len
funblk: .word <nma$c_pcli_pha> ; function
.word 2 ; length
.word <nma$c_linmc_sdf> ; modifier
newaddr: .long <.-funblk> ; size of function block
.address funblk
.psect $code exe,rd,nowrt
.entry latadr ^m<>
pushaq device
pushl #0
pushaq device
calls #3,g^lib$get_foreign
check_status
$cmkrnl_s routin=lat_kernel
ret
.entry lat_kernel ^m<r2,r3,r4,r5>
movab g^lib$sig_to_ret,(fp)
$assign_s -
devnam=device,-
chan=chan
check_status
$qiow_s -
chan=chan,-
func=#<io$_setchar!io$m_ctrl>,-
iosb=iosb,-
p2=#newaddr
check_status
movw iosb,r0
check_status
$dassgn_s -
chan=chan
check_status
movl #ss$_normal,r0
ret
.end latadr
|
| DEMFA doesn't have just a single physical address. Instead it keeps
the individual address on a per-channel basis. The hardware address it
the default individual address; you can pick a different one for your
channel, but that does NOT affect the individual addresses used by any
other channel. This eliminates the issues with starting protocols in
the wrong order...
Note that you cannot change the hardware address, therefore the default
individual address is also fixed. This is a feature/side effect of the
multiple alias capability.
paul
|
| > Note that you cannot change the hardware address, therefore the default
> individual address is also fixed. This is a feature/side effect of the
> multiple alias capability.
The alias address can be changed when a channel is opened (decnet does
it) but what I need to be able to do is change that address AFTER the
channel has been opened, because I don't know until LAT starts up what
device number it will use. The code in -.1 attempts to do this. It
completes without any error but LATs address remains unchanged. The
only reason for choosing the decnet address is because that keeps
things simple (or so I thought :-} )
Has anyone done this ? Is it a _legal_ thing to do ?
Steve
|
| Oh, now I see.
No, you can't do that, for the same reason that you can't change the physical
address on an Ethernet device after other protocols have started. Protocols
expect their station address not to be changed out from under them!
Apart from that, why would you want to do this? I don't see what possible
purpose it could serve.
paul
|
| Its a real need, honest :-)
Due to a large customer (with 6000 and 9000 systems) being extremely
concerned about system/application availability they want to put
multiple controllers (both fddi and ethernet) into their systems -
especially the 9000). They would very much like automatic failover from
one controller to another when the controller or link fails.
Lat can't cope (at present) with multiple controllers active and
connected to the same LAN. One ethernet this is no problem as we
simply delete one lat link and create another, using the /decnet switch
all the time to keep the address consistent (if the address changes
this causes the rest of the lat world some problems).
BUT, on FDDI the /decnet swicth does not set the aa-00-etc address AND
there seems no easy way of telling lat to use a particluar alias. This
means that, unless I can find another way of doing things, the failover
of lat from one controller to another must wait _at_least_5_minutes_
(default values) for the rest of the LAT world to timeout the original
address that system was using in order to relearn the new address.
(If anyone's got a simple solution I'd love to hear it.)
Steve
|
| I suggest you contact Mike (TOOK::)Raspuzzi to discuss whether
what you wnat to do is possible. Once he understands whet you
want, and if its possible, he can help you. If he needs anything
in the way of support for changes in the Ethernet/FDDi device
drivers,. he knows to contact us.
/Bill
|