|
@@ -1624,8 +1624,11 @@ static void i40e_atr(struct i40e_ring *tx_ring, struct sk_buff *skb,
|
|
|
|
|
|
tx_ring->atr_count++;
|
|
tx_ring->atr_count++;
|
|
|
|
|
|
- /* sample on all syn/fin packets or once every atr sample rate */
|
|
|
|
- if (!th->fin && !th->syn && (tx_ring->atr_count < tx_ring->atr_sample_rate))
|
|
|
|
|
|
+ /* sample on all syn/fin/rst packets or once every atr sample rate */
|
|
|
|
+ if (!th->fin &&
|
|
|
|
+ !th->syn &&
|
|
|
|
+ !th->rst &&
|
|
|
|
+ (tx_ring->atr_count < tx_ring->atr_sample_rate))
|
|
return;
|
|
return;
|
|
|
|
|
|
tx_ring->atr_count = 0;
|
|
tx_ring->atr_count = 0;
|
|
@@ -1649,7 +1652,7 @@ static void i40e_atr(struct i40e_ring *tx_ring, struct sk_buff *skb,
|
|
|
|
|
|
dtype_cmd = I40E_TX_DESC_DTYPE_FILTER_PROG;
|
|
dtype_cmd = I40E_TX_DESC_DTYPE_FILTER_PROG;
|
|
|
|
|
|
- dtype_cmd |= th->fin ?
|
|
|
|
|
|
+ dtype_cmd |= (th->fin || th->rst) ?
|
|
(I40E_FILTER_PROGRAM_DESC_PCMD_REMOVE <<
|
|
(I40E_FILTER_PROGRAM_DESC_PCMD_REMOVE <<
|
|
I40E_TXD_FLTR_QW1_PCMD_SHIFT) :
|
|
I40E_TXD_FLTR_QW1_PCMD_SHIFT) :
|
|
(I40E_FILTER_PROGRAM_DESC_PCMD_ADD_UPDATE <<
|
|
(I40E_FILTER_PROGRAM_DESC_PCMD_ADD_UPDATE <<
|