Project Home
Project Home
Wiki
Wiki
Discussion Forums
Discussions
Project Information
Project Info
Forum Topic - Net.e1000 with Intel82583 Multicast Not Work,Help: (2 Items)
   
Net.e1000 with Intel82583 Multicast Not Work,Help  
OS:Qnx4.25
Hardware: Intel82583
DriverVersion:Net.e1000.20120213.tar.gz
TCPIPVersion:Tcpip.20120510.tar.gz

code as below can't recv any multicast packets from client.when the code is executed, it will be stuck at recv. and i 
checked the registers, and found that none of multicast filter is set. if i set multicast promiscuous bit as 1, the 
MPRC( multicast packet receive counter ) will increase, but the code still is stuck at recv. anybody can help me?

/**************82583 relative registers*************************/
# ./dbg
idx:0  busnum =1,devfun=0, portAddr = dfe20000,page_ptr = 0000e000
RCTL:04408012   PRC64:00000067  PRC127:0000010e
PRC255:00000000 PRC511:003f7e8f PRC1023:00000004        PRC1522:00000002
GPRC:003f7ff1   BPRC:0000010e   MPRC:003f7e82   TPR:003f7ff3
/******************network configuration*********************/
# ifconfig -a
en1: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        address: 00:30:64:25:d5:08
        inet 192.168.0.244 netmask 0xffffff00 broadcast 192.168.0.255
en2: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        address: 00:30:64:25:d5:09
        inet 192.168.1.244 netmask 0xffffff00 broadcast 192.168.1.255
en3: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        address: 00:30:64:25:d5:0a
        inet 192.168.2.244 netmask 0xffffff00 broadcast 192.168.2.255
en4: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        address: 00:30:64:25:d5:0b
        inet 198.122.3.22 netmask 0xffff0000 broadcast 198.122.255.255
en5: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        address: 00:30:64:25:d5:0c
        inet 192.168.5.244 netmask 0xffffff00 broadcast 192.168.5.255
en6: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        address: 00:30:64:25:d5:0d
        inet 192.168.6.244 netmask 0xffffff00 broadcast 192.168.6.255
lo0: flags=8009<UP,LOOPBACK,MULTICAST> mtu 32976
        inet 127.0.0.1 netmask 0xff000000
# netstat -r
Routing tables

Internet:
Destination        Gateway            Flags     Refs     Use    Mtu  Interface
localhost          localhost          UH          0       56      -  lo0
192.168            link#1             UC          0        0      -  en1
192.168.0.10       3c:97:0e:c0:73:69  UHL         1       88      -  en1
192.168.1          link#2             UC          0        0      -  en2
192.168.2          link#3             UC          0        0      -  en3
192.168.5          link#5             UC          0        0      -  en5
192.168.6          link#6             UC          0        0      -  en6
198.122/16         link#4             UC          0        0      -  en4


/*****************************code***********************************/
#define PORT 4321
#define MCAST_GROUP "224.0.1.129"
#define LOCAL_ADDR  "192.168.0.244"

int init_socket(void)
{
	int sock, on = 1, ucItem,mrport;
	struct sockaddr_in name;
	struct ip_mreq mreq;		// multicast
    
    sock = socket(AF_INET, SOCK_DGRAM, 0);
    if(sock < 0)
    {
    	printf("opening datagram socket error.");
    	return -1;
    }
	on = 1;
	if(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)))
	{
		printf("reuse address error.");
		return -1;
	}
	on = 1;
	if(setsockopt(sock, SOL_SOCKET, SO_REUSEPORT, &on, sizeof(on)))
	{
		printf("reuse port error.");
		return -1;
	}
	
    memset(&name, 0, sizeof(struct sockaddr_in));
    name.sin_len         = sizeof(struct sockaddr_in);
    name.sin_family      = AF_INET;
 
    name.sin_addr.s_addr = inet_addr(LOCAL_ADDR);
    name.sin_port        = htons(PORT);
	
   	if(bind(sock, (struct sockaddr *)&name, sizeof(name)))
   	{
    	printf("binding datagram socket error.");
        return -1;
    }
	
	mreq.imr_multiaddr.s_addr =...
View Full Message
Re: Net.e1000 with Intel82583 Multicast Not Work,Help  
Did you start the driver with the -M command line option?




On 2013/12/28, 12:22 PM, "wang long" <community-noreply@qnx.com> wrote:

>OS:Qnx4.25
>Hardware: Intel82583
>DriverVersion:Net.e1000.20120213.tar.gz
>TCPIPVersion:Tcpip.20120510.tar.gz
>
>code as below can't recv any multicast packets from client.when the code
>is executed, it will be stuck at recv. and i checked the registers, and
>found that none of multicast filter is set. if i set multicast
>promiscuous bit as 1, the MPRC( multicast packet receive counter ) will
>increase, but the code still is stuck at recv. anybody can help me?
>
>/**************82583 relative registers*************************/
># ./dbg
>idx:0  busnum =1,devfun=0, portAddr = dfe20000,page_ptr = 0000e000
>RCTL:04408012   PRC64:00000067  PRC127:0000010e
>PRC255:00000000 PRC511:003f7e8f PRC1023:00000004        PRC1522:00000002
>GPRC:003f7ff1   BPRC:0000010e   MPRC:003f7e82   TPR:003f7ff3
>/******************network configuration*********************/
># ifconfig -a
>en1: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu
>1500
>        address: 00:30:64:25:d5:08
>        inet 192.168.0.244 netmask 0xffffff00 broadcast 192.168.0.255
>en2: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu
>1500
>        address: 00:30:64:25:d5:09
>        inet 192.168.1.244 netmask 0xffffff00 broadcast 192.168.1.255
>en3: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu
>1500
>        address: 00:30:64:25:d5:0a
>        inet 192.168.2.244 netmask 0xffffff00 broadcast 192.168.2.255
>en4: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu
>1500
>        address: 00:30:64:25:d5:0b
>        inet 198.122.3.22 netmask 0xffff0000 broadcast 198.122.255.255
>en5: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu
>1500
>        address: 00:30:64:25:d5:0c
>        inet 192.168.5.244 netmask 0xffffff00 broadcast 192.168.5.255
>en6: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu
>1500
>        address: 00:30:64:25:d5:0d
>        inet 192.168.6.244 netmask 0xffffff00 broadcast 192.168.6.255
>lo0: flags=8009<UP,LOOPBACK,MULTICAST> mtu 32976
>        inet 127.0.0.1 netmask 0xff000000
># netstat -r
>Routing tables
>
>Internet:
>Destination        Gateway            Flags     Refs     Use    Mtu
>Interface
>localhost          localhost          UH          0       56      -  lo0
>192.168            link#1             UC          0        0      -  en1
>192.168.0.10       3c:97:0e:c0:73:69  UHL         1       88      -  en1
>192.168.1          link#2             UC          0        0      -  en2
>192.168.2          link#3             UC          0        0      -  en3
>192.168.5          link#5             UC          0        0      -  en5
>192.168.6          link#6             UC          0        0      -  en6
>198.122/16         link#4             UC          0        0      -  en4
>
>
>/*****************************code***********************************/
>#define PORT 4321
>#define MCAST_GROUP "224.0.1.129"
>#define LOCAL_ADDR  "192.168.0.244"
>
>int init_socket(void)
>{
>	int sock, on = 1, ucItem,mrport;
>	struct sockaddr_in name;
>	struct ip_mreq mreq;		// multicast
>    
>    sock = socket(AF_INET, SOCK_DGRAM, 0);
>    if(sock < 0)
>    {
>    	printf("opening datagram socket error.");
>    	return -1;
>    }
>	on = 1;
>	if(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)))
>	{
>		printf("reuse address error.");
>		return -1;
>	}
>	on = 1;
>	if(setsockopt(sock, SOL_SOCKET, SO_REUSEPORT, &on,...
View Full Message