Motherboard Forums


Reply
Thread Tools Display Modes

ASF problerms on Intel865GLC

 
 





















Yohan
Guest
Posts: n/a

 
      06-19-2006, 06:15 PM


We have been completely unable to use the ASF support of our
Intel865GLC motherboard.

The BIOS has ASF listed as 'Enabled' and is documented to support ASF
1.03, the network adapter (82547EI) is documented to support ASF 2.0
and more.

At this point, all we're trying to do is send out an RMCP Presence Ping
and get some RMCP Presence Pong back from ASF-enabled network nodes.

Here is the test program we are using:

// CODE STARTS HERE
unsigned char rmcp_packet[ 12 ] =
{
// RMCP Header
0x06, // v1.0
0x00, // Reserved
0x00, // Sequence #
0x06, // Message Class: ASF

// RMCP Data
0x00, 0x00, 0x11, 0xBE, // IANA Enterprise #: ASF
0x80, // Presence Ping
0x00, // Message Tag
0x00, // Reserved
0x00, // Data Length
};

string szIP( "255.255.255.255" );
unsigned short nPort( 623 );

WSADATA sData;

::WSAStartup( MAKEWORD( 2, 0 ), &sData );

// Create the socket
SOCKET soc = ::socket( AF_INET, SOCK_DGRAM, IPPROTO_UDP );

if ( soc != INVALID_SOCKET )
{
// Set the socket in non-blocking mode
unsigned long arg = 1;

if ( ::ioctlsocket( soc, FIONBIO, &arg ) != SOCKET_ERROR )
{
BOOL bEnable = TRUE;

if ( ::setsockopt( soc, SOL_SOCKET, SO_BROADCAST, (char
*)&bEnable, sizeof( bEnable ) ) != SOCKET_ERROR )
{
sockaddr_in sTarget;

sTarget.sin_family = AF_INET;
sTarget.sin_addr.s_addr = inet_addr( szIP.c_str( ) );
sTarget.sin_port = htons( nPort );

int rv = ::sendto( soc, (const char *)rmcp_packet, sizeof( rmcp_packet
), 0, (sockaddr *)&sTarget, sizeof( sTarget ) );

if ( rv < 0 )
{
printf( "Unable to send data <Error=%lu>\n", ::WSAGetLastError( )
);
}

int nCount = 1;

while( nCount <= 10 )
{
char rsp[ 256 ];
int rsplen = sizeof( rsp );

sockaddr_in src;
int srclen = sizeof( src );

int rv = ::recvfrom( soc, rsp, rsplen, 0, (sockaddr *)&src,
&srclen );

if ( rv < 0 )
{
printf( "recvfrom returned %lu\n", ::WSAGetLastError( ) );
}
else
{
printf( "recvfrom returned %lu bytes\n", rv );

break;
}

nCount++;

::Sleep( 500 );
}
}
else
{
printf( "Unable to enable broadcast on the socket <Error=%lu>\n",
::WSAGetLastError( ) );
}
}
else
{
printf( "Unable to set socket in non-blocking mode
<Error=%lu>\n", ::WSAGetLastError( ) );
}

::closesocket( soc );
}

::WSACleanup( );
// CODE ENDS HERE

We have tested with the motherboard booted up to the OS, we have tested
with the motherboard on stand-by power, we are always getting socket
error 10035 (WouldBlock) from the recvfrom function call (i.e. there's
no reply coming back).

Would someone be so kind as to point out where we've gone wrong?

 
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off



All times are GMT. The time now is 12:03 PM.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43