The new mesh_nolearn parameter allows to skip the PREQ/PREP exchange in this scenario, leading to a reduced delay, reduced packet buffering and simplifies HWMP in general.
Also another small remark regarding the simplification:
Next to the timer re-arming bug / crash [0] we also stumbled over another bug when using encryption on the 802.11s interfaces which we could quite solve yet:
We are seeing packet loss every four seconds due to a "DECRYPT CRC ERR". We could narrow this down to the PREQ. This somehow makes the receiver unable to decrypt the packet in hardware and also the fallback to software decryption fails as the hardware has messed up the encrypted data (looks completely different than what we saw in the air with a third device in monitor mode, unencrypted headers looked ok though). Furthermore, the hardware still sends ACKs for this frame... so no retries on the 802.11 layer, leading to ugly packet loss for one UDP packet every four seconds.
The hardware we were having this issue with is a Lima board with a QCA4531.
Setting ath9k nohwcrypt=1 on the sender side helps. And avoiding PREQs with this patch also helped in our batman-adv setup which had mesh_fwding disabled already anyway.
Regards, Linus
PS/Disclaimer: This bug was observed on an old LEDE version.