diff --git a/drivers/net/wireless/rtl818x/rtl8187_dev.c b/drivers/net/wireless/rtl818x/rtl8187_dev.c index 9212cea..08d04a3 100644 --- a/drivers/net/wireless/rtl818x/rtl8187_dev.c +++ b/drivers/net/wireless/rtl818x/rtl8187_dev.c @@ -258,7 +258,11 @@ static int rtl8187_tx(struct ieee80211_hw *dev, struct sk_buff *skb) hdr->flags = cpu_to_le32(flags); hdr->len = 0; hdr->rts_duration = rts_dur; - hdr->retry = cpu_to_le32((info->control.rates[0].count - 1) << 8); + if (!(info->flags & IEEE80211_TX_CTL_NO_ACK)) + hdr->retry = + cpu_to_le32((info->control.rates[0].count - 1) << 8); + else + hdr->retry = 0; buf = hdr; ep = 2; @@ -276,7 +280,11 @@ static int rtl8187_tx(struct ieee80211_hw *dev, struct sk_buff *skb) memset(hdr, 0, sizeof(*hdr)); hdr->flags = cpu_to_le32(flags); hdr->rts_duration = rts_dur; - hdr->retry = cpu_to_le32((info->control.rates[0].count - 1) << 8); + if (!(info->flags & IEEE80211_TX_CTL_NO_ACK)) + hdr->retry = + cpu_to_le32((info->control.rates[0].count - 1) << 8); + else + hdr->retry = 0; hdr->tx_duration = ieee80211_generic_frame_duration(dev, priv->vif, skb->len, txrate);