Search Linux Wireless

Re: [PATCH v2] mac80211_hwsim: Group radios

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, May 17, 2009 at 11:19 AM, Daniel Wagner <wagi@xxxxxxxxx> wrote:
> Currently all radios receive all traffic on the simulated air
> if they are tuned to the same channel. This patch introduces
> the concept of grouping, which allows to assign a radio to
> certain group. Only radios in the same group can 'see' each other.
>
> Each bit in /debug/ieee80211/phy*/hwsim/group
> represents one group. By default all radios belong to the same group "1",
> e.g. bit 1 is set. Additionally a radio can belong to several groups.
>
> Signed-off-by: Daniel Wagner <wagi@xxxxxxxxx>
> ---
> v2: Explain the patch a bit better in the commit message.
>
>  drivers/net/wireless/mac80211_hwsim.c |   30 +++++++++++++++++++++++++++++-
>  1 files changed, 29 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c
> index 61a4ad7..58fd29e 100644
> --- a/drivers/net/wireless/mac80211_hwsim.c
> +++ b/drivers/net/wireless/mac80211_hwsim.c
> @@ -291,6 +291,9 @@ struct mac80211_hwsim_data {
>        bool ps_poll_pending;
>        struct dentry *debugfs;
>        struct dentry *debugfs_ps;

How about some

/*
  * comments heres explaining what a group is too
  * otherwise one will have to guess by looking at the code
  */
> +
> +       u64 group;
> +       struct dentry *debugfs_group;
>  };
>
>
> @@ -412,7 +415,8 @@ static bool mac80211_hwsim_tx_frame(struct ieee80211_hw *hw,
>
>                if (!data2->started || !data2->radio_enabled ||
>                    !hwsim_ps_rx_ok(data2, skb) ||
> -                   data->channel->center_freq != data2->channel->center_freq)
> +                   data->channel->center_freq != data2->channel->center_freq ||
> +                   !(data->group & data2->group))
>                        continue;
>
>                nskb = skb_copy(skb, GFP_ATOMIC);
> @@ -720,6 +724,7 @@ static void mac80211_hwsim_free(void)
>        spin_unlock_bh(&hwsim_radio_lock);
>
>        list_for_each_entry(data, &tmplist, list) {
> +               debugfs_remove(data->debugfs_group);
>                debugfs_remove(data->debugfs_ps);
>                debugfs_remove(data->debugfs);
>                ieee80211_unregister_hw(data->hw);
> @@ -872,6 +877,24 @@ DEFINE_SIMPLE_ATTRIBUTE(hwsim_fops_ps, hwsim_fops_ps_read, hwsim_fops_ps_write,
>                        "%llu\n");
>
>
> +static int hwsim_fops_group_read(void *dat, u64 *val)
> +{
> +       struct mac80211_hwsim_data *data = dat;
> +       *val = data->group;
> +       return 0;
> +}
> +
> +static int hwsim_fops_group_write(void *dat, u64 val)
> +{
> +       struct mac80211_hwsim_data *data = dat;
> +       data->group = val;
> +       return 0;
> +}
> +
> +DEFINE_SIMPLE_ATTRIBUTE(hwsim_fops_group,
> +                       hwsim_fops_group_read, hwsim_fops_group_write,
> +                       "%llx\n");
> +
>  static int __init init_mac80211_hwsim(void)
>  {
>        int i, err = 0;
> @@ -976,6 +999,8 @@ static int __init init_mac80211_hwsim(void)
>
>                        hw->wiphy->bands[band] = sband;
>                }
> +               /* By default all radios are belonging to the first group */
> +               data->group = 1;
>
>                /* Work to be done prior to ieee80211_register_hw() */
>                switch (regtest) {
> @@ -1100,6 +1125,9 @@ static int __init init_mac80211_hwsim(void)
>                data->debugfs_ps = debugfs_create_file("ps", 0666,
>                                                       data->debugfs, data,
>                                                       &hwsim_fops_ps);
> +               data->debugfs_group = debugfs_create_file("group", 0666,
> +                                                       data->debugfs, data,
> +                                                       &hwsim_fops_group);
>
>                setup_timer(&data->beacon_timer, mac80211_hwsim_beacon,
>                            (unsigned long) hw);
> --
> 1.6.2.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux