ath10k: enable wlan hardware checksum for wcn3990

Add checksum offload flag for the TCP/UDP packet in
Tx path for the wcn3990 wlan module hardware.

CRs-Fixed: 2015363
Change-Id: Icd47de8633bb2375c43c5acdf730a0082bfc1b88
Signed-off-by: Rakesh Pillai <pillair@codeaurora.org>
This commit is contained in:
Rakesh Pillai 2017-03-06 19:17:02 +05:30 committed by Gerrit - the friendly Code Review server
parent 048c70075f
commit 836015bad3
3 changed files with 22 additions and 5 deletions

View file

@ -122,6 +122,19 @@ struct htt_msdu_ext_desc {
| HTT_MSDU_EXT_DESC_FLAG_TCP_IPV4_CSUM_ENABLE \
| HTT_MSDU_EXT_DESC_FLAG_TCP_IPV6_CSUM_ENABLE)
#define HTT_TX_IPV4_CSUM_EN BIT(16)
#define HTT_TX_UDP_IPV4_CSUM_EN BIT(17)
#define HTT_TX_UDP_IPV6_CSUM_EN BIT(18)
#define HTT_TX_TCP_IPV4_CSUM_EN BIT(19)
#define HTT_TX_TCP_IPV6_CSUM_EN BIT(20)
#define HTT_TX_PARTIAL_CSUM_EN BIT(21)
#define HTT_TX_CHECKSUM_ENABLE (HTT_TX_IPV4_CSUM_EN \
| HTT_TX_UDP_IPV4_CSUM_EN \
| HTT_TX_UDP_IPV6_CSUM_EN \
| HTT_TX_TCP_IPV4_CSUM_EN \
| HTT_TX_TCP_IPV6_CSUM_EN)
enum htt_data_tx_desc_flags0 {
HTT_DATA_TX_DESC_FLAGS0_MAC_HDR_PRESENT = 1 << 0,
HTT_DATA_TX_DESC_FLAGS0_NO_AGGR = 1 << 1,

View file

@ -1051,8 +1051,14 @@ int ath10k_htt_tx(struct ath10k_htt *htt, enum ath10k_hw_txrx_mode txmode,
!test_bit(ATH10K_FLAG_RAW_MODE, &ar->dev_flags)) {
flags1 |= HTT_DATA_TX_DESC_FLAGS1_CKSUM_L3_OFFLOAD;
flags1 |= HTT_DATA_TX_DESC_FLAGS1_CKSUM_L4_OFFLOAD;
if (ar->hw_params.continuous_frag_desc)
if (ar->hw_params.continuous_frag_desc) {
ext_desc->flags |= HTT_MSDU_CHECKSUM_ENABLE;
if (QCA_REV_WCN3990(ar)) {
memset(ext_desc->tso_flag, 0,
sizeof(ext_desc->tso_flag));
ext_desc->tso_flag[3] |= HTT_TX_CHECKSUM_ENABLE;
}
}
}
/* Prevent firmware from sending up tx inspection requests. There's

View file

@ -7998,10 +7998,8 @@ int ath10k_mac_register(struct ath10k *ar)
goto err_free;
}
if (!QCA_REV_WCN3990(ar)) {
if (!test_bit(ATH10K_FLAG_RAW_MODE, &ar->dev_flags))
ar->hw->netdev_features = NETIF_F_HW_CSUM;
}
if (!test_bit(ATH10K_FLAG_RAW_MODE, &ar->dev_flags))
ar->hw->netdev_features = NETIF_F_HW_CSUM;
if (IS_ENABLED(CONFIG_ATH10K_DFS_CERTIFIED)) {
/* Init ath dfs pattern detector */