diff options
author | Arnd Bergmann <arnd@arndb.de> | 2016-01-01 22:27:57 (GMT) |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-01-06 05:00:11 (GMT) |
commit | be78a690f50f38882220ceecda403478d477122e (patch) | |
tree | ae8dc8eb20a4dc94624ee2f428e58951e5d2bb07 /drivers/net/ethernet/hisilicon | |
parent | a72a5e2d34ec2921c0d9a7545093087e4cb90d0a (diff) | |
download | linux-be78a690f50f38882220ceecda403478d477122e.tar.xz |
net: hns: avoid uninitialized variable warning:
gcc fails to see that the use of the 'last_offset' variable
in hns_nic_reuse_page() is used correctly and issues a bogus
warning:
drivers/net/ethernet/hisilicon/hns/hns_enet.c: In function 'hns_nic_reuse_page':
drivers/net/ethernet/hisilicon/hns/hns_enet.c:541:6: warning: 'last_offset' may be used uninitialized in this function [-Wmaybe-uninitialized]
This simplifies the function to make it more obvious what is
going on to both readers and compilers, which makes the warning
go away.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/hisilicon')
-rw-r--r-- | drivers/net/ethernet/hisilicon/hns/hns_enet.c | 47 |
1 files changed, 22 insertions, 25 deletions
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_enet.c b/drivers/net/ethernet/hisilicon/hns/hns_enet.c index 5a81daf..0e30846 100644 --- a/drivers/net/ethernet/hisilicon/hns/hns_enet.c +++ b/drivers/net/ethernet/hisilicon/hns/hns_enet.c @@ -499,50 +499,47 @@ static void hns_nic_reuse_page(struct sk_buff *skb, int i, struct hnae_desc *desc; int truesize, size; int last_offset; + bool twobufs; + + twobufs = ((PAGE_SIZE < 8192) && hnae_buf_size(ring) == HNS_BUFFER_SIZE_2048); desc = &ring->desc[ring->next_to_clean]; size = le16_to_cpu(desc->rx.size); -#if (PAGE_SIZE < 8192) - if (hnae_buf_size(ring) == HNS_BUFFER_SIZE_2048) { + if (twobufs) { truesize = hnae_buf_size(ring); } else { truesize = ALIGN(size, L1_CACHE_BYTES); last_offset = hnae_page_size(ring) - hnae_buf_size(ring); } -#else - truesize = ALIGN(size, L1_CACHE_BYTES); - last_offset = hnae_page_size(ring) - hnae_buf_size(ring); -#endif - skb_add_rx_frag(skb, i, desc_cb->priv, desc_cb->page_offset + pull_len, size - pull_len, truesize - pull_len); /* avoid re-using remote pages,flag default unreuse */ - if (likely(page_to_nid(desc_cb->priv) == numa_node_id())) { -#if (PAGE_SIZE < 8192) - if (hnae_buf_size(ring) == HNS_BUFFER_SIZE_2048) { - /* if we are only owner of page we can reuse it */ - if (likely(page_count(desc_cb->priv) == 1)) { - /* flip page offset to other buffer */ - desc_cb->page_offset ^= truesize; - - desc_cb->reuse_flag = 1; - /* bump ref count on page before it is given*/ - get_page(desc_cb->priv); - } - return; - } -#endif - /* move offset up to the next cache line */ - desc_cb->page_offset += truesize; + if (unlikely(page_to_nid(desc_cb->priv) != numa_node_id())) + return; + + if (twobufs) { + /* if we are only owner of page we can reuse it */ + if (likely(page_count(desc_cb->priv) == 1)) { + /* flip page offset to other buffer */ + desc_cb->page_offset ^= truesize; - if (desc_cb->page_offset <= last_offset) { desc_cb->reuse_flag = 1; /* bump ref count on page before it is given*/ get_page(desc_cb->priv); } + return; + } + + /* move offset up to the next cache line */ + desc_cb->page_offset += truesize; + + if (desc_cb->page_offset <= last_offset) { + desc_cb->reuse_flag = 1; + /* bump ref count on page before it is given*/ + get_page(desc_cb->priv); } } |