diff --git a/core/hdd/src/wlan_hdd_nan_datapath.c b/core/hdd/src/wlan_hdd_nan_datapath.c index c82af734a8..7946b5865f 100644 --- a/core/hdd/src/wlan_hdd_nan_datapath.c +++ b/core/hdd/src/wlan_hdd_nan_datapath.c @@ -452,6 +452,7 @@ int hdd_init_nan_data_mode(struct hdd_adapter *adapter) { struct net_device *wlan_dev = adapter->dev; struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter); + void *soc; QDF_STATUS status; int32_t ret_val; mac_handle_t mac_handle; @@ -508,6 +509,22 @@ int hdd_init_nan_data_mode(struct hdd_adapter *adapter) if (0 != ret_val) hdd_err("WMI_PDEV_PARAM_BURST_ENABLE set failed %d", ret_val); + soc = cds_get_context(QDF_MODULE_ID_SOC); + /* + * In case of USB tethering, LRO is disabled. If SSR happened + * during that time, then as part of SSR init, do not enable + * the LRO again. Keep the LRO state same as before SSR. + */ + if (cdp_cfg_get(soc, cfg_dp_lro_enable) && + !(qdf_atomic_read(&hdd_ctx->vendor_disable_lro_flag))) + adapter->dev->features |= NETIF_F_LRO; + + if (cdp_cfg_get(soc, cfg_dp_enable_ip_tcp_udp_checksum_offload)) + adapter->dev->features |= NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM; + + adapter->dev->features |= NETIF_F_RXCSUM; + + hdd_set_tso_flags(hdd_ctx, adapter->dev); update_ndi_state(adapter, NAN_DATA_NDI_CREATING_STATE); return ret_val;