Due to the checks in get_hwsim_data_ref_from_addr, wmediumd
was only able to use the second mac address (those starting with
0x42).  This is confusing and needlessly limiting, so allow any
configured address.

While at it, use ether_addr_equal since data->addresses and the
address from the netlink payload are aligned(2).

Signed-off-by: Bob Copeland <[email protected]>
---
 drivers/net/wireless/mac80211_hwsim.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/drivers/net/wireless/mac80211_hwsim.c 
b/drivers/net/wireless/mac80211_hwsim.c
index 1204853..be8bb18 100644
--- a/drivers/net/wireless/mac80211_hwsim.c
+++ b/drivers/net/wireless/mac80211_hwsim.c
@@ -907,8 +907,7 @@ static void mac80211_hwsim_tx_frame_nl(struct ieee80211_hw 
*hw,
                goto nla_put_failure;
        }
 
-       if (nla_put(skb, HWSIM_ATTR_ADDR_TRANSMITTER,
-                   ETH_ALEN, data->addresses[1].addr))
+       if (nla_put(skb, HWSIM_ATTR_ADDR_TRANSMITTER, ETH_ALEN, hdr->addr2))
                goto nla_put_failure;
 
        /* We get the skb->data */
@@ -2608,14 +2607,18 @@ static struct mac80211_hwsim_data 
*get_hwsim_data_ref_from_addr(const u8 *addr)
 {
        struct mac80211_hwsim_data *data;
        bool _found = false;
+       int i;
 
        spin_lock_bh(&hwsim_radio_lock);
        list_for_each_entry(data, &hwsim_radios, list) {
-               if (memcmp(data->addresses[1].addr, addr, ETH_ALEN) == 0) {
-                       _found = true;
-                       break;
+               for (i = 0; i < ARRAY_SIZE(data->addresses); i++) {
+                       if (ether_addr_equal(data->addresses[i].addr, addr)) {
+                               _found = true;
+                               goto end_loop;
+                       }
                }
        }
+end_loop:
        spin_unlock_bh(&hwsim_radio_lock);
 
        if (!_found)
-- 
2.1.4

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to