]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
net: hns3: minor optimization for ring_space
authorYunsheng Lin <linyunsheng@huawei.com>
Mon, 19 Aug 2019 22:11:00 +0000 (00:11 +0200)
committerKleber Sacilotto de Souza <kleber.souza@canonical.com>
Tue, 17 Sep 2019 16:02:18 +0000 (18:02 +0200)
BugLink: https://bugs.launchpad.net/bugs/1840717
This patch optimizes the ring_space by calculating the
ring space without calling ring_dist.

Also ring_dist is only used by ring_space, so this patch
removes it when it is no longer used.

Signed-off-by: Yunsheng Lin <linyunsheng@huawei.com>
Signed-off-by: Peng Li <lipeng321@huawei.com>
Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit 0aa3d88a9197fd7176dbaf5db769837be6afdf46)
Signed-off-by: dann frazier <dann.frazier@canonical.com>
Acked-by: Stefan Bader <stefan.bader@canonical.com>
Acked-by: Connor Kuehl <connor.kuehl@canonical.com>
Signed-off-by: Kleber Sacilotto de Souza <kleber.souza@canonical.com>
drivers/net/ethernet/hisilicon/hns3/hns3_enet.h

index e55995e93bb08fbaabf077b75607cda9c2c04146..77f6e6cf3feadd84bd574eb91c80d2443b6b414c 100644 (file)
@@ -570,18 +570,13 @@ union l4_hdr_info {
        unsigned char *hdr;
 };
 
-/* the distance between [begin, end) in a ring buffer
- * note: there is a unuse slot between the begin and the end
- */
-static inline int ring_dist(struct hns3_enet_ring *ring, int begin, int end)
-{
-       return (end - begin + ring->desc_num) % ring->desc_num;
-}
-
 static inline int ring_space(struct hns3_enet_ring *ring)
 {
-       return ring->desc_num -
-               ring_dist(ring, ring->next_to_clean, ring->next_to_use) - 1;
+       int begin = ring->next_to_clean;
+       int end = ring->next_to_use;
+
+       return ((end >= begin) ? (ring->desc_num - end + begin) :
+                       (begin - end)) - 1;
 }
 
 static inline int is_ring_empty(struct hns3_enet_ring *ring)