On Sunday 12 February 2006 00:28, Francois Romieu wrote: > 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;
Ok, I will resend this patch with this layout. > [...] > > @@ -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 ? No problem, when I resend this patch with the above layout change I will also form a patch that puts the space after the "if". [...] > > @@ -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. Ok, will be fixed in the resend patch. > [...] > > @@ -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. > Hehe, Old habit of mine. They will be removed (along with the others) in the resend patch. IvD
pgpo83OMerfon.pgp
Description: PGP signature