|
Description
|
For non-M_DATA mblks that ip_input() receives, it calls ip_rput_process_notdata() to see if it has a multicast/broadcast packet.
Now with GLDv3, M_DATA messages are passed into IP via ip_input() and mac_header_info is used to convey the information that was previously in the M_PROTO.
However, it would seem that the introduction of mac_header_info as an argument to ip_input() has forgotten to (for example) set ll_multicast in ip_input().
There's another impact here: drivers *must* pass in mac_header_info and some appear not to - e.g. qfe/hme.
I don't quite understand this bug. ip_input() does not use the mac_header_info
argument at all.
Note that the multicast data processing in GLDv3 is incorrect though. See bug
6451644.
IP needs to use the mac_header_info_t to correctly set ll_multicast.
If I read 6451644 correctly, multicast handling isn't incorrect, it's broken, which might make fixing this impossible (at present.)
If we come into ip_input() via ip_soft_ring_assignment(), mhip will be non-NULL, although whether this brings with it multicast/broadcast packets isn't clear, but it does make adding code to make use of mhip almost worthwhile.
|