diff options
Diffstat (limited to 'drivers/net/wireless/rtl8180_dev.c')
-rw-r--r-- | drivers/net/wireless/rtl8180_dev.c | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/drivers/net/wireless/rtl8180_dev.c b/drivers/net/wireless/rtl8180_dev.c index c220998cee65..6263209b889e 100644 --- a/drivers/net/wireless/rtl8180_dev.c +++ b/drivers/net/wireless/rtl8180_dev.c | |||
@@ -257,24 +257,21 @@ static int rtl8180_tx(struct ieee80211_hw *dev, struct sk_buff *skb, | |||
257 | mapping = pci_map_single(priv->pdev, skb->data, | 257 | mapping = pci_map_single(priv->pdev, skb->data, |
258 | skb->len, PCI_DMA_TODEVICE); | 258 | skb->len, PCI_DMA_TODEVICE); |
259 | 259 | ||
260 | BUG_ON(!control->tx_rate); | ||
261 | |||
262 | tx_flags = RTL8180_TX_DESC_FLAG_OWN | RTL8180_TX_DESC_FLAG_FS | | 260 | tx_flags = RTL8180_TX_DESC_FLAG_OWN | RTL8180_TX_DESC_FLAG_FS | |
263 | RTL8180_TX_DESC_FLAG_LS | | 261 | RTL8180_TX_DESC_FLAG_LS | |
264 | (control->tx_rate->hw_value << 24) | skb->len; | 262 | (ieee80211_get_tx_rate(dev, control)->hw_value << 24) | |
263 | skb->len; | ||
265 | 264 | ||
266 | if (priv->r8185) | 265 | if (priv->r8185) |
267 | tx_flags |= RTL8180_TX_DESC_FLAG_DMA | | 266 | tx_flags |= RTL8180_TX_DESC_FLAG_DMA | |
268 | RTL8180_TX_DESC_FLAG_NO_ENC; | 267 | RTL8180_TX_DESC_FLAG_NO_ENC; |
269 | 268 | ||
270 | if (control->flags & IEEE80211_TXCTL_USE_RTS_CTS) { | 269 | if (control->flags & IEEE80211_TXCTL_USE_RTS_CTS) { |
271 | BUG_ON(!control->rts_cts_rate); | ||
272 | tx_flags |= RTL8180_TX_DESC_FLAG_RTS; | 270 | tx_flags |= RTL8180_TX_DESC_FLAG_RTS; |
273 | tx_flags |= control->rts_cts_rate->hw_value << 19; | 271 | tx_flags |= ieee80211_get_rts_cts_rate(dev, control)->hw_value << 19; |
274 | } else if (control->flags & IEEE80211_TXCTL_USE_CTS_PROTECT) { | 272 | } else if (control->flags & IEEE80211_TXCTL_USE_CTS_PROTECT) { |
275 | BUG_ON(!control->rts_cts_rate); | ||
276 | tx_flags |= RTL8180_TX_DESC_FLAG_CTS; | 273 | tx_flags |= RTL8180_TX_DESC_FLAG_CTS; |
277 | tx_flags |= control->rts_cts_rate->hw_value << 19; | 274 | tx_flags |= ieee80211_get_rts_cts_rate(dev, control)->hw_value << 19; |
278 | } | 275 | } |
279 | 276 | ||
280 | *((struct ieee80211_tx_control **) skb->cb) = | 277 | *((struct ieee80211_tx_control **) skb->cb) = |
@@ -288,9 +285,9 @@ static int rtl8180_tx(struct ieee80211_hw *dev, struct sk_buff *skb, | |||
288 | unsigned int remainder; | 285 | unsigned int remainder; |
289 | 286 | ||
290 | plcp_len = DIV_ROUND_UP(16 * (skb->len + 4), | 287 | plcp_len = DIV_ROUND_UP(16 * (skb->len + 4), |
291 | (control->tx_rate->bitrate * 2) / 10); | 288 | (ieee80211_get_tx_rate(dev, control)->bitrate * 2) / 10); |
292 | remainder = (16 * (skb->len + 4)) % | 289 | remainder = (16 * (skb->len + 4)) % |
293 | ((control->tx_rate->bitrate * 2) / 10); | 290 | ((ieee80211_get_tx_rate(dev, control)->bitrate * 2) / 10); |
294 | if (remainder > 0 && remainder <= 6) | 291 | if (remainder > 0 && remainder <= 6) |
295 | plcp_len |= 1 << 15; | 292 | plcp_len |= 1 << 15; |
296 | } | 293 | } |
@@ -303,8 +300,8 @@ static int rtl8180_tx(struct ieee80211_hw *dev, struct sk_buff *skb, | |||
303 | entry->plcp_len = cpu_to_le16(plcp_len); | 300 | entry->plcp_len = cpu_to_le16(plcp_len); |
304 | entry->tx_buf = cpu_to_le32(mapping); | 301 | entry->tx_buf = cpu_to_le32(mapping); |
305 | entry->frame_len = cpu_to_le32(skb->len); | 302 | entry->frame_len = cpu_to_le32(skb->len); |
306 | entry->flags2 = control->alt_retry_rate != NULL ? | 303 | entry->flags2 = control->alt_retry_rate_idx >= 0 ? |
307 | control->alt_retry_rate->bitrate << 4 : 0; | 304 | ieee80211_get_alt_retry_rate(dev, control)->bitrate << 4 : 0; |
308 | entry->retry_limit = control->retry_limit; | 305 | entry->retry_limit = control->retry_limit; |
309 | entry->flags = cpu_to_le32(tx_flags); | 306 | entry->flags = cpu_to_le32(tx_flags); |
310 | __skb_queue_tail(&ring->queue, skb); | 307 | __skb_queue_tail(&ring->queue, skb); |