we did the hardware with reference to atmega256rfr2 altium design provided by atmel.
Ok, so it is custom hardware.
When you say that stock P2P works fine - what was the method of verification? Have you tried to send a few mgabytes of data and verify it on the other end, or just typed a few characters into a terminal?
On a new hardware, even if you don't want to go into proper hardware verification, you need to do some basic stuff. Like check ind->lqi and ind->rssi values in the appDataInd() on the Coordinator, and req->status in the appDataConf() on the devices.
Also, change addresses from 0x8zzz to something without highest bit set.
If you are expecting some magical solution, there is none, you'll have to debug stuff.