Hi Johannes,
No, initialization was incorrect -- this is better:
http://p.sipsolutions.net/e5ab0f3e38f90d6d.txt
thanks a lot for the patch!
with the above patch ath9k seems be working fine with the single
incompatible adhoc interface.
Ok, cool.
but i was just experimenting with ath9k(similar to iwlwifi having
hw->wiphy->n_iface_combinations> 1) with this patch.
static const struct ieee80211_iface_limit a[] = {
{ .max = 2, .types = BIT(NL80211_IFTYPE_STATION) },
};
static const struct ieee80211_iface_limit b[] = {
{ .max = 2, .types = BIT(NL80211_IFTYPE_MESH_POINT) },
};
static const struct ieee80211_iface_combination if_comb[] = {
{.limits = a,
.n_limits = ARRAY_SIZE(a),
.max_interfaces = 2,
.num_different_channels = 1,
},
{.limits = b,
.n_limits = ARRAY_SIZE(b),
.max_interfaces = 2,
.num_different_channels = 1,
},
};
i could not add mesh interface if a managed interface is already there
and vice versa. if this is the expected behavior, then fine.
No, that's not expected! Another bug!
We should write some unit tests for this code I guess :-)
iteration 1: cfg80211_can_change_interface all_iftypes 4 and used_iftypes 84
iteration 2: cfg80211_can_change_interface all_iftypes 80 and used_iftypes 84
Curious. Why did it accept it then? Where did you place the printk?
not sure whether i missed something, but it did not work for the above
case. printk just inside the condition check of your patch.
if ((all_iftypes & used_iftypes) != used_iftypes) {
+ printk("\nshafi %s all_iftypes %x and
used_iftypes %x", __func__, all_iftypes, used_iftypes);
+ goto cont;
+ }
i think we need to take 'all_iftypes' for all the
'n_interface_combinations' and then finally compare it with used_iftypes.
I'm handling Linus's problem right now, so it'll be a bit until I can
look at this in more detail again.
oh ok, sure.
--
thanks,
shafi
--
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