|
@@ -480,8 +480,14 @@ iwl_mvm_set_tx_params(struct iwl_mvm *mvm, struct sk_buff *skb,
|
|
struct iwl_tx_cmd_gen2 *cmd = (void *)dev_cmd->payload;
|
|
struct iwl_tx_cmd_gen2 *cmd = (void *)dev_cmd->payload;
|
|
u16 offload_assist = iwl_mvm_tx_csum(mvm, skb, hdr, info);
|
|
u16 offload_assist = iwl_mvm_tx_csum(mvm, skb, hdr, info);
|
|
|
|
|
|
|
|
+ if (ieee80211_is_data_qos(hdr->frame_control)) {
|
|
|
|
+ u8 *qc = ieee80211_get_qos_ctl(hdr);
|
|
|
|
+
|
|
|
|
+ if (*qc & IEEE80211_QOS_CTL_A_MSDU_PRESENT)
|
|
|
|
+ offload_assist |= BIT(TX_CMD_OFFLD_AMSDU);
|
|
|
|
+ }
|
|
|
|
+
|
|
/* padding is inserted later in transport */
|
|
/* padding is inserted later in transport */
|
|
- /* FIXME - check for AMSDU may need to be removed */
|
|
|
|
if (ieee80211_hdrlen(hdr->frame_control) % 4 &&
|
|
if (ieee80211_hdrlen(hdr->frame_control) % 4 &&
|
|
!(offload_assist & BIT(TX_CMD_OFFLD_AMSDU)))
|
|
!(offload_assist & BIT(TX_CMD_OFFLD_AMSDU)))
|
|
offload_assist |= BIT(TX_CMD_OFFLD_PAD);
|
|
offload_assist |= BIT(TX_CMD_OFFLD_PAD);
|