diff options
Diffstat (limited to 'drivers/net/wireless/mwl8k.c')
| -rw-r--r-- | drivers/net/wireless/mwl8k.c | 24 | 
1 files changed, 12 insertions, 12 deletions
diff --git a/drivers/net/wireless/mwl8k.c b/drivers/net/wireless/mwl8k.c index 4e58ebe1558..1b5d0aebbb0 100644 --- a/drivers/net/wireless/mwl8k.c +++ b/drivers/net/wireless/mwl8k.c @@ -1938,11 +1938,15 @@ struct mwl8k_cmd_mac_multicast_adr {  static struct mwl8k_cmd_pkt *  __mwl8k_cmd_mac_multicast_adr(struct ieee80211_hw *hw, int allmulti, -			      int mc_count, struct dev_addr_list *mclist) +			      struct netdev_hw_addr_list *mc_list)  {  	struct mwl8k_priv *priv = hw->priv;  	struct mwl8k_cmd_mac_multicast_adr *cmd;  	int size; +	int mc_count = 0; + +	if (mc_list) +		mc_count = netdev_hw_addr_list_count(mc_list);  	if (allmulti || mc_count > priv->num_mcaddrs) {  		allmulti = 1; @@ -1963,17 +1967,13 @@ __mwl8k_cmd_mac_multicast_adr(struct ieee80211_hw *hw, int allmulti,  	if (allmulti) {  		cmd->action |= cpu_to_le16(MWL8K_ENABLE_RX_ALL_MULTICAST);  	} else if (mc_count) { -		int i; +		struct netdev_hw_addr *ha; +		int i = 0;  		cmd->action |= cpu_to_le16(MWL8K_ENABLE_RX_MULTICAST);  		cmd->numaddr = cpu_to_le16(mc_count); -		for (i = 0; i < mc_count && mclist; i++) { -			if (mclist->da_addrlen != ETH_ALEN) { -				kfree(cmd); -				return NULL; -			} -			memcpy(cmd->addr[i], mclist->da_addr, ETH_ALEN); -			mclist = mclist->next; +		netdev_hw_addr_list_for_each(ha, mc_list) { +			memcpy(cmd->addr[i], ha->addr, ETH_ALEN);  		}  	} @@ -3552,7 +3552,7 @@ mwl8k_bss_info_changed(struct ieee80211_hw *hw, struct ieee80211_vif *vif,  }  static u64 mwl8k_prepare_multicast(struct ieee80211_hw *hw, -				   int mc_count, struct dev_addr_list *mclist) +				   struct netdev_hw_addr_list *mc_list)  {  	struct mwl8k_cmd_pkt *cmd; @@ -3563,7 +3563,7 @@ static u64 mwl8k_prepare_multicast(struct ieee80211_hw *hw,  	 * we'll end up throwing this packet away and creating a new  	 * one in mwl8k_configure_filter().  	 */ -	cmd = __mwl8k_cmd_mac_multicast_adr(hw, 0, mc_count, mclist); +	cmd = __mwl8k_cmd_mac_multicast_adr(hw, 0, mc_list);  	return (unsigned long)cmd;  } @@ -3686,7 +3686,7 @@ static void mwl8k_configure_filter(struct ieee80211_hw *hw,  	 */  	if (*total_flags & FIF_ALLMULTI) {  		kfree(cmd); -		cmd = __mwl8k_cmd_mac_multicast_adr(hw, 1, 0, NULL); +		cmd = __mwl8k_cmd_mac_multicast_adr(hw, 1, NULL);  	}  	if (cmd != NULL) {  |