OSDN Git Service

liquidio: simplify octeon_flush_iq()
authorDerek Chickles <derek.chickles@cavium.com>
Sat, 7 Jan 2017 01:16:12 +0000 (17:16 -0800)
committerDavid S. Miller <davem@davemloft.net>
Sun, 8 Jan 2017 22:13:14 +0000 (17:13 -0500)
Because every call to octeon_flush_iq() has a hardcoded 1 for the
pending_thresh argument, simplify that function by removing that argument.
This avoids one atomic read as well.

Signed-off-by: Derek Chickles <derek.chickles@cavium.com>
Signed-off-by: Felix Manlunas <felix.manlunas@cavium.com>
Signed-off-by: Satanand Burla <satananda.burla@cavium.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/cavium/liquidio/lio_main.c
drivers/net/ethernet/cavium/liquidio/lio_vf_main.c
drivers/net/ethernet/cavium/liquidio/octeon_iq.h
drivers/net/ethernet/cavium/liquidio/request_manager.c

index 6443bc1..13f67a3 100644 (file)
@@ -2441,7 +2441,7 @@ static int liquidio_napi_poll(struct napi_struct *napi, int budget)
        iq = oct->instr_queue[iq_no];
        if (iq) {
                /* Process iq buffers with in the budget limits */
-               tx_done = octeon_flush_iq(oct, iq, 1, budget);
+               tx_done = octeon_flush_iq(oct, iq, budget);
                /* Update iq read-index rather than waiting for next interrupt.
                 * Return back if tx_done is false.
                 */
index 70d96c1..55846f2 100644 (file)
@@ -1627,7 +1627,7 @@ static int liquidio_napi_poll(struct napi_struct *napi, int budget)
        iq = oct->instr_queue[iq_no];
        if (iq) {
                /* Process iq buffers with in the budget limits */
-               tx_done = octeon_flush_iq(oct, iq, 1, budget);
+               tx_done = octeon_flush_iq(oct, iq, budget);
                /* Update iq read-index rather than waiting for next interrupt.
                 * Return back if tx_done is false.
                 */
index e04ca8f..4608a5a 100644 (file)
@@ -369,5 +369,5 @@ int octeon_setup_iq(struct octeon_device *oct, int ifidx,
                    void *app_ctx);
 int
 octeon_flush_iq(struct octeon_device *oct, struct octeon_instr_queue *iq,
-               u32 pending_thresh, u32 napi_budget);
+               u32 napi_budget);
 #endif                         /* __OCTEON_IQ_H__ */
index 3ce6675..707bc15 100644 (file)
@@ -455,7 +455,7 @@ lio_process_iq_request_list(struct octeon_device *oct,
 /* Can only be called from process context */
 int
 octeon_flush_iq(struct octeon_device *oct, struct octeon_instr_queue *iq,
-               u32 pending_thresh, u32 napi_budget)
+               u32 napi_budget)
 {
        u32 inst_processed = 0;
        u32 tot_inst_processed = 0;
@@ -468,33 +468,32 @@ octeon_flush_iq(struct octeon_device *oct, struct octeon_instr_queue *iq,
 
        iq->octeon_read_index = oct->fn_list.update_iq_read_idx(iq);
 
-       if (atomic_read(&iq->instr_pending) >= (s32)pending_thresh) {
-               do {
-                       /* Process any outstanding IQ packets. */
-                       if (iq->flush_index == iq->octeon_read_index)
-                               break;
-
-                       if (napi_budget)
-                               inst_processed = lio_process_iq_request_list
-                                       (oct, iq,
-                                        napi_budget - tot_inst_processed);
-                       else
-                               inst_processed =
-                                       lio_process_iq_request_list(oct, iq, 0);
+       do {
+               /* Process any outstanding IQ packets. */
+               if (iq->flush_index == iq->octeon_read_index)
+                       break;
 
-                       if (inst_processed) {
-                               atomic_sub(inst_processed, &iq->instr_pending);
-                               iq->stats.instr_processed += inst_processed;
-                       }
+               if (napi_budget)
+                       inst_processed =
+                               lio_process_iq_request_list(oct, iq,
+                                                           napi_budget -
+                                                           tot_inst_processed);
+               else
+                       inst_processed =
+                               lio_process_iq_request_list(oct, iq, 0);
+
+               if (inst_processed) {
+                       atomic_sub(inst_processed, &iq->instr_pending);
+                       iq->stats.instr_processed += inst_processed;
+               }
 
-                       tot_inst_processed += inst_processed;
-                       inst_processed = 0;
+               tot_inst_processed += inst_processed;
+               inst_processed = 0;
 
-               } while (tot_inst_processed < napi_budget);
+       } while (tot_inst_processed < napi_budget);
 
-               if (napi_budget && (tot_inst_processed >= napi_budget))
-                       tx_done = 0;
-       }
+       if (napi_budget && (tot_inst_processed >= napi_budget))
+               tx_done = 0;
 
        iq->last_db_time = jiffies;
 
@@ -530,7 +529,7 @@ static void __check_db_timeout(struct octeon_device *oct, u64 iq_no)
        iq->last_db_time = jiffies;
 
        /* Flush the instruction queue */
-       octeon_flush_iq(oct, iq, 1, 0);
+       octeon_flush_iq(oct, iq, 0);
 
        lio_enable_irq(NULL, iq);
 }