<div dir="ltr">Thank you very much Pranay Srivastava. Will look at all your points and revert back if I have any issues.<br><br><br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, May 26, 2014 at 8:36 PM, Pranay Srivastava <span dir="ltr">&lt;<a href="mailto:pranjas@gmail.com" target="_blank">pranjas@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class=""><br><br>On Monday, May 26, 2014, Ramana Reddy &lt;<a href="mailto:gtvrreddy@gmail.com" target="_blank">gtvrreddy@gmail.com</a>&gt; wrote:<br>
&gt; Hi Pranay Srivastava,<br>&gt;<br>&gt; Thanks for your reply.  I just want to copy the payload into the buffer with out cloning<br>
&gt; or copying of skb to reduce the delay as it has to do on every packet.<br>&gt; Is there any method in the linux kernel to get only the payload after stripping off the<br>&gt; TCP header. <br><br></div>try not to do this in driver. because you&#39;ll need to strip quite some headers before you see your data. without moving the skb pointers it&#39;s going to be more messy. so i guess skb_clone you&#39;ll need to use at least.<br>

you can see that in the listen sock&#39;s data_ready callback. iam just guessing it might be doing this would need to see code. but nfs does like that so iam betting cifs must also be.<br><br>see if its possible to hookup sk_data_ready for sock. The point where the actual sock is allocated in cifs probably must be having a sk_data_ready handler. would be better to call the cifs data ready handler from your wrapper that you can install for that sk.<br>

<br>that way you wont have to mess around any header logic in your driver. perhaps you can pass around that skb to a thread that can read from cifs header in parallel since i doubt if that payload is going to be modified by cifs.<br>

<br>if Thats the case then you just do skb_clone for your processing since you might need to move pointers or maybe cifs handler does so. skb copy if cifs changes payload. copying would be costly cloning wont be that much.<div class="HOEnZb">
<div class="h5"><br>
<br>&gt;<br>&gt; Thanks,<br>&gt; Ramana.<br>&gt;<br>&gt;<br>&gt; On Mon, May 26, 2014 at 2:17 PM, Pranay Srivastava &lt;<a href="mailto:pranjas@gmail.com" target="_blank">pranjas@gmail.com</a>&gt; wrote:<br>&gt;&gt;<br>&gt;&gt; On Mon, May 26, 2014 at 1:20 PM, Ramana Reddy &lt;<a href="mailto:gtvrreddy@gmail.com" target="_blank">gtvrreddy@gmail.com</a>&gt; wrote:<br>

&gt;&gt; &gt; Thanks for your reply. First thing is that I do not want to modify the<br>&gt;&gt; &gt; existing cifs driver.<br>&gt;&gt; &gt; I have my own virtual Ethernet driver, where the skb buffer is available to<br>
&gt;&gt; &gt; parse. Now,<br>
&gt;&gt; &gt; I want to extract the cifs header from this skb buffer, and based on the<br>&gt;&gt; &gt; cifs header contents<br>&gt;&gt; &gt; ( mainly I am looking for return status), I have to redirect the packet to<br>
&gt;&gt; &gt; different destination.<br>
&gt;&gt;<br>&gt;&gt; skb_clone in case you won&#39;t modify the packet. (Data isn&#39;t copied here).<br>&gt;&gt;<br>&gt;&gt; skb_copy if you or the intended recipient would modify the skb.(Data<br>&gt;&gt; is copied here). Gives you a free pass to do anything.<br>

&gt;&gt;<br>&gt;&gt; For UDP packets I guess you&#39;ll also need to take off the UDP header<br>&gt;&gt; (last time I tried to read from skb of a UDP) but for TCP you&#39;ll have<br>&gt;&gt; your data ready no need<br>&gt;&gt; to strip off the TCP header. Just check in case the skb you&#39;ve<br>

&gt;&gt; contains fragments(For TCP connection) but since you only need CIFS<br>&gt;&gt; header I don&#39;t think you&#39;ll have to bother about that, as CIFS header<br>&gt;&gt; isn&#39;t that big.<br>&gt;&gt;<br>&gt;&gt; &gt;<br>

&gt;&gt; &gt; Thanks,<br>&gt;&gt; &gt; Ramana.<br>&gt;&gt; &gt;<br>&gt;&gt; &gt;<br>&gt;&gt; &gt; On Mon, May 26, 2014 at 12:34 PM, &lt;<a href="mailto:Valdis.Kletnieks@vt.edu" target="_blank">Valdis.Kletnieks@vt.edu</a>&gt; wrote:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; On Mon, 26 May 2014 12:21:12 +0530, Ramana Reddy said:<br>&gt;&gt; &gt;&gt;<br>&gt;&gt; &gt;&gt; &gt; I would like to know how to extract the cifs protocol header from skb<br>&gt;&gt; &gt;&gt; &gt; buffer in the linux<br>

&gt;&gt; &gt;&gt; &gt; kernel. I want to parse the cifs header and do some stuff based on the<br>&gt;&gt; &gt;&gt; &gt; content of the header.<br>&gt;&gt; &gt;&gt;<br>&gt;&gt; &gt;&gt; Depending what you are trying to do, it may be best to add your code<br>

&gt;&gt; &gt;&gt; to the CIFS driver at the points where the driver is examining the<br>&gt;&gt; &gt;&gt; header fields in question.<br>&gt;&gt; &gt;&gt;<br>&gt;&gt; &gt;&gt; What &quot;do some stuff&quot; are you trying to achieve?<br>

&gt;&gt; &gt;<br>&gt;&gt; &gt;<br>&gt;&gt; &gt;<br>&gt;&gt; &gt; _______________________________________________<br>&gt;&gt; &gt; Kernelnewbies mailing list<br>&gt;&gt; &gt; <a href="mailto:Kernelnewbies@kernelnewbies.org" target="_blank">Kernelnewbies@kernelnewbies.org</a><br>

&gt;&gt; &gt; <a href="http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies" target="_blank">http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies</a><br>&gt;&gt; &gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;<br>
&gt;&gt; --<br>
&gt;&gt;         ---P.K.S<br>&gt;<br>&gt;<br><br></div></div><span class="HOEnZb"><font color="#888888">-- <br>        ---P.K.S<br><br>
</font></span></blockquote></div><br></div>