Explorar el Código

qcacmn: Hook checksum offload INI key to DP TX path

Enable or disable TCP\UCP checksum offload for TX according
to the flag in wlan cfg module, which is determined by INI
(MCL) or initialization setting(WIN).

CRs-Fixed: 2155236
Change-Id: I0e30fc062a000c2d9c47674fe80da59a2ac0de51
chenguo hace 7 años
padre
commit
8d0c219dde
Se han modificado 3 ficheros con 19 adiciones y 2 borrados
  1. 4 2
      dp/wifi3.0/dp_tx.c
  2. 7 0
      wlan_cfg/wlan_cfg.c
  3. 8 0
      wlan_cfg/wlan_cfg.h

+ 4 - 2
dp/wifi3.0/dp_tx.c

@@ -828,8 +828,10 @@ static QDF_STATUS dp_tx_hw_enqueue(struct dp_soc *soc, struct dp_vdev *vdev,
 	hal_tx_desc_set_addr_search_flags(hal_tx_desc_cached,
 			vdev->hal_desc_addr_search_flags);
 
-	if ((qdf_nbuf_get_tx_cksum(tx_desc->nbuf) == QDF_NBUF_TX_CKSUM_TCP_UDP)
-		|| qdf_nbuf_is_tso(tx_desc->nbuf))  {
+	/* verify checksum offload configuration*/
+	if ((wlan_cfg_get_checksum_offload(soc->wlan_cfg_ctx)) &&
+		((qdf_nbuf_get_tx_cksum(tx_desc->nbuf) == QDF_NBUF_TX_CKSUM_TCP_UDP)
+		|| qdf_nbuf_is_tso(tx_desc->nbuf)))  {
 		hal_tx_desc_set_l3_checksum_en(hal_tx_desc_cached, 1);
 		hal_tx_desc_set_l4_checksum_en(hal_tx_desc_cached, 1);
 	}

+ 7 - 0
wlan_cfg/wlan_cfg.c

@@ -348,6 +348,8 @@ struct wlan_cfg_dp_soc_ctxt *wlan_cfg_soc_attach()
 		wlan_cfg_set_hw_macid(wlan_cfg_ctx, 2, 2);
 
 	wlan_cfg_ctx->base_hw_macid = 1;
+	/*Enable checksum offload by default*/
+	wlan_cfg_ctx->tcp_udp_checksumoffload = 1;
 
 	return wlan_cfg_ctx;
 }
@@ -690,6 +692,11 @@ int wlan_cfg_get_int_timer_threshold_other(struct wlan_cfg_dp_soc_ctxt *cfg)
 {
 	return cfg->int_timer_threshold_other;
 }
+
+int wlan_cfg_get_checksum_offload(struct wlan_cfg_dp_soc_ctxt *cfg)
+{
+	return cfg->tcp_udp_checksumoffload;
+}
 #ifdef QCA_LL_TX_FLOW_CONTROL_V2
 /**
  * wlan_cfg_get_tx_flow_stop_queue_th() - Get flow control stop threshold

+ 8 - 0
wlan_cfg/wlan_cfg.h

@@ -626,6 +626,14 @@ int wlan_cfg_get_int_batch_threshold_other(struct wlan_cfg_dp_soc_ctxt *cfg);
  */
 int wlan_cfg_get_int_timer_threshold_other(struct wlan_cfg_dp_soc_ctxt *cfg);
 
+/*
+ * wlan_cfg_get_checksum_offload - Get checksum offload enable or disable status
+ * @wlan_cfg_soc_ctx
+ *
+ * Return: Checksum offload enable or disable
+ */
+int wlan_cfg_get_checksum_offload(struct wlan_cfg_dp_soc_ctxt *cfg);
+
 /*
  * wlan_cfg_tx_ring_size - Get Tx DMA ring size (TCL Data Ring)
  * @wlan_cfg_soc_ctx