hello Samarth .... First of all, you said you attached your code, but where is it? if you think it is too big, you can simply post it somewhere on Web and write down the exact URL so we can take a look... OK, I'll try to lend some ideas.... > I am working on linux kernel 2.6.13.4. I am trying to append some > data along with the tcp acknowledgement packet.In the tcp_send_ack () > function I have modified the function as follows. > > 1) > buff = alloc_skb(2*MAX_TCP_HEADER, GFP_ATOMIC); OK, I see you are doubling the allocated buffer, what did you put there? > 2) > unsigned char *data = skb_put(buff,MAX_TCP_HEADER); Again, you are extending the used area of the buffer...what data did you put there? > I have added a printk statement in the beginning of the function to > inform me whenever the function is called. However after doing the > above mentioned changes and on recompiling the kernel , my system > keeps looping within the tcp_send_ack () function. ( The > /var/log/messages were full of my printk > statements) perhaps if you post your modification (maybe as patch file and then sent gzipped?) we can help you better. IMHO, my really raw guess, you are extending the buffer but you are inserting meaningless data. This data is then received by the other socket endpoint but is seen as non ack data. The result? IIRC, the sender is expected to send and send again until it sends the expected data, that is the correct ack packet So, in short word, IMHO, you are sending correct ack+wrong data = wrong data as a whole... hope it helps...and please send the code (patch preferred against original tcp_output.c, you are modifying this file, right?) so we can help further. regards Mulyadi -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/