Novell Home

Using INETCFG To Manage Your NIC Cards

Novell Cool Solutions: Tip
By Geoffrey Carman

Digg This - Slashdot This

Posted: 22 Jun 2006
 

In the Wiki posting: http://wiki.novell.com/index.php/Cluster_Services it talks about for better iSCSI performance you should enable Jumbo frames and mentions that you cannot use INETCFG to manage your NIC once you want to enable INETCFG.

This is actually a mistaken impression. The reason they suggest this, is due to a misunderstanding of how INETCFG gets options.

INETCFG is quite an amazing tool, that has done really great things for many years. But it is only as good as the input files you provide it. When you load a NIC driver, you need two files (Lets use the ubiquitous Intel E100 driver, CE100B as our example). The LAN file (CE100B.LAN) the actual driver, and the LDI file, the LAN Driver Info file (CE100B.LDI). For general interest, disk drives (.HAM) come with a matching file, .DDI (Disk Driver Info or somesuch). And all the info below also applies to DDI files.

LDI files are simply text files that offer configuration and identification options for LAN drivers. (DDI's do the same for HAM drivers). The model is quite versatile and easy to extend. Look at any LDI file, and you should be able to figure out the description language fairly quickly.

The cannonical example of needing to do this, is actually in the E100 driver. Intel for whatever reason ships it with this segment in the LDI file:

         ; to include TXTHRESHOLD, please uncomment out this line
         ; PR TXTHRESHOLD OPT
         ; and comment out this one.
         PR TXTHRESHOLD HID
         {
             DES:    "Transmit Threshold"
             Help:   $CE100B_12
             TYP:    DEC (3)
             VAL:    0-200
             DEF:    0
             Out:    'TXTHRESHOLD=%s'
         }

For whatever reason, TXTHRESHOLD is an available option (and HIGHLY recomended to be enabled and set to 200 by the way) but the way Intel provides the driver, it is not shown by INETCFG.

So follow the information in the file, which basically tells you uncomment the PR TXTHRESHOLD OPT line, and comment out the PR TXTHRESHOLD HID line with a semicolon.

In other words, PR (Prompt or present), a setting called TXTHRESHOLD, and make it either OPT (optional) or HID (Hidden).

The HELP: line references help info at the bottom of the file, one per language type. I have never actually seen one use any language other than English, but it is supported. This is what appears if you hit F1 for Help in INETCFG in this entry. You can ignore this if you want.

DES: Is the description line that appears in INETCFG as the description of the entry. Any text will do. Make it meaningful please for the mental sanity of others.

TYPE: Is the data field type it takes. There is DEC (x) where x is the length of the field. STR (x) for String of length x. And probably more, but since you usually only need a number or a string, that should be enough. I just read through the CE100B.LDI to see how many data types there are. There is a way to present a list box, like FrameSelect, but that is fancier than we need to be.

VAL: is a Value range. If it is a few discrete numbers, like 1, 2, or 3. Then 1, 2, 3 works. If it is somewhere in a range, like our example, 0-200 is the range.

DEF: is great, the default value. The network Netware install we use has this set to DEF: 200 so that we get the correct value automatically on every install we use it for, without any fiddling. (Less work is good!)

OUT: is finally the magic bit. This allows you to output something on the driver load line. So in our example, you need to add the text, TXTHRESHOLD=200 on the LAN driver load line, so OUT is set to 'THXTHRESHOLD=%s' which uses %s as the variable for whatever you entered.

So now on to our Jumbo frame example. First of all make sure your NIC supports it, and find out what the syntax is from the vendor. In the example I want to add the text JUMBO=9000 on the LAN driver load line.

So I grabbed a sample of LDI file from the CE100 driver below, and modified it to show what needs to be changed. I used the simplist one near the top, the setting for PCI SLOT number.

Original clipping:

         PR SLOT REQ
         {
             HELP:  $CE100B_3
             TYP:  DEC (5)
             VAL:   1 - 65535
             DEF:  UND
         }

Modified:

         PR JUMBO OPT
         {
 	    DES: "Jumbo Frame size"
             TYP:  DEC (4)
             VAL:   1 - 9000
             DEF:  9000
 	    OUT: 'JUMBO=%s'
         }

I changed the name from SLOT to JUMBO, added a description field. Changed the length of the decimal field to 4 from 5 (Since we want to go up to 4 digits long numbers). I also removed the HELP: line since I don't really feel the need to write help for it. But that is just me.

Changed the VAL to 1-9000, and set the default to 9000. Then I added an OUT: line to write out the value.

So edit the LDI file for your driver in C:\nwserver\drivers, or edit it in your install media, or tell INETCFG to load a new driver, pointing at the new location with the edited file and paste this snippet in.

Then load INETCFG, Boards, and select the NIC you just worked on. You should see JUMBO as one of your options, set to 9000 already. Great, Escape to exit, save change, and then select View Config, All INETCFG Commands, and look at the LOAD CE100B.LAN line and make sure it now includes JUMBO=9000 on it.

The main place I use this is on the B57.LAN driver. The Broadcomm gigabit Ethernet that Dell and other vendors use often as the built in GigE card. I need to add support for Flow control at Gigabit speeds, so I have edited ours to add the RxFLOW=ON and TxFLOW=ON which are not there by default.

The line normally looks like:

LOAD B57 NAME=B57_1_EII_EII FRAME=ETHERNET_II SLOT=10016 Speed=AUTO
      RxBuffers=200

Once I add the snippet below, it looks like:

LOAD B57 NAME=B57_1_EII_EII FRAME=ETHERNET_II SLOT=10016 Speed=AUTO
      RxBuffers=200 RxFLOW=ON TxFLOW=ON
    PR    RXFLOW OPT
    {
     DES:    "Receive Flow Control"
     Type:    STR
     default: 'ON'
     OutputFormat:    'RxFLOW=%s'
    }


    PR    TXFLOW OPT
    {
     DES:    "Transmit Flow Control"
     Type:    STR
     default: 'ON'
     OutputFormat:    'TxFLOW=%s'
    }

This way you can add any arbitrary value to be supported by INETCFG, and still get all the benefits of INETCFG. (Reinitialize system is just magical, and it is so nice to swap IP addresses live, on the fly. Why ever would I want to give that up?).

What I have not tested, is if the new IP Management bits in Novell Remote Manager use the LDI files the same way or not.


Novell Cool Solutions (corporate web communities) are produced by WebWise Solutions. www.webwiseone.com

© 2014 Novell