diff options
Diffstat (limited to 'drivers/net/wireless/rtl8180_dev.c')
-rw-r--r-- | drivers/net/wireless/rtl8180_dev.c | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/drivers/net/wireless/rtl8180_dev.c b/drivers/net/wireless/rtl8180_dev.c index e8d22393797f..6c226c024dd9 100644 --- a/drivers/net/wireless/rtl8180_dev.c +++ b/drivers/net/wireless/rtl8180_dev.c | |||
@@ -182,15 +182,13 @@ static void rtl8180_handle_tx(struct ieee80211_hw *dev, unsigned int prio) | |||
182 | skb->len, PCI_DMA_TODEVICE); | 182 | skb->len, PCI_DMA_TODEVICE); |
183 | 183 | ||
184 | info = IEEE80211_SKB_CB(skb); | 184 | info = IEEE80211_SKB_CB(skb); |
185 | memset(&info->status, 0, sizeof(info->status)); | 185 | ieee80211_tx_info_clear_status(info); |
186 | 186 | ||
187 | if (!(info->flags & IEEE80211_TX_CTL_NO_ACK)) { | 187 | if (!(info->flags & IEEE80211_TX_CTL_NO_ACK) && |
188 | if (flags & RTL818X_TX_DESC_FLAG_TX_OK) | 188 | (flags & RTL818X_TX_DESC_FLAG_TX_OK)) |
189 | info->flags |= IEEE80211_TX_STAT_ACK; | 189 | info->flags |= IEEE80211_TX_STAT_ACK; |
190 | else | 190 | |
191 | info->status.excessive_retries = 1; | 191 | info->status.rates[0].count = (flags & 0xFF) + 1; |
192 | } | ||
193 | info->status.retry_count = flags & 0xFF; | ||
194 | 192 | ||
195 | ieee80211_tx_status_irqsafe(dev, skb); | 193 | ieee80211_tx_status_irqsafe(dev, skb); |
196 | if (ring->entries - skb_queue_len(&ring->queue) == 2) | 194 | if (ring->entries - skb_queue_len(&ring->queue) == 2) |
@@ -243,6 +241,7 @@ static int rtl8180_tx(struct ieee80211_hw *dev, struct sk_buff *skb) | |||
243 | unsigned int idx, prio; | 241 | unsigned int idx, prio; |
244 | dma_addr_t mapping; | 242 | dma_addr_t mapping; |
245 | u32 tx_flags; | 243 | u32 tx_flags; |
244 | u8 rc_flags; | ||
246 | u16 plcp_len = 0; | 245 | u16 plcp_len = 0; |
247 | __le16 rts_duration = 0; | 246 | __le16 rts_duration = 0; |
248 | 247 | ||
@@ -261,15 +260,16 @@ static int rtl8180_tx(struct ieee80211_hw *dev, struct sk_buff *skb) | |||
261 | tx_flags |= RTL818X_TX_DESC_FLAG_DMA | | 260 | tx_flags |= RTL818X_TX_DESC_FLAG_DMA | |
262 | RTL818X_TX_DESC_FLAG_NO_ENC; | 261 | RTL818X_TX_DESC_FLAG_NO_ENC; |
263 | 262 | ||
264 | if (info->flags & IEEE80211_TX_CTL_USE_RTS_CTS) { | 263 | rc_flags = info->control.rates[0].flags; |
264 | if (rc_flags & IEEE80211_TX_RC_USE_RTS_CTS) { | ||
265 | tx_flags |= RTL818X_TX_DESC_FLAG_RTS; | 265 | tx_flags |= RTL818X_TX_DESC_FLAG_RTS; |
266 | tx_flags |= ieee80211_get_rts_cts_rate(dev, info)->hw_value << 19; | 266 | tx_flags |= ieee80211_get_rts_cts_rate(dev, info)->hw_value << 19; |
267 | } else if (info->flags & IEEE80211_TX_CTL_USE_CTS_PROTECT) { | 267 | } else if (rc_flags & IEEE80211_TX_RC_USE_CTS_PROTECT) { |
268 | tx_flags |= RTL818X_TX_DESC_FLAG_CTS; | 268 | tx_flags |= RTL818X_TX_DESC_FLAG_CTS; |
269 | tx_flags |= ieee80211_get_rts_cts_rate(dev, info)->hw_value << 19; | 269 | tx_flags |= ieee80211_get_rts_cts_rate(dev, info)->hw_value << 19; |
270 | } | 270 | } |
271 | 271 | ||
272 | if (info->flags & IEEE80211_TX_CTL_USE_RTS_CTS) | 272 | if (rc_flags & IEEE80211_TX_RC_USE_RTS_CTS) |
273 | rts_duration = ieee80211_rts_duration(dev, priv->vif, skb->len, | 273 | rts_duration = ieee80211_rts_duration(dev, priv->vif, skb->len, |
274 | info); | 274 | info); |
275 | 275 | ||
@@ -292,9 +292,9 @@ static int rtl8180_tx(struct ieee80211_hw *dev, struct sk_buff *skb) | |||
292 | entry->plcp_len = cpu_to_le16(plcp_len); | 292 | entry->plcp_len = cpu_to_le16(plcp_len); |
293 | entry->tx_buf = cpu_to_le32(mapping); | 293 | entry->tx_buf = cpu_to_le32(mapping); |
294 | entry->frame_len = cpu_to_le32(skb->len); | 294 | entry->frame_len = cpu_to_le32(skb->len); |
295 | entry->flags2 = info->control.retries[0].rate_idx >= 0 ? | 295 | entry->flags2 = info->control.rates[1].idx >= 0 ? |
296 | ieee80211_get_alt_retry_rate(dev, info, 0)->bitrate << 4 : 0; | 296 | ieee80211_get_alt_retry_rate(dev, info, 0)->bitrate << 4 : 0; |
297 | entry->retry_limit = info->control.retry_limit; | 297 | entry->retry_limit = info->control.rates[0].count; |
298 | entry->flags = cpu_to_le32(tx_flags); | 298 | entry->flags = cpu_to_le32(tx_flags); |
299 | __skb_queue_tail(&ring->queue, skb); | 299 | __skb_queue_tail(&ring->queue, skb); |
300 | if (ring->entries - skb_queue_len(&ring->queue) < 2) | 300 | if (ring->entries - skb_queue_len(&ring->queue) < 2) |
@@ -855,7 +855,7 @@ static int __devinit rtl8180_probe(struct pci_dev *pdev, | |||
855 | priv = dev->priv; | 855 | priv = dev->priv; |
856 | priv->pdev = pdev; | 856 | priv->pdev = pdev; |
857 | 857 | ||
858 | dev->max_altrates = 1; | 858 | dev->max_rates = 2; |
859 | SET_IEEE80211_DEV(dev, &pdev->dev); | 859 | SET_IEEE80211_DEV(dev, &pdev->dev); |
860 | pci_set_drvdata(pdev, dev); | 860 | pci_set_drvdata(pdev, dev); |
861 | 861 | ||