Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland...
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rtl8180_dev.c
index d0928c91c21c5ca348791c3058eb4c812ee6c2c5..c181f23e930dc96048f3b1d700434bbf92a6a26b 100644 (file)
@@ -257,19 +257,25 @@ static int rtl8180_tx(struct ieee80211_hw *dev, struct sk_buff *skb,
        mapping = pci_map_single(priv->pdev, skb->data,
                                 skb->len, PCI_DMA_TODEVICE);
 
+       BUG_ON(!control->tx_rate);
+
        tx_flags = RTL8180_TX_DESC_FLAG_OWN | RTL8180_TX_DESC_FLAG_FS |
                   RTL8180_TX_DESC_FLAG_LS |
-                  (control->tx_rate->hw_value << 24) |
-                  (control->rts_cts_rate->hw_value << 19) | skb->len;
+                  (control->tx_rate->hw_value << 24) | skb->len;
 
        if (priv->r8185)
                tx_flags |= RTL8180_TX_DESC_FLAG_DMA |
                            RTL8180_TX_DESC_FLAG_NO_ENC;
 
-       if (control->flags & IEEE80211_TXCTL_USE_RTS_CTS)
+       if (control->flags & IEEE80211_TXCTL_USE_RTS_CTS) {
+               BUG_ON(!control->rts_cts_rate);
                tx_flags |= RTL8180_TX_DESC_FLAG_RTS;
-       else if (control->flags & IEEE80211_TXCTL_USE_CTS_PROTECT)
+               tx_flags |= control->rts_cts_rate->hw_value << 19;
+       } else if (control->flags & IEEE80211_TXCTL_USE_CTS_PROTECT) {
+               BUG_ON(!control->rts_cts_rate);
                tx_flags |= RTL8180_TX_DESC_FLAG_CTS;
+               tx_flags |= control->rts_cts_rate->hw_value << 19;
+       }
 
        *((struct ieee80211_tx_control **) skb->cb) =
                kmemdup(control, sizeof(*control), GFP_ATOMIC);
@@ -682,9 +688,9 @@ static int rtl8180_add_interface(struct ieee80211_hw *dev,
 
        rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_CONFIG);
        rtl818x_iowrite32(priv, (__le32 __iomem *)&priv->map->MAC[0],
-                         cpu_to_le32(*(u32 *)conf->mac_addr));
+                         le32_to_cpu(*(__le32 *)conf->mac_addr));
        rtl818x_iowrite16(priv, (__le16 __iomem *)&priv->map->MAC[4],
-                         cpu_to_le16(*(u16 *)(conf->mac_addr + 4)));
+                         le16_to_cpu(*(__le16 *)(conf->mac_addr + 4)));
        rtl818x_iowrite8(priv, &priv->map->EEPROM_CMD, RTL818X_EEPROM_CMD_NORMAL);
 
        return 0;