I just installed PFSense 2.2 as a VM on Xenserver 6.5 and the network performance was terrible. I have a 160Mbit connection and I was only able to get 5Mbit max. I found out that the solution was to disable the TX checksum on the hyper-visor side.
In XenServer console or SSH run this command to find your PFsense VM network VIF UUID’s:
[root@xen ~]# xe vif-list vm-name-label="<vm-name-here>"
Then type this command to disable the TX checksum:
xe vif-param-set uuid=<VIF-UUID-here> other-config:ethtool-tx="off"
Disable the TX checksum for each NIC attached to your pfSense VM.
Then Shutdown the VM. Do not just restart PFSense from console or SSH.
After I did this I was able to reach my full 160Mbit speeds instead of the measly 5Mbit I was previously getting!
Credit goes to the user tdslot on the Citrix Forums.