This discussion is archived
3 Replies Latest reply: Mar 19, 2007 8:58 PM by 807567 RSS

Setting the speed of a Gigaswift card

807567 Newbie
Currently Being Moderated
Hi
I need to force a Gigaswift card to be 100Mbs Full Duplex. Can anyone tell me how to do it.

Thanks
Bob
  • 1. Re: Setting the speed of a Gigaswift card
    807567 Newbie
    Currently Being Moderated
    http://sunsolve.sun.com/pub-cgi/retrieve.pl?doc=finfodoc%2F41665&zone_32=ndd

    This will tell you it all.
  • 2. Re: Setting the speed of a Gigaswift card
    807567 Newbie
    Currently Being Moderated
    That sunsolve document isn't too great. Someone should update it..

    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.

    a. # grep ce /etc/driver_aliases
    ce "pci108e,abba"
    ce "pci108e,abba"


    b. # 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 Device name is the path name within the quotes from the /etc/driver_aliases file (will always "pci108e,abba" )

    The parent name is the device-path before "/network@" from the /etc/path_to_inst file.
    The unit-address is the number immediately after the "network@" from the /etc/path_to_inst file.



    In the first line of the above examples:


    *
    name = pci108e,abba
    *
    parent = /pci@21c,700000/pci@1
    *
    unit-address = 0

    In the second line of the above examples:

    *
    name = pci108e,abba
    *
    parent = /pci@9,700000
    *

    unit-address = 1


    In the third line of the above examples:
    *
    name = pci108e,abba
    *
    parent = /pci@1f,0/pci@1/pci@2
    *
    unit-address = 1


    Set the parameters for the above devices in the /platform/sun4u/kernel/drv/ce.conf file.

    Make sure that you put the values within double quotes for all three parameters:
    name, parent, and unit-address.


    In the following example, parameters are set for 100Mb Full Duplex for each the instances of ce interfaces.

    # more /platform/sun4u/kernel/drv/ce.conf
    name="pci108e,abba" parent="/pci@21c,700000/pci@1" unit-address="0"

    adv_autoneg_cap=0 adv_1000fdx_cap=0 adv_1000hdx_cap=0 adv_100fdx_cap=1
    adv_100hdx_cap=0 adv_100T4_cap=0 adv_10fdx_cap=0 adv_10hdx_cap=0;
    name="pci108e,abba" parent="/pci@9,700000" unit-address="1" adv_autoneg_cap=0

    adv_1000fdx_cap=0 adv_1000hdx_cap=0 adv_100fdx_cap=1 adv_100hdx_cap=0
    adv_100T4_cap=0 adv_10fdx_cap=0 adv_10hdx_cap=0;
    name="pci108e,abba" parent="/pci@1f,0/pci@1/pci@2" unit-address="1"

    adv_autoneg_cap=0 adv_1000fdx_cap=0 adv_1000hdx_cap=0 adv_100fdx_cap=1
    adv_100hdx_cap=0 adv_100T4_cap=0 adv_10fdx_cap=0 adv_10hdx_cap=0;


    If you want to force all interfaces to Same duplex and speed you do Not need the name, parent, or unit , just one line:

    # more /platform/sun4u/kernel/drv/ce.conf
    adv_autoneg_cap=0 adv_1000fdx_cap=0 adv_1000hdx_cap=0 adv_100fdx_cap=1
    adv_100hdx_cap=0 adv_10fdx_cap=0 adv_10hdx_cap=0;

    3) Once you have set the parameters, save the /platform/sun4u/kernel/drv/ce.conf file.

    4) Reboot the system.



    Notes:


    Settings can be confirmed by examining the ce device capabilites with ndd

    # ndd -set /dev/ce instance 0 ; ndd /dev/ce adv_autoneg_cap ; ndd /dev/ce adv_100fdx_cap

    and looking at "kstat ce" setting for link_speed and link_mode

    # kstat -c net :::'*link*'
    you can also see the register settings in output of "prtconf -v"
    Note 2: if "ce" is forced, the link partner ( switch port ) is also Required to be forced to same speed and duplex.

    Note 3 : It is highly recommended to Not disable autoneg unless you really have to.





  • 3. Re: Setting the speed of a Gigaswift card
    807567 Newbie
    Currently Being Moderated
    Thanks for a teriffic article, but, on 2 v440's it doesn't go right:

    SunOS aparsdr 5.10 Generic_118833-17 sun4u sparc SUNW,Sun-Fire-V440
    # find /platform -name ce.conf
    /platform/sun4u/kernel/drv/sparcv9/ce.conf
    # cat /platform/sun4u/kernel/drv/sparcv9/ce.conf
    name="pci108e,abba" parent="/pci@1c,600000" unit-address="2" adv_autoneg_cap=0 adv_1000fdx_cap=0 adv_1000hdx_cap=0 adv_100fdx_cap=1 adv_100hdx_cap=0 adv_10fdx_cap=0 adv_10hdx_cap=0;

    name="pci108e,abba" parent="/pci@1f,700000" unit-address="1" adv_autoneg_cap=0 adv_1000fdx_cap=0 adv_1000hdx_cap=0 adv_100fdx_cap=1 adv_100hdx_cap=0 adv_10fdx_cap=0 adv_10hdx_cap=0;

    #
    # kstat -c net :::'*adv*'
    module: ce instance: 0
    name: ce0 class: net
    adv_cap_1000fdx 1 ------------- WRONG
    adv_cap_1000hdx 1 ----------------WRONG
    adv_cap_100fdx 1 ----------------WRONG
    adv_cap_100hdx 1
    adv_cap_100T4 0
    adv_cap_10fdx 1
    adv_cap_10hdx 1
    adv_cap_asmpause 0
    adv_cap_autoneg 1 ---------- WRONG
    adv_cap_pause 0

    module: ce instance: 1
    name: ce1 class: net
    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
    adv_cap_asmpause 0
    adv_cap_autoneg 0
    adv_cap_pause 0