qcacmn: Add NAN TX checksum offload INI entry

Currently there is a single INI item tcp_udp_checksumoffload to enable
or disable this feature for all the adapters. In some cases, we want to
be able to enable this feature selectively for NAN mode.

Add nan_tcp_udp_checksumoffload ini item to enable or disable checksum
offload feature specifically for NAN mode. If
nan_tcp_udp_checksumoffload is 'true' and tcp_udp_checksumoffload is
false, hardware checksum offload will be enabled only for the NAN
adapter and not for other adapters.

CRs-Fixed: 2693638
Change-Id: I6e255ce68ddc7b01ebdefe4e5e8d2c985388fefe
此提交包含在:
Mohit Khanna
2020-05-21 16:54:56 -07:00
提交者 nshrivas
父節點 d0b3820279
當前提交 97200aab9c
共有 9 個檔案被更改,包括 86 行新增4 行删除

查看文件

@@ -1212,8 +1212,8 @@ static QDF_STATUS dp_tx_hw_enqueue(struct dp_soc *soc, struct dp_vdev *vdev,
hal_tx_desc_set_to_fw(hal_tx_desc_cached, 1);
/* 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)
if (vdev->csum_enabled &&
((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);
@@ -4015,6 +4015,26 @@ qdf_nbuf_t dp_tx_non_std(struct cdp_soc_t *soc_hdl, uint8_t vdev_id,
}
#endif
static void dp_tx_vdev_update_feature_flags(struct dp_vdev *vdev)
{
struct wlan_cfg_dp_soc_ctxt *cfg;
struct dp_soc *soc;
soc = vdev->pdev->soc;
if (!soc)
return;
cfg = soc->wlan_cfg_ctx;
if (!cfg)
return;
if (vdev->opmode == wlan_op_mode_ndi)
vdev->csum_enabled = wlan_cfg_get_nan_checksum_offload(cfg);
else
vdev->csum_enabled = wlan_cfg_get_checksum_offload(cfg);
}
/**
* dp_tx_vdev_attach() - attach vdev to dp tx
* @vdev: virtual device instance
@@ -4046,6 +4066,8 @@ QDF_STATUS dp_tx_vdev_attach(struct dp_vdev *vdev)
dp_tx_vdev_update_search_flags(vdev);
dp_tx_vdev_update_feature_flags(vdev);
return QDF_STATUS_SUCCESS;
}