If you are transferring raw data point to point, there is no need to encapsulate the data with IP/UDP etc, so you could bypass the IP stack.
That would definitely speed up the transfer rate + reduce the packet overhead
Then if you are close to 500 Mbps, tweaking the driver or how you use the driver would be necessary.
If you are still far from 500 Mbps, the Linux driver tweaking may be a bit too cumbersome.
The other way is to use a basic bare bone EMAC driver, or write one yourself.
It's not that difficult as it mostly manipulating linked lists.
If you want to try this path, go to:
www.code-time.com and fill the request form for our standalone drivers.
They are free and provided under a BSD-2 license, so fully modifiable and usable in commercial product.
The EMAC driver handles all HPS EMACs on the Altera chips, is completely standalone and very minimalist.
The only thing you'll have to supply is the cache maintenance (invalidation / flushing) if the the data is in cached memory.
Properly configured & controlled, you should be able to get much higher throughput than your required 500 Mbps.
Regards