Tom Chen
2010-Aug-13 00:45 UTC
[crossbow-discuss] Crossbow implementation issue:link aggregation only works with snoop runing
Hello, I am implementing Crossbow for my GLDv3 driver. I have implemented: addmac, remmac, fill_ring, fill_group etc functions and allow 1 rx group only. I first verified that ping works between two Solaris machine before setting up link aggregation. Then I use dladm create-aggr -d command to create aggr1 port on the server with just 1 nic port, then bring up the aggr1. #ifconfig aggr1 plumb 192.168.43.77 up The debug print shows that m_start( ) function is called to start the driver and addmac is called to set the default factory mac address. Then I ping this aggr1 port from another machine and find ping does not work. But I can see in the message log that nic driver does receive all the ping packets and send to OS. So, the packets must be dropped by the OS somehow. However, if I run #snoop -d aggr1 then ping works. I am wondering why? If aggr1 was plumbed with a different MAC address, then I can understand, but the mac address is the same, so I am quite puzzled, probably somewhere else is wrong. Tom -- This message posted from opensolaris.org
Prakash Jalan
2010-Aug-13 01:32 UTC
[crossbow-discuss] Crossbow implementation issue:link aggregation only works with snoop runing
Tom, which build are you running? Does aggr works on your system with any other driver shipped with Opensolaris? - prakash On 08/12/2010 05:45 PM, Tom Chen wrote:> Hello, > > I am implementing Crossbow for my GLDv3 driver. I have implemented: addmac, remmac, fill_ring, fill_group etc functions and allow 1 rx group only. > > I first verified that ping works between two Solaris machine before setting up link aggregation. > > Then I use dladm create-aggr -d command to create aggr1 port on the server with just 1 nic port, then bring up the aggr1. > #ifconfig aggr1 plumb 192.168.43.77 up > > The debug print shows that m_start( ) function is called to start the driver and addmac is called to set the default factory mac address. > > Then I ping this aggr1 port from another machine and find ping does not work. But I can see in the message log that nic driver does receive all the ping packets and send to OS. So, the packets must be dropped by the OS somehow. > > However, if I run #snoop -d aggr1 then ping works. I am wondering why? If aggr1 was plumbed with a different MAC address, then I can understand, but the mac address is the same, so I am quite puzzled, probably somewhere else is wrong. > > Tom
Tom Chen
2010-Aug-13 21:25 UTC
[crossbow-discuss] Crossbow implementation issue:link aggregation only works with snoop runing
Hi, I am using snv136+ and I just tested ixgbe driver and it works. I am wondering what is wrong with mine. Tom -- This message posted from opensolaris.org
Prakash Jalan
2010-Aug-14 00:54 UTC
[crossbow-discuss] Crossbow implementation issue:link aggregation only works with snoop runing
There are few functions you can trace to find out what''s going on. Following will give you some hint if packet is getting dropped in mac - #dtrace -n ''mac_pkt_drop:entry{stack()}'' since you are using ping from remote systems, you can trace the packets upto ip by tracing icmp_inbound_v4() when snoop is running - #dtrace -n ''icmp_inbound_v4:entry{stack()}'' You will get some clue about code path in working and non-working case which will help you debug the issue further. - prakash On 08/13/2010 02:25 PM, Tom Chen wrote:> Hi, > > I am using snv136+ and I just tested ixgbe driver and it works. > I am wondering what is wrong with mine. > > Tom