diff options
Diffstat (limited to 'drivers/net/wireless/mwl8k.c')
-rw-r--r-- | drivers/net/wireless/mwl8k.c | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/drivers/net/wireless/mwl8k.c b/drivers/net/wireless/mwl8k.c index 12fdcb25fd38..808adb909095 100644 --- a/drivers/net/wireless/mwl8k.c +++ b/drivers/net/wireless/mwl8k.c | |||
@@ -750,7 +750,6 @@ mwl8k_rxd_8366_ap_process(void *_rxd, struct ieee80211_rx_status *status, | |||
750 | memset(status, 0, sizeof(*status)); | 750 | memset(status, 0, sizeof(*status)); |
751 | 751 | ||
752 | status->signal = -rxd->rssi; | 752 | status->signal = -rxd->rssi; |
753 | status->noise = -rxd->noise_floor; | ||
754 | 753 | ||
755 | if (rxd->rate & MWL8K_8366_AP_RATE_INFO_MCS_FORMAT) { | 754 | if (rxd->rate & MWL8K_8366_AP_RATE_INFO_MCS_FORMAT) { |
756 | status->flag |= RX_FLAG_HT; | 755 | status->flag |= RX_FLAG_HT; |
@@ -852,7 +851,6 @@ mwl8k_rxd_sta_process(void *_rxd, struct ieee80211_rx_status *status, | |||
852 | memset(status, 0, sizeof(*status)); | 851 | memset(status, 0, sizeof(*status)); |
853 | 852 | ||
854 | status->signal = -rxd->rssi; | 853 | status->signal = -rxd->rssi; |
855 | status->noise = -rxd->noise_level; | ||
856 | status->antenna = MWL8K_STA_RATE_INFO_ANTSELECT(rate_info); | 854 | status->antenna = MWL8K_STA_RATE_INFO_ANTSELECT(rate_info); |
857 | status->rate_idx = MWL8K_STA_RATE_INFO_RATEID(rate_info); | 855 | status->rate_idx = MWL8K_STA_RATE_INFO_RATEID(rate_info); |
858 | 856 | ||
@@ -1939,11 +1937,15 @@ struct mwl8k_cmd_mac_multicast_adr { | |||
1939 | 1937 | ||
1940 | static struct mwl8k_cmd_pkt * | 1938 | static struct mwl8k_cmd_pkt * |
1941 | __mwl8k_cmd_mac_multicast_adr(struct ieee80211_hw *hw, int allmulti, | 1939 | __mwl8k_cmd_mac_multicast_adr(struct ieee80211_hw *hw, int allmulti, |
1942 | int mc_count, struct dev_addr_list *mclist) | 1940 | struct netdev_hw_addr_list *mc_list) |
1943 | { | 1941 | { |
1944 | struct mwl8k_priv *priv = hw->priv; | 1942 | struct mwl8k_priv *priv = hw->priv; |
1945 | struct mwl8k_cmd_mac_multicast_adr *cmd; | 1943 | struct mwl8k_cmd_mac_multicast_adr *cmd; |
1946 | int size; | 1944 | int size; |
1945 | int mc_count = 0; | ||
1946 | |||
1947 | if (mc_list) | ||
1948 | mc_count = netdev_hw_addr_list_count(mc_list); | ||
1947 | 1949 | ||
1948 | if (allmulti || mc_count > priv->num_mcaddrs) { | 1950 | if (allmulti || mc_count > priv->num_mcaddrs) { |
1949 | allmulti = 1; | 1951 | allmulti = 1; |
@@ -1964,17 +1966,13 @@ __mwl8k_cmd_mac_multicast_adr(struct ieee80211_hw *hw, int allmulti, | |||
1964 | if (allmulti) { | 1966 | if (allmulti) { |
1965 | cmd->action |= cpu_to_le16(MWL8K_ENABLE_RX_ALL_MULTICAST); | 1967 | cmd->action |= cpu_to_le16(MWL8K_ENABLE_RX_ALL_MULTICAST); |
1966 | } else if (mc_count) { | 1968 | } else if (mc_count) { |
1967 | int i; | 1969 | struct netdev_hw_addr *ha; |
1970 | int i = 0; | ||
1968 | 1971 | ||
1969 | cmd->action |= cpu_to_le16(MWL8K_ENABLE_RX_MULTICAST); | 1972 | cmd->action |= cpu_to_le16(MWL8K_ENABLE_RX_MULTICAST); |
1970 | cmd->numaddr = cpu_to_le16(mc_count); | 1973 | cmd->numaddr = cpu_to_le16(mc_count); |
1971 | for (i = 0; i < mc_count && mclist; i++) { | 1974 | netdev_hw_addr_list_for_each(ha, mc_list) { |
1972 | if (mclist->da_addrlen != ETH_ALEN) { | 1975 | memcpy(cmd->addr[i], ha->addr, ETH_ALEN); |
1973 | kfree(cmd); | ||
1974 | return NULL; | ||
1975 | } | ||
1976 | memcpy(cmd->addr[i], mclist->da_addr, ETH_ALEN); | ||
1977 | mclist = mclist->next; | ||
1978 | } | 1976 | } |
1979 | } | 1977 | } |
1980 | 1978 | ||
@@ -3553,7 +3551,7 @@ mwl8k_bss_info_changed(struct ieee80211_hw *hw, struct ieee80211_vif *vif, | |||
3553 | } | 3551 | } |
3554 | 3552 | ||
3555 | static u64 mwl8k_prepare_multicast(struct ieee80211_hw *hw, | 3553 | static u64 mwl8k_prepare_multicast(struct ieee80211_hw *hw, |
3556 | int mc_count, struct dev_addr_list *mclist) | 3554 | struct netdev_hw_addr_list *mc_list) |
3557 | { | 3555 | { |
3558 | struct mwl8k_cmd_pkt *cmd; | 3556 | struct mwl8k_cmd_pkt *cmd; |
3559 | 3557 | ||
@@ -3564,7 +3562,7 @@ static u64 mwl8k_prepare_multicast(struct ieee80211_hw *hw, | |||
3564 | * we'll end up throwing this packet away and creating a new | 3562 | * we'll end up throwing this packet away and creating a new |
3565 | * one in mwl8k_configure_filter(). | 3563 | * one in mwl8k_configure_filter(). |
3566 | */ | 3564 | */ |
3567 | cmd = __mwl8k_cmd_mac_multicast_adr(hw, 0, mc_count, mclist); | 3565 | cmd = __mwl8k_cmd_mac_multicast_adr(hw, 0, mc_list); |
3568 | 3566 | ||
3569 | return (unsigned long)cmd; | 3567 | return (unsigned long)cmd; |
3570 | } | 3568 | } |
@@ -3687,7 +3685,7 @@ static void mwl8k_configure_filter(struct ieee80211_hw *hw, | |||
3687 | */ | 3685 | */ |
3688 | if (*total_flags & FIF_ALLMULTI) { | 3686 | if (*total_flags & FIF_ALLMULTI) { |
3689 | kfree(cmd); | 3687 | kfree(cmd); |
3690 | cmd = __mwl8k_cmd_mac_multicast_adr(hw, 1, 0, NULL); | 3688 | cmd = __mwl8k_cmd_mac_multicast_adr(hw, 1, NULL); |
3691 | } | 3689 | } |
3692 | 3690 | ||
3693 | if (cmd != NULL) { | 3691 | if (cmd != NULL) { |
@@ -3984,8 +3982,8 @@ static int __devinit mwl8k_probe(struct pci_dev *pdev, | |||
3984 | 3982 | ||
3985 | hw->queues = MWL8K_TX_QUEUES; | 3983 | hw->queues = MWL8K_TX_QUEUES; |
3986 | 3984 | ||
3987 | /* Set rssi and noise values to dBm */ | 3985 | /* Set rssi values to dBm */ |
3988 | hw->flags |= IEEE80211_HW_SIGNAL_DBM | IEEE80211_HW_NOISE_DBM; | 3986 | hw->flags |= IEEE80211_HW_SIGNAL_DBM; |
3989 | hw->vif_data_size = sizeof(struct mwl8k_vif); | 3987 | hw->vif_data_size = sizeof(struct mwl8k_vif); |
3990 | hw->sta_data_size = sizeof(struct mwl8k_sta); | 3988 | hw->sta_data_size = sizeof(struct mwl8k_sta); |
3991 | 3989 | ||