I am using OpenWRT successfully on Raspberry PI. I have two internal networks, each on its own interface. Another interface is then used for upstream connection to the Internet.
One of the internal network has a /24 subnet mask, while the other one has a /22 subnet mask. Specifically, the one with /22 subnet is from 192.168.4.0 to 192.168.7.255.
All is fine with the /24 interface. However, I realised that the reporting of IPv4 Neighbours for the interface with subnet /22 in the Status --> Routing page is a bit strange. It correctly lists the Interface name for devices in the range 192.168.4.x, but for devices in the range 192.168.5.x, 192.168.6.x and 192.168.7.x instead of the interface name, it shows the device name (eth0.100) - VLAN 100 on eth0.
Wild guess:
Did you configured the addresses while using a subnet mask or with a list of addresses with CIDR? Because the default config includes a subnet mask of a /24...
Looking at the IPv4 Neighbourhood list, 192.168.3.x correctly shows as Foreign.
However, not all of 192.168.4.0/22 show as 'Internal'. It seems 192.168.4.x shows as 'Internal', while anything else (192.168.5.x, 192.168.6.x and 192.168.7.x) simply shows as 'eth0.100' rather than 'Internal'. To me it seems that it shows the interface name for 192.168.4.x but then, for some reason, shows the device name for the rest (192.168.5.x, 192.168.6.x and 192.168.7.x).
It might be a limitation in some way, but couldn't really figure out where and how this occurs. I am 'pretending' that all of 192.168.4.0/22 mappings shows as 'Internal'.
Hope this post is a bit more clear than the original one.
I do have two different subnets 192.168.3.0/24 and 192.168.4.0/22 sharing the same VLAN. This is because there are devices which need to be on their respective subnet but physically they reach the same switch port on the managed switch.
The different subnet is needed for routing/firewall control between the devices.
They're the same VLAN, so I'm not sure what you mean by the phrase "routing/firewall control". Additionally, "Foreign" and "Internal" appear to be in different firewall zones (despite being the same VLAN), so that's even more confusing. It leads me to believe you have altered and quirky firewall zone configs (and you managed to route on the same VLAN, which isn't ideal).
Before you made the firewall comment, I was planning to suggest making one OpenWrt interface and do the following:
list ipaddr '192.168.3.253/24'
list ipaddr '192.168.4.253/22'
Lastly, I'm curious, how are you assigning client IPs if you have a VLAN with 2 IP ranges assigned?
EDIT:
I wanted to make clear that you can control intra-zone forwarding/routing (i.e. making one interface/VLAN with 1 zone) by changing the "FORWARD" firewall parameter of a zone. So it is possible to assign the /24 and /22 to the same VLAN/OpenWrt interface and firewall the routing between them as you seem to desire. To be clear on the same VLAN, in no case will it stop a client from simply renumbering a device to the other subnet - hence my confusion of the same VLAN in 2 different firewall zones.