Jumbo multicast
Till Straumann
strauman at slac.stanford.edu
Thu May 15 19:19:04 UTC 2008
Amedeo Perazzo wrote:
> Till,
>
> These are the problems I see when I try to send jumbo multicast
> packets from RTEMS:
>
> 1. Packets get fragmented on the 1500 bytes boundary even if I setup
> the interface to use jumbo frames.
>
> 2. The 2nd fragment of a large packet causes an arp request even if
> the original packet is a multicast packet.
>
> I suspect that the following points are the causes for the above
> behavior.
>
> 1. The mtu for the interface is reset to 1500 by ether_ifattach() even
> if I set it to 9000 when I initialize the ifnet interface structure.
> Note that the RTEMS documentation (at least the version for 4.6.6)
> claims that the user should set the mtu variable _before_ calling
> ether_ifattach().
>
> As a workaround I currently set ifp->mtu _after_ calling
> ether_ifattach(). In any case, I claim I should be able to configure
> the mtu before calling ether_ifattach().
Hmm - not sure about that. Seems that if we require drivers to set
if_mtu prior to
calling ether_ifattach() we possibly break a lot of existing code. IMO
setting
if_mtu after ether_ifattach by drivers which support longer frames should
be acceptable. Of course, the documentation should be updated...
>
>
> 2. The M_MCAST flag does not get copied by m_copym() for the 2nd
> fragment in a packet and, as a consequence, arpresolve() in if_ether.c
> does not enter the following condition:
>
> if (m->m_flags & M_MCAST) { /* multicast */
> ETHER_MAP_IP_MULTICAST(&SIN(dst)->sin_addr, desten);
> return(1);
> }
>
> This seems to cause the arp request to be sent when it should not be.
>
> What do you think?
This one looks more serious. I did only have a quick glance but you may have
a point there. We should have a look at more recent BSD sources and see
if and how they fixed this.
-- T.
>
> -- Amedeo
More information about the users
mailing list