These attached patches are a simplified version of Michael Buesch's original hwmode API patches to adm8211, p54, and zd1211rw-d80211. These will be necessary once you pull up2 from Jiri Benc's tree.
Thanks, -Michael Wu
adm8211: Fix compilation for d80211 hwmode API change
From: Michael Wu <[EMAIL PROTECTED]>
This fixes compilation for the d80211 hwmode API change.
Based on a patch by Michael Buesch <[EMAIL PROTECTED]>.
Signed-off-by: Michael Wu <[EMAIL PROTECTED]>
---
drivers/net/wireless/d80211/adm8211/adm8211.c | 8 ++++++--
drivers/net/wireless/d80211/adm8211/adm8211.h | 2 +-
2 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/drivers/net/wireless/d80211/adm8211/adm8211.c b/drivers/net/wireless/d80211/adm8211/adm8211.c
index d7fb484..3bdcec3 100644
--- a/drivers/net/wireless/d80211/adm8211/adm8211.c
+++ b/drivers/net/wireless/d80211/adm8211/adm8211.c
@@ -2035,8 +2035,6 @@ static int __devinit adm8211_probe(struc
dev->channel_change_time = 1000;
dev->maxssi = ADM8211_RX_MAX_SSI;// FIXME - This is an approximation
- dev->num_modes = 1;
- dev->modes = priv->modes;
priv->modes[0].mode = MODE_IEEE80211B;
/* channel info filled in by adm8211_read_eeprom */
memcpy(priv->rates, adm8211_rates, sizeof(adm8211_rates));
@@ -2069,6 +2067,12 @@ static int __devinit adm8211_probe(struc
priv->channel = priv->modes[0].channels[0].chan;
+ err = ieee80211_register_hwmode(dev, &priv->modes[0]);
+ if (err) {
+ printk(KERN_ERR "%s (adm8211): Cannot register hwmode\n", pci_name(pdev));
+ goto err_free_desc;
+ }
+
err = ieee80211_register_hw(dev);
if (err) {
printk(KERN_ERR "%s (adm8211): Cannot register hardware\n", pci_name(pdev));
diff --git a/drivers/net/wireless/d80211/adm8211/adm8211.h b/drivers/net/wireless/d80211/adm8211/adm8211.h
index 06c54bc..dc7902f 100644
--- a/drivers/net/wireless/d80211/adm8211/adm8211.h
+++ b/drivers/net/wireless/d80211/adm8211/adm8211.h
@@ -532,7 +532,7 @@ struct adm8211_priv {
unsigned cur_tx, dirty_tx, cur_rx;
struct ieee80211_low_level_stats stats;
- struct ieee80211_hw_modes modes[1];
+ struct ieee80211_hw_mode modes[1];
struct ieee80211_rate rates[ARRAY_SIZE(adm8211_rates)];
int mode;
p54: Fix compilation for d80211 hwmode API change
From: Michael Wu <[EMAIL PROTECTED]>
This fixes compilation for the d80211 hwmode API change.
Based on a patch by Michael Buesch <[EMAIL PROTECTED]>.
Signed-off-by: Michael Wu <[EMAIL PROTECTED]>
---
drivers/net/wireless/d80211/p54/prism54.h | 2 +-
drivers/net/wireless/d80211/p54/prism54common.c | 11 ++++++++---
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/drivers/net/wireless/d80211/p54/prism54.h b/drivers/net/wireless/d80211/p54/prism54.h
index 5e4f331..de8197e 100644
--- a/drivers/net/wireless/d80211/p54/prism54.h
+++ b/drivers/net/wireless/d80211/p54/prism54.h
@@ -63,7 +63,7 @@ struct p54_common {
/* FIXME: this channels/modes/rates stuff sucks */
struct ieee80211_channel channels[14];
struct ieee80211_rate rates[12];
- struct ieee80211_hw_modes modes[2];
+ struct ieee80211_hw_mode modes[2];
};
int p54_rx(struct ieee80211_hw *dev, struct sk_buff *skb);
diff --git a/drivers/net/wireless/d80211/p54/prism54common.c b/drivers/net/wireless/d80211/p54/prism54common.c
index 185cd53..2e19bf4 100644
--- a/drivers/net/wireless/d80211/p54/prism54common.c
+++ b/drivers/net/wireless/d80211/p54/prism54common.c
@@ -745,6 +745,7 @@ struct ieee80211_hw *p54_init_common(siz
{
struct ieee80211_hw *dev;
struct p54_common *priv;
+ int i;
dev = ieee80211_alloc_hw(priv_data_len, &p54_ops);
if (!dev)
@@ -774,13 +775,17 @@ struct ieee80211_hw *p54_init_common(siz
dev->channel_change_time = 1000; /* TODO: find actual value */
dev->maxssi = 100; // just to avoid dividing by zero
- dev->num_modes = 2;
- dev->modes = priv->modes;
-
dev->queues = 1;
dev->extra_tx_headroom = sizeof(struct p54_control_hdr) + 4 +
sizeof(struct p54_tx_control_allocdata);
+ for (i = 0; i < 2; i++) {
+ if (ieee80211_register_hwmode(dev, &priv->modes[i])) {
+ ieee80211_free_hw(dev);
+ return NULL;
+ }
+ }
+
return dev;
}
EXPORT_SYMBOL_GPL(p54_init_common);
zd1211rw-d80211: Fix compilation for d80211 hwmode API change
From: Michael Wu <[EMAIL PROTECTED]>
This fixes compilation for the d80211 hwmode API change.
Based on a patch by Michael Buesch <[EMAIL PROTECTED]>.
Signed-off-by: Michael Wu <[EMAIL PROTECTED]>
---
drivers/net/wireless/d80211/zd1211rw/zd_mac.c | 12 +++++++++---
drivers/net/wireless/d80211/zd1211rw/zd_mac.h | 2 +-
2 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/drivers/net/wireless/d80211/zd1211rw/zd_mac.c b/drivers/net/wireless/d80211/zd1211rw/zd_mac.c
index 6ee650f..35c90fb 100644
--- a/drivers/net/wireless/d80211/zd1211rw/zd_mac.c
+++ b/drivers/net/wireless/d80211/zd1211rw/zd_mac.c
@@ -574,6 +574,7 @@ struct ieee80211_hw *zd_mac_alloc(struct
{
struct zd_mac *mac;
struct ieee80211_hw *dev;
+ int i;
dev = ieee80211_alloc_hw(sizeof(struct zd_mac), &zd_ops);
if (!dev) {
@@ -608,12 +609,17 @@ struct ieee80211_hw *zd_mac_alloc(struct
IEEE80211_HW_WEP_INCLUDE_IV;
dev->maxssi = 100;
- dev->num_modes = 2;
- dev->modes = mac->modes;
-
dev->queues = 1;
dev->extra_tx_headroom = sizeof(struct zd_ctrlset);
+ for (i = 0; i < 2; i++) {
+ if (ieee80211_register_hwmode(dev, &mac->modes[i])) {
+ dev_dbg_f(&intf->dev, "cannot register hwmode\n");
+ ieee80211_free_hw(dev);
+ return NULL;
+ }
+ }
+
skb_queue_head_init(&mac->tx_queue);
zd_chip_init(&mac->chip, dev, intf);
housekeeping_init(mac);
diff --git a/drivers/net/wireless/d80211/zd1211rw/zd_mac.h b/drivers/net/wireless/d80211/zd1211rw/zd_mac.h
index e2ba410..492f7f5 100644
--- a/drivers/net/wireless/d80211/zd1211rw/zd_mac.h
+++ b/drivers/net/wireless/d80211/zd1211rw/zd_mac.h
@@ -138,7 +138,7 @@ struct zd_mac {
struct sk_buff_head tx_queue;
struct ieee80211_channel channels[14];
struct ieee80211_rate rates[12];
- struct ieee80211_hw_modes modes[2];
+ struct ieee80211_hw_mode modes[2];
};
static inline struct zd_mac *zd_dev_mac(struct ieee80211_hw *dev)
pgpwUmaU5TlaV.pgp
Description: PGP signature
