[netperf-talk] question about DLPI transfer performance

Rick Jones rick.jones2 at hp.com
Thu Aug 3 09:56:32 PDT 2006


> Thanks Rick:
>   As you said, I add a option to specify a different file.
>   But I got another error:

Does it show that the DLPI stuff doesn't get much exposure?-)

> 
> /usr/local/bin # ./netperf -H 11.0.1.105 -t DLCO_STREAM -- -D /dev/xge
> DLPI CO STREAM TEST
> Recv   Send    Send
> Window Window  Message  Elapsed
> Size   Size    Size     Time     Throughput
> frames frames  bytes    secs.    10^6bits/sec
> 
> put_control: acknowledgement error wanted 6 got 5
>              dl_error_primitive: 11
>              dl_errno:           4
>              dl_unix_errno       22
> netperf: dl_open: could not send control message, errno = 0
> netperf: send_dlpi_co_stream: dlpi stream data descriptor: Error 0

So, falling-back to grepping errno again, we have:

$ grep 22 /usr/include/sys/errno.h
#define EINVAL          22      /* Invalid argument             */

and expanding that to try to decode the dl_errno:

$ grep 4 /usr/include/sys/dlpi.h
#define DL_BIND_ACK             0x04    /* Dlsap address bound, */
#define DL_DISCONNECT_IND       0x14    /* Disconnect indication */
#define DL_REPLY_REQ            0x24    /* Request a DLSDU from the
remote */
#define DL_GET_STATISTICS_REQ   0x34    /* Request to get statistics */
#define DL_UNATTACHED           0x04    /* PPA not attached */

which suggests an issue with the PPA - I don't recall what netperf
assumes for the PPA or if it tries to strip it from the device name.  It
has been a _long_ time :)

> /usr/local/bin # ./netperf -H 11.0.1.105 -t DLCO_STREAM -- -D /dev/xge0
> DLPI CO STREAM TEST
> Recv   Send    Send
> Window Window  Message  Elapsed
> Size   Size    Size     Time     Throughput
> frames frames  bytes    secs.    10^6bits/sec
> 
> put_control: acknowledgement error wanted 6 got 5
>              dl_error_primitive: 11
>              dl_errno:           9
>              dl_unix_errno       0
> netperf: dl_open: could not send control message, errno = 0
> netperf: send_dlpi_co_stream: dlpi stream data descriptor: Error 0

So, this one had no unix errno number, but did have a DLPI error number,
which we can look for in the include file(s):

$ grep 9 /usr/include/sys/dlpi.h
#define DL_VERSION_2            0x02    /* version of dlpi March 12,1991 */
#define DL_UDERROR_IND          0x09    /* datagram error indication, */
#define DL_RESET_RES            0x19    /* Complete reset processing */
#define DL_XID_REQ      0x29            /* Request to send an XID PDU */
#define DL_INCON_PENDING        0x09    /* incoming connection, awaiting */
#define DL_DISCON9_PENDING      0x10    /* Waiting ack of DL_DISC_REQ
when in */
#define DL_BADPRIM      0x09    /* Primitive received is not known by DLS */
#define DL_XIDAUTO      0x19    /* Automatic handling of XID response */
#define DL_OTHER        0x09    /* Any other medium not listed above */
#define DL_DISC_PERMANENT_CONDITION             0x0809
#define DL_RESET_FLOW_CONTROL   0x0900
#define DL_RESET_LINK_ERROR     0x0901
#define DL_RESET_RESYNCH        0x0902
#define DL_CMD_UN       0x09    /* Resources temporarily unavailable */
#define DL_RSP_UN       0x90    /* Resources temporarily unavailable */

I'm not sure which of those 9's is the applicable one though.  I am
pretty sure the dl_errno is standardised by DLPI but it wouldn't hurt to
double-check in the Solaris dlpi.h file.

rick


More information about the netperf-talk mailing list