If you have a JTAG debugger you can look at the DMA descriptors directly; they are located at 0x40000000. Header files cyu3descriptor.h and sock_regs.h describe the format; each descriptor is 16 bytes. I look at the 'sync' field to find the descriptors I'm interested in, then the 'size' field to find the current status (low few bits; see sock_regs.h).
Also I believe that for the GPIF block, the current in-progress descriptor index for socket 0 is stored at 0xE0018000. See CY_U3P_PIB_SCK_DSCR_ADDRESS in pib_regs.h.
Hope this helps,
Thanks Steve, I was able to use your suggestions to make progress with this. I used the CyU3PDmaDscrGetConfig function to get the buffers descriptor and then looked at the size variable from this to see if the buffer was full or empty - CY_U3P_BUFFER_OCCUPIED. I can use this to signal to the host computer that data is available for transfer.
Once again many thanks.