On Mon, Mar 06, 2006 at 04:44:26PM +0100, Jiri Benc wrote: > Because any number of interfaces may be added, bss_devs and sta_devs arrays > cannot be fixed-size arrays. We can make them linked lists, but they are > needed for optimalization only (and even that is questionable with > subsequent patches). Let's remove them; we will probably want something > similar later to speed up packet receiving, but let's not bother ourselves > now.
> @@ -277,9 +277,6 @@ struct ieee80211_conf { > int antenna_def; > int antenna_mode; > > - u8 bssid_mask[ETH_ALEN]; /* ff:ff:ff:ff:ff:ff = 1 BSSID */ > - int bss_count; In theory, the low-level driver can determine the needed mask itself. However, it would need to be somehow notified of allowed BSSID values. By removing this entry, this information would need to fetched from somewhere else before interfaces are added. Most hardware implementations have storage for a single MAC address in EEPROM (or something similar) and in some cases, no addresses are stored with the card and some external store is needed for this. We have been using this mechanism of passing the information from user space to avoid problems in figuring out board specific mechanisms for storing extra data. Do you have any ideas on what would be the best of getting this information configured after this change? > --- dscape.orig/net/d80211/ieee80211.c 2006-03-06 14:10:18.000000000 > +0100 > +++ dscape/net/d80211/ieee80211.c 2006-03-06 14:10:22.000000000 +0100 > @@ -1569,17 +1569,14 @@ struct sk_buff * ieee80211_beacon_get(st > u8 *b_head, *b_tail; > int bh_len, bt_len; > > - spin_lock_bh(&local->sub_if_lock); > - if (bss_idx < 0 || bss_idx >= local->bss_dev_count) > - bdev = NULL; > - else { > - bdev = local->bss_devs[bss_idx]; > + bdev = dev_get_by_index(bss_idx); This and similar change for ieee80211_get_buffered_bc() add more requirements for the low-level driver. It used to be enough to just know that the low-level code should ask for up to N beacon frames. However, with this change, the low-level driver would need to maintain a list of ifindexes for the virtual interfaces. This is somewhat against the original design of hiding all the virtual interfaces from low-level code. I think the ifindex values could be made available from add/remove interface calls that you added. Was that what you had in mind or is there another mechanism for getting the needed ifindexes down? I need to understand this bit better in order to be able to modify the low-level driver to handle this kind of change. At the moment, this change does not look very good to me because of the extra requirement added for the low-level code as far as virtual interfaces are concerned. -- Jouni Malinen PGP id EFC895FA - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html