I have been using bfin_sport.c device driver. I wish to do a simple loop-back experiment and I shorted SPORT's TX and RX pin. After configuring sport, I just write to sport and read the same number of bytes. While this works, it takes about a minute to transfer even 20 bytes or 200 bytes. I used time command in shell to figure out the time it spends in user space and kernel space. While the program takes 69.6 secs to run for 100 bytes,77.8 for 1000 bytes and 153 seconds for 10000 bytes. it spends only 0.02 sec in kernel spacke and 0.01 in userspace. I am unable to figure out why it's taking so long. I observed that there are 2 transmit interrupts in first second and nothing for next 1 minute. And the whole transfer takes in the last 1 sec or so. Can somebody explain me why it's acting this way?