mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-04 09:34:12 +08:00
be2net: eliminate enable field from be_aic_obj
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>
This commit is contained in:
parent
e654f9f53b
commit
9041f047df
@ -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 */
|
||||
|
@ -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);
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user