https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=16470

--- Comment #9 from Guy Harris <ghar...@sonic.net> ---
(In reply to levente.meszaros from comment #4)
> Great, thanks!
> 
> If we are at it, will this also work if there are multiple interfaces in the
> PCAPng trace file?

I've been staring at clause 99 of IEEE Std 802.3-2018, and, at least as I
understand it:

Protocols running atop Ethernet hand to the MAC service layer, via
MA_DATA.request, a quadruplet of:

* destination MAC address;
* source MAC address;
* the MSDU;
* the FCS.

If preemption is being used, the MAC service layer hands the MAC PDU to the MAC
Merge service layer, which processes it in the eMAC or the pMAC.

If it's handed to the eMAC, the eMAC turns around and hands an mPacket,
composed of the preamble, the appropriate SMD octet, and the MAC PDU to the
physical layer, one bit at a time via a PLS_DATA.request.

If it's handed to the pMAC, the pMAC starts handing an mPacket, composed of the
preamble, the appropriate SMD octet, and the MAC PDU to the physical layer, one
bit at a time via PLS_DATA.request.  However, if the MAC Merge service layer
gets a HOLD request via MM_CTL.request, it stops handing the mPacket to the
physical layer as soon as it can, replacing the FCS part of the MAC PDU with an
FCS for the fragment, and holds onto the remainder of the original MAC PDU,
waiting until it gets a RELEASE request MM_CTL.request, at which point it
starts sending out a continuation fragment composed of a continuation fragment
preamble, the appropriate SMD octet and frag count, and the remainder of the
MAC PDU to the physical layer.  That, in turn, is also preemptable in the same
fashion.

So all fragments of a fragmented preempt able packet go over the same physical
layer, and *should* show up on the same interface.

Therefore, *as long as reassembly is done on a per-interface basis*, that
should work.  If we support having only one conversation in progress and one
reassembly in progress, that will *not* necessarily work if there's more than
one interface in the capture with LINKTYPE_ETHERNET_MPACKET.

Note also that, at least as I read clause 99, the reassembly code should *also*
check that the frame counts are the same in all the fragments being
reassembled; this is presumably done to make sure the receiver doesn't glue
together fragments from different MAC PDUs, in case, for example, some
fragments don't make it from the sender to the receiver.

-- 
You are receiving this mail because:
You are watching all bug changes.
___________________________________________________________________________
Sent via:    Wireshark-bugs mailing list <wireshark-bugs@wireshark.org>
Archives:    https://www.wireshark.org/lists/wireshark-bugs
Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-bugs
             mailto:wireshark-bugs-requ...@wireshark.org?subject=unsubscribe

Reply via email to