Commit 9041f047 authored by Ivan Vecera's avatar Ivan Vecera Committed by David S. Miller
Browse files

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: default avatarIvan Vecera <ivecera@redhat.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e654f9f5
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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 */
+4 −3
Original line number Diff line number Diff line
@@ -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);
+4 −3
Original line number Diff line number Diff line
@@ -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,