be2net: eliminate enable field from be_aic_obj
authorIvan Vecera <ivecera@redhat.com>
Fri, 16 Aug 2019 07:15:35 +0000 (09:15 +0200)
committerDavid S. Miller <davem@davemloft.net>
Sun, 18 Aug 2019 21:14:33 +0000 (14:14 -0700)
Adaptive coalescing is managed per adapter not per event queue so it
does not needed to store 'enable' flag for each event queue.

Signed-off-by: Ivan Vecera <ivecera@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/emulex/benet/be.h
drivers/net/ethernet/emulex/benet/be_ethtool.c
drivers/net/ethernet/emulex/benet/be_main.c

index f287b5da55461444fd9d70ba8226d539860c098c..cf3e6f2892ff23f225a03991dc10be649fce51fb 100644 (file)
@@ -192,7 +192,6 @@ struct be_eq_obj {
 } ____cacheline_aligned_in_smp;
 
 struct be_aic_obj {            /* Adaptive interrupt coalescing (AIC) info */
-       bool enable;
        u32 min_eqd;            /* in usecs */
        u32 max_eqd;            /* in usecs */
        u32 prev_eqd;           /* in usecs */
@@ -589,6 +588,7 @@ struct be_adapter {
 
        struct be_drv_stats drv_stats;
        struct be_aic_obj aic_obj[MAX_EVT_QS];
+       bool aic_enabled;
        u8 vlan_prio_bmap;      /* Available Priority BitMap */
        u16 recommended_prio_bits;/* Recommended Priority bits in vlan tag */
        struct be_dma_mem rx_filter; /* Cmd DMA mem for rx-filter */
index 492f8769ac12c2339aabfc4a0f718cac19a26a8a..5bb5abf99588747a5738e102e559f5e4108a8181 100644 (file)
@@ -329,8 +329,8 @@ static int be_get_coalesce(struct net_device *netdev,
        et->tx_coalesce_usecs_high = aic->max_eqd;
        et->tx_coalesce_usecs_low = aic->min_eqd;
 
-       et->use_adaptive_rx_coalesce = aic->enable;
-       et->use_adaptive_tx_coalesce = aic->enable;
+       et->use_adaptive_rx_coalesce = adapter->aic_enabled;
+       et->use_adaptive_tx_coalesce = adapter->aic_enabled;
 
        return 0;
 }
@@ -346,8 +346,9 @@ static int be_set_coalesce(struct net_device *netdev,
        struct be_eq_obj *eqo;
        int i;
 
+       adapter->aic_enabled = et->use_adaptive_rx_coalesce;
+
        for_all_evt_queues(adapter, eqo, i) {
-               aic->enable = et->use_adaptive_rx_coalesce;
                aic->max_eqd = min(et->rx_coalesce_usecs_high, BE_MAX_EQD);
                aic->min_eqd = min(et->rx_coalesce_usecs_low, aic->max_eqd);
                aic->et_eqd = min(et->rx_coalesce_usecs, aic->max_eqd);
index 314e9868b86187ab63a7f995e2c5b75fcf15c5d4..39eb7d525043dd7c8668ccfe3fdc53e9a1bd37ef 100644 (file)
@@ -2147,7 +2147,7 @@ static int be_get_new_eqd(struct be_eq_obj *eqo)
        int i;
 
        aic = &adapter->aic_obj[eqo->idx];
-       if (!aic->enable) {
+       if (!adapter->aic_enabled) {
                if (aic->jiffies)
                        aic->jiffies = 0;
                eqd = aic->et_eqd;
@@ -2204,7 +2204,7 @@ static u32 be_get_eq_delay_mult_enc(struct be_eq_obj *eqo)
        int eqd;
        u32 mult_enc;
 
-       if (!aic->enable)
+       if (!adapter->aic_enabled)
                return 0;
 
        if (jiffies_to_msecs(now - aic->jiffies) < 1)
@@ -2959,6 +2959,8 @@ static int be_evt_queues_create(struct be_adapter *adapter)
                                    max(adapter->cfg_num_rx_irqs,
                                        adapter->cfg_num_tx_irqs));
 
+       adapter->aic_enabled = true;
+
        for_all_evt_queues(adapter, eqo, i) {
                int numa_node = dev_to_node(&adapter->pdev->dev);
 
@@ -2966,7 +2968,6 @@ static int be_evt_queues_create(struct be_adapter *adapter)
                eqo->adapter = adapter;
                eqo->idx = i;
                aic->max_eqd = BE_MAX_EQD;
-               aic->enable = true;
 
                eq = &eqo->q;
                rc = be_queue_alloc(adapter, eq, EVNT_Q_LEN,