This content has been marked as final. Show 2 replies
So long as your NICs are allowed to auto-negotiate, it will negotiate with its link partner for the best speed which in your case would be 100mbit/FULL. While the patch cable is connected to the switch, run this command to see what your local NIC is advertising, as well as what your link partner (lp_*) is advertising:
The above output shows that the local NIC (ce0) is set to auto-negotiate (adv_cap_autoneg=1), and is advertising multiple choices for speed: adv_cap_1000fdx, adv_cap_1000hdx, adv_cap_100fdx, adv_cap_100hdx, adv_cap_10fdx, and adv_cap_10hdx (fdx = full duplex, hdx = half duplex).
root# kstat -m ce module: ce instance: 0 name: ce0 class: net [..] adv_cap_1000fdx 1 adv_cap_1000hdx 1 adv_cap_100T4 0 adv_cap_100fdx 1 adv_cap_100hdx 1 adv_cap_10fdx 1 adv_cap_10hdx 1 adv_cap_asmpause 0 adv_cap_autoneg 1 adv_cap_pause 0 [..] link_duplex 2 link_pause 0 link_speed 100 link_up 1 [..] lp_cap_1000fdx 0 lp_cap_1000hdx 0 lp_cap_100T4 0 lp_cap_100fdx 1 lp_cap_100hdx 1 lp_cap_10fdx 0 lp_cap_10hdx 0 lp_cap_asmpause 0 lp_cap_autoneg 1 lp_cap_pause 0 [..]
The link partner is advertising 100fdx, and 100hdx. In this configuration, the two devices will negotiate to 100 full duplex, which can be observed from link_speed and link_duplex (duplex=2 is full, duplex=1 is half).
If you need to change advertisements for the local NIC, and/or re-enable auto-negotiate (recommended for most cases):
Setting Parameters Using the ce.conf File
It is important to note, that autonegotiation is usually left ON by default, (preferred method) and it is very rare nowadays to have to force the speed and duplex on both sides of the link , unless you are trying to debug a link problem or workaround an old switch bug.
1) Obtain the hardware path names for the ce devices in the device tree.
The Device name is the path name within the quotes from the /etc/driver_aliases file ("pci108e,abba" in this example)
# grep ce /etc/driver_aliases ce "pci108e,abba" ce "pci108e,abba" # grep ce /etc/path_to_inst "/pci@21c,700000/pci@1/network@0" 0 "ce" "/pci@9,700000/network@1" 1 "ce" "/pci@1f,0/pci@1/pci@2/network@1" 2 "ce"
The Parent name is the device-path before "/network@" from the /etc/path_to_inst file (there are 3 distinct interfaces, one per line, for this example machine).
The unit-address is the number immediately after the "network@" from the /etc/path_to_inst file (the first NIC has a unit address of 0, while the other two have unit address of 1).
So, the first line of the above examples:
In the second line of the above examples:
name = pci108e,abba parent = /pci@21c,700000/pci@1 unit-address = 0
In the third line of the above examples:
name = pci108e,abba parent = /pci@9,700000 unit-address = 1
Set the parameters for the above devices in the /platform/sun4u/kernel/drv/ce.conf file.
name = pci108e,abba parent = /pci@1f,0/pci@1/pci@2 unit-address = 1
In the following example, parameters are set for 100Mb Full Duplex for each the instances of ce interfaces.
Make sure that you put the values within double quotes for all THREE parameters to uniquely identify a specific NIC:
Each entry is separated by a semi-colon (also all on a single line, rather than across three lines per entry as given above), and notice that auto-negotiation (adv_autoneg_cap) is left ENABLED. The above example is allowing auto-negotiation but leaving only a single choice. Sort of like Henry Ford giving you any color Model T you want, so long as its black.
# more /platform/sun4u/kernel/drv/ce.conf name="pci108e,abba" parent="/pci@21c,700000/pci@1" unit-address="0" adv_cap_autoneg=1 adv_cap_1000fdx=0 adv_cap_1000hdx=0 adv_cap_100fdx=1 adv_cap_100hdx=0 adv_cap_100T4=0 adv_cap_10fdx=0 adv_cap_10hdx=0; name="pci108e,abba" parent="/pci@9,700000" unit-address="1" adv_cap_autoneg=1 adv_cap_1000fdx=0 adv_cap_1000hdx=0 adv_cap_100fdx=1 adv_cap_100hdx=0 adv_cap_100T4=0 adv_cap_10fdx=0 adv_cap_10hdx=0; name="pci108e,abba" parent="/pci@1f,0/pci@1/pci@2" unit-address="1" adv_cap_autoneg=1 adv_cap_1000fdx=0 adv_cap_1000hdx=0 adv_cap_100fdx=1 adv_cap_100hdx=0 adv_cap_100T4=0 adv_cap_10fdx=0 adv_cap_10hdx=0;
If you want to force all interfaces to Same duplex and speed you do Not need the name, parent, or unit. You can generically set the global settings with just a single line:
# more /platform/sun4u/kernel/drv/ce.conf
adv_cap_autoneg=1 adv_cap_1000fdx=0 adv_cap_1000hdx=0 adv_cap_100fdx=1
adv_cap_100hdx=0 adv_cap_100T4=0 adv_cap_10fdx=0 adv_cap_10hdx=0;
3) Once you have set the parameters, save the /platform/sun4u/kernel/drv/ce.conf file.
4) Reboot the system.
The ce.conf instructions were taken from Re: Setting the speed of a Gigaswift card with some edits to ensure that the parameters exactly match "kstat" outputs.
The same instructions will also work for bge interfaces on your Ultra 20 machine. Simply substitute bge for ce in the above example.
Please provide feedback if you find this answer to solve your query.
I apologize for the delayed response, after many trials with ndd, dladm tool administration tutorials to set parameters temporarily or permanently and still no results, I had to change the Fast Ethernet optical fiber switch with Gigabit Ethernet optical fiber switch, wich works fine with workstations.
I appreciate your help!