I recently wrote a piece about specifically this mechanism (though looked from the receiver side).
Basically on linux you can work around this initcwnd limit (if you have to, for whatever reason), by tuning buffer sizes, initcwnd obviously, and rcv_ssthresh.
https://blog.cloudflare.com/when-the-window-is-not-fully-ope...
I recently wrote a piece about specifically this mechanism (though looked from the receiver side).
Basically on linux you can work around this initcwnd limit (if you have to, for whatever reason), by tuning buffer sizes, initcwnd obviously, and rcv_ssthresh.