<html><body>
<p><tt>Hello, Roland,</tt><br>
<br>
<tt>Thanks for your quick review.</tt><br>
<br>
<tt>> Not sure I understand this.  Is there any possible configuration of<br>
> any architecture where Linux runs where PAGE_SIZE < 4096?<br>
</tt><br>
<tt>Technially it's a problem, pratically it's not since there is no architecture i can think of has PAGE_SIZE < 4096.</tt><br>
<tt><br>
>  > This patch allows IPoIB-UD MTU up to 4092 (4K - IPOIB_ENCAP_LEN) when<br>
>  > HCA can support 4K MTU. In this patch, APIs for S/G buffer allocation in<br>
>  > IPoIB-CM mode has been made generic so IPoIB-UD and IPoIB-CM can share<br>
>  > the S/G code.<br>
> <br>
> This approach seems overly complex to me, since it ends up going<br>
> through all the CM buffer fragment bookkeeping for the simple UD path.<br>
</tt><br>
<tt>No, it's not complex, only one buffer is allocated if the page_size is bigger enough and if it's 2K MTU. <br>
> So how about the following?  When using a UD MTU of 4096 with a page<br>
> size of 4096, allocate an skb of size 44 for the GRH and ethertype,<br>
> and then allocate a single page for the fragment list.  This means<br>
> that the IP packet will start nicely 16-byte aligned for free, and all<br>
> the bookkeeping is very simple.<br>
</tt><br>
<tt>It has 44 bytes head with another 4K page size without if condition check of mtu size and page size. Please look at the patches for detail.</tt><br>
<br>
<tt>thanks</tt><br>
<tt>Shirley </tt></body></html>