diff mbox series

[SRU,Bionic] net: hns: fix skb->truesize underestimation

Message ID 20190429190034.17818-1-dann.frazier@canonical.com
State New
Headers show
Series [SRU,Bionic] net: hns: fix skb->truesize underestimation | expand

Commit Message

dann frazier April 29, 2019, 7 p.m. UTC
From: Huazhong Tan <tanhuazhong@huawei.com>

BugLink: https://bugs.launchpad.net/bugs/1826911

skb->truesize is not meant to be tracking amount of used bytes in a skb,
but amount of reserved/consumed bytes in memory.

For instance, if we use a single byte in last page fragment, we have to
account the full size of the fragment.

So skb_add_rx_frag needs to calculate the length of the entire buffer into
turesize.

Fixes: 9cbe9fd5214e ("net: hns: optimize XGE capability by reducing cpu usage")
Signed-off-by: Huazhong tan <tanhuazhong@huawei.com>
Signed-off-by: Salil Mehta <salil.mehta@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit b1ccd4c0ab6ef499f47dd84ed4920502a7147bba)
Signed-off-by: dann frazier <dann.frazier@canonical.com>
---
 drivers/net/ethernet/hisilicon/hns/hns_enet.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Kleber Sacilotto de Souza May 6, 2019, 2:18 p.m. UTC | #1
On 4/29/19 9:00 PM, dann frazier wrote:
> From: Huazhong Tan <tanhuazhong@huawei.com>
> 
> BugLink: https://bugs.launchpad.net/bugs/1826911
> 
> skb->truesize is not meant to be tracking amount of used bytes in a skb,
> but amount of reserved/consumed bytes in memory.
> 
> For instance, if we use a single byte in last page fragment, we have to
> account the full size of the fragment.
> 
> So skb_add_rx_frag needs to calculate the length of the entire buffer into
> turesize.
> 
> Fixes: 9cbe9fd5214e ("net: hns: optimize XGE capability by reducing cpu usage")
> Signed-off-by: Huazhong tan <tanhuazhong@huawei.com>
> Signed-off-by: Salil Mehta <salil.mehta@huawei.com>
> Signed-off-by: David S. Miller <davem@davemloft.net>
> (cherry picked from commit b1ccd4c0ab6ef499f47dd84ed4920502a7147bba)
> Signed-off-by: dann frazier <dann.frazier@canonical.com>

Clean cherry-pick, limited to platform driver.

Acked-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com>

> ---
>  drivers/net/ethernet/hisilicon/hns/hns_enet.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/net/ethernet/hisilicon/hns/hns_enet.c b/drivers/net/ethernet/hisilicon/hns/hns_enet.c
> index ae860fe49d77e..e8511ef794b90 100644
> --- a/drivers/net/ethernet/hisilicon/hns/hns_enet.c
> +++ b/drivers/net/ethernet/hisilicon/hns/hns_enet.c
> @@ -430,7 +430,7 @@ static void hns_nic_reuse_page(struct sk_buff *skb, int i,
>  	}
>  
>  	skb_add_rx_frag(skb, i, desc_cb->priv, desc_cb->page_offset + pull_len,
> -			size - pull_len, truesize - pull_len);
> +			size - pull_len, truesize);
>  
>  	 /* avoid re-using remote pages,flag default unreuse */
>  	if (unlikely(page_to_nid(desc_cb->priv) != numa_node_id()))
>
Khalid Elmously May 7, 2019, 2:42 a.m. UTC | #2
On 2019-04-29 13:00:34 , dann frazier wrote:
> From: Huazhong Tan <tanhuazhong@huawei.com>
> 
> BugLink: https://bugs.launchpad.net/bugs/1826911
> 
> skb->truesize is not meant to be tracking amount of used bytes in a skb,
> but amount of reserved/consumed bytes in memory.
> 
> For instance, if we use a single byte in last page fragment, we have to
> account the full size of the fragment.
> 
> So skb_add_rx_frag needs to calculate the length of the entire buffer into
> turesize.
> 
> Fixes: 9cbe9fd5214e ("net: hns: optimize XGE capability by reducing cpu usage")
> Signed-off-by: Huazhong tan <tanhuazhong@huawei.com>
> Signed-off-by: Salil Mehta <salil.mehta@huawei.com>
> Signed-off-by: David S. Miller <davem@davemloft.net>
> (cherry picked from commit b1ccd4c0ab6ef499f47dd84ed4920502a7147bba)
> Signed-off-by: dann frazier <dann.frazier@canonical.com>
> ---
>  drivers/net/ethernet/hisilicon/hns/hns_enet.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/net/ethernet/hisilicon/hns/hns_enet.c b/drivers/net/ethernet/hisilicon/hns/hns_enet.c
> index ae860fe49d77e..e8511ef794b90 100644
> --- a/drivers/net/ethernet/hisilicon/hns/hns_enet.c
> +++ b/drivers/net/ethernet/hisilicon/hns/hns_enet.c
> @@ -430,7 +430,7 @@ static void hns_nic_reuse_page(struct sk_buff *skb, int i,
>  	}
>  
>  	skb_add_rx_frag(skb, i, desc_cb->priv, desc_cb->page_offset + pull_len,
> -			size - pull_len, truesize - pull_len);
> +			size - pull_len, truesize);
>  
>  	 /* avoid re-using remote pages,flag default unreuse */
>  	if (unlikely(page_to_nid(desc_cb->priv) != numa_node_id()))
> -- 
> 2.20.1
> 
> 
> -- 
> kernel-team mailing list
> kernel-team@lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team
Khalid Elmously May 7, 2019, 2:43 a.m. UTC | #3
On 2019-04-29 13:00:34 , dann frazier wrote:
> From: Huazhong Tan <tanhuazhong@huawei.com>
> 
> BugLink: https://bugs.launchpad.net/bugs/1826911
> 
> skb->truesize is not meant to be tracking amount of used bytes in a skb,
> but amount of reserved/consumed bytes in memory.
> 
> For instance, if we use a single byte in last page fragment, we have to
> account the full size of the fragment.
> 
> So skb_add_rx_frag needs to calculate the length of the entire buffer into
> turesize.
> 
> Fixes: 9cbe9fd5214e ("net: hns: optimize XGE capability by reducing cpu usage")
> Signed-off-by: Huazhong tan <tanhuazhong@huawei.com>
> Signed-off-by: Salil Mehta <salil.mehta@huawei.com>
> Signed-off-by: David S. Miller <davem@davemloft.net>
> (cherry picked from commit b1ccd4c0ab6ef499f47dd84ed4920502a7147bba)
> Signed-off-by: dann frazier <dann.frazier@canonical.com>
> ---
>  drivers/net/ethernet/hisilicon/hns/hns_enet.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/net/ethernet/hisilicon/hns/hns_enet.c b/drivers/net/ethernet/hisilicon/hns/hns_enet.c
> index ae860fe49d77e..e8511ef794b90 100644
> --- a/drivers/net/ethernet/hisilicon/hns/hns_enet.c
> +++ b/drivers/net/ethernet/hisilicon/hns/hns_enet.c
> @@ -430,7 +430,7 @@ static void hns_nic_reuse_page(struct sk_buff *skb, int i,
>  	}
>  
>  	skb_add_rx_frag(skb, i, desc_cb->priv, desc_cb->page_offset + pull_len,
> -			size - pull_len, truesize - pull_len);
> +			size - pull_len, truesize);
>  
>  	 /* avoid re-using remote pages,flag default unreuse */
>  	if (unlikely(page_to_nid(desc_cb->priv) != numa_node_id()))
> -- 
> 2.20.1
> 
> 
> -- 
> kernel-team mailing list
> kernel-team@lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team
diff mbox series

Patch

diff --git a/drivers/net/ethernet/hisilicon/hns/hns_enet.c b/drivers/net/ethernet/hisilicon/hns/hns_enet.c
index ae860fe49d77e..e8511ef794b90 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_enet.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_enet.c
@@ -430,7 +430,7 @@  static void hns_nic_reuse_page(struct sk_buff *skb, int i,
 	}
 
 	skb_add_rx_frag(skb, i, desc_cb->priv, desc_cb->page_offset + pull_len,
-			size - pull_len, truesize - pull_len);
+			size - pull_len, truesize);
 
 	 /* avoid re-using remote pages,flag default unreuse */
 	if (unlikely(page_to_nid(desc_cb->priv) != numa_node_id()))