net: hns3: minor optimization for ring_space
[platform/kernel/linux-rpi.git] / drivers / net / ethernet / hisilicon / hns3 / hns3_enet.h
index 75669cd..025d0f7 100644 (file)
@@ -577,18 +577,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)