On Thu, Oct 26, 2023 at 3:10 PM Gregory Nutt <spudan...@gmail.com> wrote:
> > On 10/25/2023 10:41 PM, Zhe Weng 翁喆 wrote: > > But I do have another idea: > > Maybe you can try to register two network devices even if you only have > a single GMAC, just dup all the rx packets to both interfaces, and let all > tx packets go out. Since the IP addresses are different on each interface, > the stack may drop packets on the incorrect interface and accept the > correct one. It may have some problems in some situations like broadcast I > guess, but I think it may have a chance to work. > > I think there might be a couple of minor issues with that. First, the > MAC should not know anything about IP address. The OSI Seven Layer > Model prescribes that architecture and we really should make some effort > to conform to it: https://en.wikipedia.org/wiki/OSI_model > > Without getting involved with IP routing, a single MAC driver could not > handle multiple IP address. It would have to parse the incoming > packets, look up the IP address in the packet, match it with a device > driver, then forward the the correct driver structure with the packet. > > Replies to the IP message could be awkward as well. We could not reply > using the same device. The network would always have to notify the > driver of data availability using that IP address to identify the > correct device structure to use. > > What about non-IP packets, they would probably have to use the same > device structure? > > This would not be a systematic solution; it would apply to only a single > MCU type. A better solution would be generalized to the MAC of all > current and future MCUs. The solution should be generalized and common. > > I think the lack of architectural modularity, generality, and overall > complexity would make this approach undesirable. I wonder if this hasn't been solved already in some industry-accepted manner. For example (not saying this is the solution, just thinking out loud) there is a redundancy mechanism that makes two network interfaces look like one, with automatic failover. What the OP wants looks like the reverse of that: make one network interface look like two. It just feels like a problem that might have been solved already. Nathan