Ivo van Doorn <[EMAIL PROTECTED]> :
> Allocate the ieee80211_hw structure for each device
> individually to allow the driver to support multiple devices
> at the same time.
>
> Signed-off-by Ivo van Doorn <[EMAIL PROTECTED]>
>
> diff -U 3 -H -w -E -d -r -N --
> wireless-2.6/drivers/net/wireless/rt2x00/rt2400pci.c
> wireless-2.6-rt2x00/drivers/net/wireless/rt2x00/rt2400pci.c
> --- wireless-2.6/drivers/net/wireless/rt2x00/rt2400pci.c 2006-02-09
> 20:35:21.000000000 +0100
[...]
> @@ -1958,24 +1973,48 @@
> static int
> rt2400pci_init_hw(struct rt2x00_pci *rt2x00pci)
> {
> - ieee80211_hw.host_gen_beacon = 1;
> - ieee80211_hw.device_hides_wep = 0;
> - ieee80211_hw.rx_includes_fcs = 0;
> - ieee80211_hw.host_broadcast_ps_buffering = 1;
> - ieee80211_hw.wep_include_iv = 1;
> - ieee80211_hw.data_nullfunc_ack = 1;
> - ieee80211_hw.no_tkip_wmm_hwaccel = 1;
> - ieee80211_hw.extra_hdr_room = 0;
> - ieee80211_hw.device_strips_mic = 0;
> - ieee80211_hw.fraglist = 0;
> + /*
> + * IEEE80211 Function callbacks.
> + */
> + rt2x00pci->hw.tx = rt2400pci_tx;
> + rt2x00pci->hw.reset = rt2400pci_reset;
> + rt2x00pci->hw.open = rt2400pci_open;
> + rt2x00pci->hw.stop = rt2400pci_stop;
> + rt2x00pci->hw.config = rt2400pci_config;
> + rt2x00pci->hw.passive_scan = rt2400pci_passive_scan;
> + rt2x00pci->hw.get_stats = rt2400pci_get_stats;
> + rt2x00pci->hw.set_mac_address = rt2400pci_set_mac_address;
> + rt2x00pci->hw.set_retry_limit = rt2400pci_set_retry_limit;
> + rt2x00pci->hw.conf_tx = rt2400pci_conf_tx;
> + rt2x00pci->hw.get_tx_stats = rt2400pci_get_tx_stats;
> + rt2x00pci->hw.get_tsf = rt2400pci_get_tsf;
> + rt2x00pci->hw.reset_tsf = rt2400pci_reset_tsf;
> + rt2x00pci->hw.beacon_update = rt2400pci_beacon_update;
> + rt2x00pci->hw.tx_last_beacon = rt2400pci_tx_last_beacon;
The layout of the configuration block looked fine to me:
struct ieee80211_hw *hw = &rt2x00pci->hw;
hw->tx = rt2400pci_tx;
hw->reset = rt2400pci_reset;
hw->open = rt2400pci_open;
hw->stop = rt2400pci_stop;
hw->config = rt2400pci_config;
hw->passive_scan = rt2400pci_passive_scan;
hw->get_stats = rt2400pci_get_stats;
hw->set_mac_address = rt2400pci_set_mac_address;
hw->set_retry_limit = rt2400pci_set_retry_limit;
hw->conf_tx = rt2400pci_conf_tx;
hw->get_tx_stats = rt2400pci_get_tx_stats;
hw->get_tsf = rt2400pci_get_tsf;
hw->reset_tsf = rt2400pci_reset_tsf;
hw->beacon_update = rt2400pci_beacon_update;
hw->tx_last_beacon = rt2400pci_tx_last_beacon;
[...]
> @@ -1984,52 +2023,52 @@
> * we can increase performance since we
> * will have support for high priority TX frames.
> */
> - ieee80211_hw.queues = 2;
> + rt2x00pci->hw.queues = 2;
>
> /*
> * RT2400 only supports 802.11b.
> * Allocate memory for 14 OFDM channels and 4 CCK rates.
> */
> - ieee80211_hw.num_modes = 1;
> - ieee80211_hw.modes =
> + rt2x00pci->hw.num_modes = 1;
> + rt2x00pci->hw.modes =
> kzalloc(sizeof(struct ieee80211_hw_modes), GFP_KERNEL);
> - if(!ieee80211_hw.modes)
> + if(!rt2x00pci->hw.modes)
Any chance you could be convinced to insert a space after the "if" if
asked in a polite manner ?
[...]
> @@ -2131,13 +2170,13 @@
> rt2x00pci->workqueue = NULL;
> }
>
> - if(likely(ieee80211_hw.modes)){
> - if(likely(ieee80211_hw.modes->channels))
> - kfree(ieee80211_hw.modes->channels);
> - if(likely(ieee80211_hw.modes->rates))
> - kfree(ieee80211_hw.modes->rates);
> - kfree(ieee80211_hw.modes);
> - ieee80211_hw.modes = NULL;
> + if(likely(rt2x00pci->hw.modes)){
> + if(likely(rt2x00pci->hw.modes->channels))
> + kfree(rt2x00pci->hw.modes->channels);
No need to test: kfree(NULL) is fine.
[...]
> @@ -2148,6 +2187,7 @@
> rt2400pci_probe(struct pci_dev *pci_dev, const struct pci_device_id *id)
> {
> struct net_device *net_dev = NULL;
> + struct rt2x00_pci *rt2x00pci = NULL;
None of the NULL initializers is needed.
--
Ueimor
-
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