i40e: Delete ATR filter on RST
authorAnjali Singhai Jain <anjali.singhai@intel.com>
Thu, 6 Mar 2014 08:59:54 +0000 (08:59 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Fri, 28 Mar 2014 13:53:57 +0000 (06:53 -0700)
We currently delete ATR filter on FIN alone, delete on RST as well.

Change-ID: Ie7cae5d1046b9d1d4a0d6ef5bdbf41224c3dade6
Signed-off-by: Anjali Singhai Jain <anjali.singhai@intel.com>
Signed-off-by: Catherine Sullivan <catherine.sullivan@intel.com>
Tested-by: Kavindya Deegala <kavindya.s.deegala@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/i40e/i40e_txrx.c

index 851f6537a96aeb8766320fc536e5ea4436b985e1..de25a32f927e31cf3a1a7a95cfeb5d0f49ff4021 100644 (file)
@@ -1624,8 +1624,11 @@ static void i40e_atr(struct i40e_ring *tx_ring, struct sk_buff *skb,
 
        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;
 
        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 |= th->fin ?
+       dtype_cmd |= (th->fin || th->rst) ?
                     (I40E_FILTER_PROGRAM_DESC_PCMD_REMOVE <<
                      I40E_TXD_FLTR_QW1_PCMD_SHIFT) :
                     (I40E_FILTER_PROGRAM_DESC_PCMD_ADD_UPDATE <<