|
@@ -1555,9 +1555,8 @@ static void ixgbe_configure_msix(struct ixgbe_adapter *adapter)
|
|
q_vector->eitr = adapter->rx_eitr_param;
|
|
q_vector->eitr = adapter->rx_eitr_param;
|
|
|
|
|
|
ixgbe_write_eitr(q_vector);
|
|
ixgbe_write_eitr(q_vector);
|
|
- /* If Flow Director is enabled, set interrupt affinity */
|
|
|
|
- if ((adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE) ||
|
|
|
|
- (adapter->flags & IXGBE_FLAG_FDIR_PERFECT_CAPABLE)) {
|
|
|
|
|
|
+ /* If ATR is enabled, set interrupt affinity */
|
|
|
|
+ if (adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE) {
|
|
/*
|
|
/*
|
|
* Allocate the affinity_hint cpumask, assign the mask
|
|
* Allocate the affinity_hint cpumask, assign the mask
|
|
* for this vector, and set our affinity_hint for
|
|
* for this vector, and set our affinity_hint for
|
|
@@ -2468,8 +2467,7 @@ static inline void ixgbe_irq_enable(struct ixgbe_adapter *adapter, bool queues,
|
|
default:
|
|
default:
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
- if (adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE ||
|
|
|
|
- adapter->flags & IXGBE_FLAG_FDIR_PERFECT_CAPABLE)
|
|
|
|
|
|
+ if (adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE)
|
|
mask |= IXGBE_EIMS_FLOW_DIR;
|
|
mask |= IXGBE_EIMS_FLOW_DIR;
|
|
|
|
|
|
IXGBE_WRITE_REG(&adapter->hw, IXGBE_EIMS, mask);
|
|
IXGBE_WRITE_REG(&adapter->hw, IXGBE_EIMS, mask);
|
|
@@ -3767,8 +3765,6 @@ static void ixgbe_configure(struct ixgbe_adapter *adapter)
|
|
adapter->tx_ring[i]->atr_sample_rate =
|
|
adapter->tx_ring[i]->atr_sample_rate =
|
|
adapter->atr_sample_rate;
|
|
adapter->atr_sample_rate;
|
|
ixgbe_init_fdir_signature_82599(hw, adapter->fdir_pballoc);
|
|
ixgbe_init_fdir_signature_82599(hw, adapter->fdir_pballoc);
|
|
- } else if (adapter->flags & IXGBE_FLAG_FDIR_PERFECT_CAPABLE) {
|
|
|
|
- ixgbe_init_fdir_perfect_82599(hw, adapter->fdir_pballoc);
|
|
|
|
}
|
|
}
|
|
ixgbe_configure_virtualization(adapter);
|
|
ixgbe_configure_virtualization(adapter);
|
|
|
|
|
|
@@ -4334,15 +4330,13 @@ static inline bool ixgbe_set_fdir_queues(struct ixgbe_adapter *adapter)
|
|
f_fdir->mask = 0;
|
|
f_fdir->mask = 0;
|
|
|
|
|
|
/* Flow Director must have RSS enabled */
|
|
/* Flow Director must have RSS enabled */
|
|
- if (adapter->flags & IXGBE_FLAG_RSS_ENABLED &&
|
|
|
|
- ((adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE ||
|
|
|
|
- (adapter->flags & IXGBE_FLAG_FDIR_PERFECT_CAPABLE)))) {
|
|
|
|
|
|
+ if ((adapter->flags & IXGBE_FLAG_RSS_ENABLED) &&
|
|
|
|
+ (adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE)) {
|
|
adapter->num_tx_queues = f_fdir->indices;
|
|
adapter->num_tx_queues = f_fdir->indices;
|
|
adapter->num_rx_queues = f_fdir->indices;
|
|
adapter->num_rx_queues = f_fdir->indices;
|
|
ret = true;
|
|
ret = true;
|
|
} else {
|
|
} else {
|
|
adapter->flags &= ~IXGBE_FLAG_FDIR_HASH_CAPABLE;
|
|
adapter->flags &= ~IXGBE_FLAG_FDIR_HASH_CAPABLE;
|
|
- adapter->flags &= ~IXGBE_FLAG_FDIR_PERFECT_CAPABLE;
|
|
|
|
}
|
|
}
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|
|
@@ -4372,12 +4366,12 @@ static inline bool ixgbe_set_fcoe_queues(struct ixgbe_adapter *adapter)
|
|
|
|
|
|
if (adapter->flags & IXGBE_FLAG_RSS_ENABLED) {
|
|
if (adapter->flags & IXGBE_FLAG_RSS_ENABLED) {
|
|
e_info(probe, "FCoE enabled with RSS\n");
|
|
e_info(probe, "FCoE enabled with RSS\n");
|
|
- if ((adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE) ||
|
|
|
|
- (adapter->flags & IXGBE_FLAG_FDIR_PERFECT_CAPABLE))
|
|
|
|
|
|
+ if (adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE)
|
|
ixgbe_set_fdir_queues(adapter);
|
|
ixgbe_set_fdir_queues(adapter);
|
|
else
|
|
else
|
|
ixgbe_set_rss_queues(adapter);
|
|
ixgbe_set_rss_queues(adapter);
|
|
}
|
|
}
|
|
|
|
+
|
|
/* adding FCoE rx rings to the end */
|
|
/* adding FCoE rx rings to the end */
|
|
f->mask = adapter->num_rx_queues;
|
|
f->mask = adapter->num_rx_queues;
|
|
adapter->num_rx_queues += f->indices;
|
|
adapter->num_rx_queues += f->indices;
|
|
@@ -4670,9 +4664,8 @@ static inline bool ixgbe_cache_ring_fdir(struct ixgbe_adapter *adapter)
|
|
int i;
|
|
int i;
|
|
bool ret = false;
|
|
bool ret = false;
|
|
|
|
|
|
- if (adapter->flags & IXGBE_FLAG_RSS_ENABLED &&
|
|
|
|
- ((adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE) ||
|
|
|
|
- (adapter->flags & IXGBE_FLAG_FDIR_PERFECT_CAPABLE))) {
|
|
|
|
|
|
+ if ((adapter->flags & IXGBE_FLAG_RSS_ENABLED) &&
|
|
|
|
+ (adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE)) {
|
|
for (i = 0; i < adapter->num_rx_queues; i++)
|
|
for (i = 0; i < adapter->num_rx_queues; i++)
|
|
adapter->rx_ring[i]->reg_idx = i;
|
|
adapter->rx_ring[i]->reg_idx = i;
|
|
for (i = 0; i < adapter->num_tx_queues; i++)
|
|
for (i = 0; i < adapter->num_tx_queues; i++)
|
|
@@ -4701,8 +4694,7 @@ static inline bool ixgbe_cache_ring_fcoe(struct ixgbe_adapter *adapter)
|
|
return false;
|
|
return false;
|
|
|
|
|
|
if (adapter->flags & IXGBE_FLAG_RSS_ENABLED) {
|
|
if (adapter->flags & IXGBE_FLAG_RSS_ENABLED) {
|
|
- if ((adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE) ||
|
|
|
|
- (adapter->flags & IXGBE_FLAG_FDIR_PERFECT_CAPABLE))
|
|
|
|
|
|
+ if (adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE)
|
|
ixgbe_cache_ring_fdir(adapter);
|
|
ixgbe_cache_ring_fdir(adapter);
|
|
else
|
|
else
|
|
ixgbe_cache_ring_rss(adapter);
|
|
ixgbe_cache_ring_rss(adapter);
|
|
@@ -4882,14 +4874,12 @@ static int ixgbe_set_interrupt_capability(struct ixgbe_adapter *adapter)
|
|
|
|
|
|
adapter->flags &= ~IXGBE_FLAG_DCB_ENABLED;
|
|
adapter->flags &= ~IXGBE_FLAG_DCB_ENABLED;
|
|
adapter->flags &= ~IXGBE_FLAG_RSS_ENABLED;
|
|
adapter->flags &= ~IXGBE_FLAG_RSS_ENABLED;
|
|
- if (adapter->flags & (IXGBE_FLAG_FDIR_HASH_CAPABLE |
|
|
|
|
- IXGBE_FLAG_FDIR_PERFECT_CAPABLE)) {
|
|
|
|
|
|
+ if (adapter->flags & IXGBE_FLAG_FDIR_HASH_CAPABLE) {
|
|
e_err(probe,
|
|
e_err(probe,
|
|
- "Flow Director is not supported while multiple "
|
|
|
|
|
|
+ "ATR is not supported while multiple "
|
|
"queues are disabled. Disabling Flow Director\n");
|
|
"queues are disabled. Disabling Flow Director\n");
|
|
}
|
|
}
|
|
adapter->flags &= ~IXGBE_FLAG_FDIR_HASH_CAPABLE;
|
|
adapter->flags &= ~IXGBE_FLAG_FDIR_HASH_CAPABLE;
|
|
- adapter->flags &= ~IXGBE_FLAG_FDIR_PERFECT_CAPABLE;
|
|
|
|
adapter->atr_sample_rate = 0;
|
|
adapter->atr_sample_rate = 0;
|
|
if (adapter->flags & IXGBE_FLAG_SRIOV_ENABLED)
|
|
if (adapter->flags & IXGBE_FLAG_SRIOV_ENABLED)
|
|
ixgbe_disable_sriov(adapter);
|
|
ixgbe_disable_sriov(adapter);
|