mac80211_hwsim: minor netlink cleanups
authorJohannes Berg <johannes.berg@intel.com>
Mon, 6 Jan 2014 22:03:02 +0000 (23:03 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 10 Jan 2014 19:12:58 +0000 (20:12 +0100)
Use u8 pointer instead of the struct mac_address and do
some other small cleanups.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/mac80211_hwsim.c

index 8df3d5e8e87a23c8cccd243a9a9578524991a59b..ca156a5ed3051c7b928aada717ce164cf31b1e00 100644 (file)
@@ -298,18 +298,16 @@ static struct genl_family hwsim_genl_family = {
 /* MAC80211_HWSIM netlink policy */
 
 static struct nla_policy hwsim_genl_policy[HWSIM_ATTR_MAX + 1] = {
-       [HWSIM_ATTR_ADDR_RECEIVER] = { .type = NLA_UNSPEC,
-                                      .len = 6*sizeof(u8) },
-       [HWSIM_ATTR_ADDR_TRANSMITTER] = { .type = NLA_UNSPEC,
-                                         .len = 6*sizeof(u8) },
+       [HWSIM_ATTR_ADDR_RECEIVER] = { .type = NLA_UNSPEC, .len = ETH_ALEN },
+       [HWSIM_ATTR_ADDR_TRANSMITTER] = { .type = NLA_UNSPEC, .len = ETH_ALEN },
        [HWSIM_ATTR_FRAME] = { .type = NLA_BINARY,
                               .len = IEEE80211_MAX_DATA_LEN },
        [HWSIM_ATTR_FLAGS] = { .type = NLA_U32 },
        [HWSIM_ATTR_RX_RATE] = { .type = NLA_U32 },
        [HWSIM_ATTR_SIGNAL] = { .type = NLA_U32 },
        [HWSIM_ATTR_TX_INFO] = { .type = NLA_UNSPEC,
-                                .len = IEEE80211_TX_MAX_RATES*sizeof(
-                                       struct hwsim_tx_rate)},
+                                .len = IEEE80211_TX_MAX_RATES *
+                                       sizeof(struct hwsim_tx_rate)},
        [HWSIM_ATTR_COOKIE] = { .type = NLA_U64 },
 };
 
@@ -536,7 +534,7 @@ static void mac80211_hwsim_tx_frame_nl(struct ieee80211_hw *hw,
        }
 
        if (nla_put(skb, HWSIM_ATTR_ADDR_TRANSMITTER,
-                   sizeof(struct mac_address), data->addresses[1].addr))
+                   ETH_ALEN, data->addresses[1].addr))
                goto nla_put_failure;
 
        /* We get the skb->data */
@@ -1828,16 +1826,14 @@ DEFINE_SIMPLE_ATTRIBUTE(hwsim_fops_group,
                        hwsim_fops_group_read, hwsim_fops_group_write,
                        "%llx\n");
 
-static struct mac80211_hwsim_data *get_hwsim_data_ref_from_addr(
-                            struct mac_address *addr)
+static struct mac80211_hwsim_data *get_hwsim_data_ref_from_addr(const u8 *addr)
 {
        struct mac80211_hwsim_data *data;
        bool _found = false;
 
        spin_lock_bh(&hwsim_radio_lock);
        list_for_each_entry(data, &hwsim_radios, list) {
-               if (memcmp(data->addresses[1].addr, addr,
-                         sizeof(struct mac_address)) == 0) {
+               if (memcmp(data->addresses[1].addr, addr, ETH_ALEN) == 0) {
                        _found = true;
                        break;
                }
@@ -1860,27 +1856,23 @@ static int hwsim_tx_info_frame_received_nl(struct sk_buff *skb_2,
        struct hwsim_tx_rate *tx_attempts;
        unsigned long ret_skb_ptr;
        struct sk_buff *skb, *tmp;
-       struct mac_address *src;
+       const u8 *src;
        unsigned int hwsim_flags;
-
        int i;
        bool found = false;
 
        if (!info->attrs[HWSIM_ATTR_ADDR_TRANSMITTER] ||
-          !info->attrs[HWSIM_ATTR_FLAGS] ||
-          !info->attrs[HWSIM_ATTR_COOKIE] ||
-          !info->attrs[HWSIM_ATTR_TX_INFO])
+           !info->attrs[HWSIM_ATTR_FLAGS] ||
+           !info->attrs[HWSIM_ATTR_COOKIE] ||
+           !info->attrs[HWSIM_ATTR_TX_INFO])
                goto out;
 
-       src = (struct mac_address *)nla_data(
-                                  info->attrs[HWSIM_ATTR_ADDR_TRANSMITTER]);
+       src = (void *)nla_data(info->attrs[HWSIM_ATTR_ADDR_TRANSMITTER]);
        hwsim_flags = nla_get_u32(info->attrs[HWSIM_ATTR_FLAGS]);
-
        ret_skb_ptr = nla_get_u64(info->attrs[HWSIM_ATTR_COOKIE]);
 
        data2 = get_hwsim_data_ref_from_addr(src);
-
-       if (data2 == NULL)
+       if (!data2)
                goto out;
 
        /* look for the skb matching the cookie passed back from user */
@@ -1937,9 +1929,9 @@ static int hwsim_cloned_frame_received_nl(struct sk_buff *skb_2,
 
        struct mac80211_hwsim_data *data2;
        struct ieee80211_rx_status rx_status;
-       struct mac_address *dst;
+       const u8 *dst;
        int frame_data_len;
-       char *frame_data;
+       void *frame_data;
        struct sk_buff *skb = NULL;
 
        if (!info->attrs[HWSIM_ATTR_ADDR_RECEIVER] ||
@@ -1948,27 +1940,23 @@ static int hwsim_cloned_frame_received_nl(struct sk_buff *skb_2,
            !info->attrs[HWSIM_ATTR_SIGNAL])
                goto out;
 
-       dst = (struct mac_address *)nla_data(
-                                  info->attrs[HWSIM_ATTR_ADDR_RECEIVER]);
-
+       dst = (void *)nla_data(info->attrs[HWSIM_ATTR_ADDR_RECEIVER]);
        frame_data_len = nla_len(info->attrs[HWSIM_ATTR_FRAME]);
-       frame_data = (char *)nla_data(info->attrs[HWSIM_ATTR_FRAME]);
+       frame_data = (void *)nla_data(info->attrs[HWSIM_ATTR_FRAME]);
 
        /* Allocate new skb here */
        skb = alloc_skb(frame_data_len, GFP_KERNEL);
        if (skb == NULL)
                goto err;
 
-       if (frame_data_len <= IEEE80211_MAX_DATA_LEN) {
-               /* Copy the data */
-               memcpy(skb_put(skb, frame_data_len), frame_data,
-                      frame_data_len);
-       } else
+       if (frame_data_len > IEEE80211_MAX_DATA_LEN)
                goto err;
 
-       data2 = get_hwsim_data_ref_from_addr(dst);
+       /* Copy the data */
+       memcpy(skb_put(skb, frame_data_len), frame_data, frame_data_len);
 
-       if (data2 == NULL)
+       data2 = get_hwsim_data_ref_from_addr(dst);
+       if (!data2)
                goto out;
 
        /* check if radio is configured properly */
@@ -1976,7 +1964,7 @@ static int hwsim_cloned_frame_received_nl(struct sk_buff *skb_2,
        if (data2->idle || !data2->started)
                goto out;
 
-       /*A frame is received from user space*/
+       /* A frame is received from user space */
        memset(&rx_status, 0, sizeof(rx_status));
        rx_status.freq = data2->channel->center_freq;
        rx_status.band = data2->channel->band;
@@ -1998,18 +1986,12 @@ out:
 static int hwsim_register_received_nl(struct sk_buff *skb_2,
                                      struct genl_info *info)
 {
-       if (info == NULL)
-               goto out;
-
        wmediumd_portid = info->snd_portid;
 
        printk(KERN_DEBUG "mac80211_hwsim: received a REGISTER, "
               "switching to wmediumd mode with pid %d\n", info->snd_portid);
 
        return 0;
-out:
-       printk(KERN_DEBUG "mac80211_hwsim: error occurred in %s\n", __func__);
-       return -EINVAL;
 }
 
 /* Generic Netlink operations array */