tcp: fix tcp check tx offload issue 58/24258/7
authorSimon Zhang <yuwei1.zhang@intel.com>
Tue, 24 Dec 2019 12:02:20 +0000 (20:02 +0800)
committerFlorin Coras <florin.coras@gmail.com>
Wed, 15 Jan 2020 15:59:19 +0000 (15:59 +0000)
Type: fix

Signed-off-by: Simon Zhang <yuwei1.zhang@intel.com>
Change-Id: I3b8755831d762abf51e1cbe1b57024f9297de9a4
Signed-off-by: Simon Zhang <yuwei1.zhang@intel.com>
src/vnet/tcp/tcp_input.c

index cb5020d..cf74fb9 100755 (executable)
@@ -2438,11 +2438,15 @@ tcp_check_tx_offload (tcp_connection_t * tc, int is_ipv4)
     }
 
   lb = load_balance_get (lb_idx);
+  if (PREDICT_FALSE (lb->lb_n_buckets > 1))
+    return;
   dpo = load_balance_get_bucket_i (lb, 0);
 
-  sw_if_idx = dpo->dpoi_index;
-  hw_if = vnet_get_sup_hw_interface (vnm, sw_if_idx);
+  sw_if_idx = dpo_get_urpf (dpo);
+  if (PREDICT_FALSE (sw_if_idx == ~0))
+    return;
 
+  hw_if = vnet_get_sup_hw_interface (vnm, sw_if_idx);
   if (hw_if->flags & VNET_HW_INTERFACE_FLAG_SUPPORTS_GSO)
     tc->cfg_flags |= TCP_CFG_F_TSO;
 }