OSDN Git Service

staging: wfx: simplify wfx_tx_queue_get_num_queued()
authorJérôme Pouiller <jerome.pouiller@silabs.com>
Wed, 15 Jan 2020 13:55:35 +0000 (13:55 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 16 Jan 2020 19:59:53 +0000 (20:59 +0100)
wfx_tx_queue_get_num_queued() can take advantage of BIT() instead of
maintaining one variable for a counter and another for a mask.

In add, wfx_tx_queue_get_num_queued() has no real reason to return a
size_t instead of an int.

Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
Link: https://lore.kernel.org/r/20200115135338.14374-64-Jerome.Pouiller@silabs.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/wfx/queue.c
drivers/staging/wfx/queue.h

index 024497e..0bcc61f 100644 (file)
@@ -175,11 +175,9 @@ void wfx_tx_queues_deinit(struct wfx_dev *wdev)
        wfx_tx_queues_clear(wdev);
 }
 
-size_t wfx_tx_queue_get_num_queued(struct wfx_queue *queue,
-                                  u32 link_id_map)
+int wfx_tx_queue_get_num_queued(struct wfx_queue *queue, u32 link_id_map)
 {
-       size_t ret;
-       int i, bit;
+       int ret, i;
 
        if (!link_id_map)
                return 0;
@@ -189,11 +187,9 @@ size_t wfx_tx_queue_get_num_queued(struct wfx_queue *queue,
                ret = skb_queue_len(&queue->queue);
        } else {
                ret = 0;
-               for (i = 0, bit = 1; i < ARRAY_SIZE(queue->link_map_cache);
-                    ++i, bit <<= 1) {
-                       if (link_id_map & bit)
+               for (i = 0; i < ARRAY_SIZE(queue->link_map_cache); i++)
+                       if (link_id_map & BIT(i))
                                ret += queue->link_map_cache[i];
-               }
        }
        spin_unlock_bh(&queue->queue.lock);
        return ret;
@@ -555,7 +551,7 @@ struct hif_msg *wfx_tx_queues_get(struct wfx_dev *wdev)
 
                /* allow bursting if txop is set */
                if (wvif->edca_params[queue_num].txop)
-                       burst = (int)wfx_tx_queue_get_num_queued(queue, tx_allowed_mask) + 1;
+                       burst = wfx_tx_queue_get_num_queued(queue, tx_allowed_mask) + 1;
                else
                        burst = 1;
 
index 096ae86..90bb060 100644 (file)
@@ -51,7 +51,7 @@ struct hif_msg *wfx_tx_queues_get_after_dtim(struct wfx_vif *wvif);
 
 void wfx_tx_queue_put(struct wfx_dev *wdev, struct wfx_queue *queue,
                      struct sk_buff *skb);
-size_t wfx_tx_queue_get_num_queued(struct wfx_queue *queue, u32 link_id_map);
+int wfx_tx_queue_get_num_queued(struct wfx_queue *queue, u32 link_id_map);
 
 struct sk_buff *wfx_pending_get(struct wfx_dev *wdev, u32 packet_id);
 int wfx_pending_remove(struct wfx_dev *wdev, struct sk_buff *skb);