From: Rusty Lynch <rusty@linux.intel.com>
To: Horst von Brand <vonbrand@inf.utfsm.cl>
Cc: Jeff Chua <jeffchua@silk.corp.fedex.com>,
Alejandro Bonilla <abonilla@linuxwireless.org>,
"'Arjan van de Ven'" <arjan@infradead.org>,
"'Jeff Chua'" <jeff96@silk.corp.fedex.com>,
ipw2100-devel@lists.sourceforge.net,
"'Linux Kernel'" <linux-kernel@vger.kernel.org>
Subject: Re: [Ipw2100-devel] Re: ipw2200 can't compile under linux 2.6.13-rc1
Date: Wed, 29 Jun 2005 15:35:40 -0700 [thread overview]
Message-ID: <20050629223540.GA22949@linux.jf.intel.com> (raw)
In-Reply-To: <200506291655.j5TGtpkX011008@laptop11.inf.utfsm.cl>
On Wed, Jun 29, 2005 at 12:55:51PM -0400, Horst von Brand wrote:
> Jeff Chua <jeffchua@silk.corp.fedex.com> wrote:
>
> [...]
>
> > All the ipw2200 files has ...
> >
> > #include <net/ieee80211.h>
> >
> > and that points to the new linux header in
> > /usr/src/linux/include/net/ieee80211.h instead of the local include
> > file under the ipw2200/net directory.
> >
> > I've modified all ipw2200 files to #include "net/ieee80211.h" and now
> > it compiles ok.
>
> No, it doesn't. The warnings are about /function pointers/ that have the
> wrong type (this comes from an earlier 2.6.12-git). AFAICS, this is due to
> a change in device handling, and as long as this isn't fixed, I won't even
> try to load the module.
>
> Just need a little time to decrypt this macro mess...
>
> And again, shouldn't we push for the header here going into the kernel? Or
> fix up the code to work with the kernel version? The current situation
> isn't confortable at all.
The prototype for the driver show and store functions has a new argument,
struct device_attribute *. Here is a patch that adds the argument for the
many device files that the ipw2200 has.
--rusty
ipw2200.c | 95 +++++++++++++++++++++++++++++++++++++++++---------------------
1 files changed, 63 insertions(+), 32 deletions(-)
Index: ipw2200-1.0.4/ipw2200.c
===================================================================
--- ipw2200-1.0.4.orig/ipw2200.c
+++ ipw2200-1.0.4/ipw2200.c
@@ -1071,7 +1071,8 @@ static DRIVER_ATTR(debug_level, S_IWUSR
#define STAT_PRINT(b, x, y) sprintf(b, # x ": " y "\n", priv->x);
-static ssize_t show_stats(struct device *d, char *buf)
+static ssize_t show_stats(struct device *d, struct device_attribute *attr,
+ char *buf)
{
struct ipw_priv *priv = dev_get_drvdata(d);
u32 len = 0;
@@ -1081,13 +1082,15 @@ static ssize_t show_stats(struct device
static DEVICE_ATTR(stats, S_IRUGO, show_stats, NULL);
-static ssize_t show_scan_age(struct device *d, char *buf)
+static ssize_t show_scan_age(struct device *d, struct device_attribute *attr,
+ char *buf)
{
struct ipw_priv *priv = dev_get_drvdata(d);
return sprintf(buf, "%d\n", priv->ieee->scan_age);
}
-static ssize_t store_scan_age(struct device *d, const char *buf, size_t count)
+static ssize_t store_scan_age(struct device *d, struct device_attribute *attr,
+ const char *buf, size_t count)
{
struct ipw_priv *priv = dev_get_drvdata(d);
#ifdef CONFIG_IPW_DEBUG
@@ -1124,13 +1127,15 @@ static ssize_t store_scan_age(struct dev
}
static DEVICE_ATTR(scan_age, S_IWUSR | S_IRUGO, show_scan_age, store_scan_age);
-static ssize_t show_led(struct device *d, char *buf)
+static ssize_t show_led(struct device *d, struct device_attribute *attr,
+ char *buf)
{
struct ipw_priv *priv = dev_get_drvdata(d);
return sprintf(buf, "%d\n", (priv->config & CFG_NO_LED) ? 0 : 1);
}
-static ssize_t store_led(struct device *d, const char *buf, size_t count)
+static ssize_t store_led(struct device *d, struct device_attribute *attr,
+ const char *buf, size_t count)
{
struct ipw_priv *priv = dev_get_drvdata(d);
@@ -1155,21 +1160,24 @@ static ssize_t store_led(struct device *
static DEVICE_ATTR(led, S_IWUSR | S_IRUGO, show_led, store_led);
-static ssize_t show_status(struct device *d, char *buf)
+static ssize_t show_status(struct device *d, struct device_attribute *attr,
+ char *buf)
{
struct ipw_priv *p = (struct ipw_priv *)d->driver_data;
return sprintf(buf, "0x%08x\n", (int)p->status);
}
static DEVICE_ATTR(status, S_IRUGO, show_status, NULL);
-static ssize_t show_cfg(struct device *d, char *buf)
+static ssize_t show_cfg(struct device *d, struct device_attribute *attr,
+ char *buf)
{
struct ipw_priv *p = (struct ipw_priv *)d->driver_data;
return sprintf(buf, "0x%08x\n", (int)p->config);
}
static DEVICE_ATTR(cfg, S_IRUGO, show_cfg, NULL);
-static ssize_t show_nic_type(struct device *d, char *buf)
+static ssize_t show_nic_type(struct device *d, struct device_attribute *attr,
+ char *buf)
{
struct ipw_priv *priv = (struct ipw_priv *)d->driver_data;
@@ -1177,8 +1185,8 @@ static ssize_t show_nic_type(struct devi
}
static DEVICE_ATTR(nic_type, S_IRUGO, show_nic_type, NULL);
-static ssize_t dump_error_log(struct device *d, const char *buf,
- size_t count)
+static ssize_t dump_error_log(struct device *d, struct device_attribute *attr,
+ const char *buf, size_t count)
{
char *p = (char *)buf;
@@ -1189,8 +1197,8 @@ static ssize_t dump_error_log(struct dev
}
static DEVICE_ATTR(dump_errors, S_IWUSR, NULL, dump_error_log);
-static ssize_t dump_event_log(struct device *d, const char *buf,
- size_t count)
+static ssize_t dump_event_log(struct device *d, struct device_attribute *attr,
+ const char *buf, size_t count)
{
char *p = (char *)buf;
@@ -1201,7 +1209,8 @@ static ssize_t dump_event_log(struct dev
}
static DEVICE_ATTR(dump_events, S_IWUSR, NULL, dump_event_log);
-static ssize_t show_ucode_version(struct device *d, char *buf)
+static ssize_t show_ucode_version(struct device *d,
+ struct device_attribute *attr, char *buf)
{
u32 len = sizeof(u32), tmp = 0;
struct ipw_priv *p = (struct ipw_priv*)d->driver_data;
@@ -1213,7 +1222,8 @@ static ssize_t show_ucode_version(struct
}
static DEVICE_ATTR(ucode_version, S_IWUSR|S_IRUGO, show_ucode_version, NULL);
-static ssize_t show_rtc(struct device *d, char *buf)
+static ssize_t show_rtc(struct device *d, struct device_attribute *attr,
+ char *buf)
{
u32 len = sizeof(u32), tmp = 0;
struct ipw_priv *p = (struct ipw_priv*)d->driver_data;
@@ -1229,13 +1239,15 @@ static DEVICE_ATTR(rtc, S_IWUSR|S_IRUGO,
* Add a device attribute to view/control the delay between eeprom
* operations.
*/
-static ssize_t show_eeprom_delay(struct device *d, char *buf)
+static ssize_t show_eeprom_delay(struct device *d,
+ struct device_attribute *attr, char *buf)
{
int n = ((struct ipw_priv*)d->driver_data)->eeprom_delay;
return sprintf(buf, "%i\n", n);
}
-static ssize_t store_eeprom_delay(struct device *d, const char *buf,
- size_t count)
+static ssize_t store_eeprom_delay(struct device *d,
+ struct device_attribute *attr,
+ const char *buf, size_t count)
{
struct ipw_priv *p = (struct ipw_priv*)d->driver_data;
sscanf(buf, "%i", &p->eeprom_delay);
@@ -1244,7 +1256,9 @@ static ssize_t store_eeprom_delay(struct
static DEVICE_ATTR(eeprom_delay, S_IWUSR|S_IRUGO,
show_eeprom_delay,store_eeprom_delay);
-static ssize_t show_command_event_reg(struct device *d, char *buf)
+static ssize_t show_command_event_reg(struct device *d,
+ struct device_attribute *attr,
+ char *buf)
{
u32 reg = 0;
struct ipw_priv *p = (struct ipw_priv *)d->driver_data;
@@ -1253,6 +1267,7 @@ static ssize_t show_command_event_reg(st
return sprintf(buf, "0x%08x\n", reg);
}
static ssize_t store_command_event_reg(struct device *d,
+ struct device_attribute *attr,
const char *buf,
size_t count)
{
@@ -1266,7 +1281,9 @@ static ssize_t store_command_event_reg(s
static DEVICE_ATTR(command_event_reg, S_IWUSR|S_IRUGO,
show_command_event_reg,store_command_event_reg);
-static ssize_t show_mem_gpio_reg(struct device *d, char *buf)
+static ssize_t show_mem_gpio_reg(struct device *d,
+ struct device_attribute *attr,
+ char *buf)
{
u32 reg = 0;
struct ipw_priv *p = (struct ipw_priv *)d->driver_data;
@@ -1275,6 +1292,7 @@ static ssize_t show_mem_gpio_reg(struct
return sprintf(buf, "0x%08x\n", reg);
}
static ssize_t store_mem_gpio_reg(struct device *d,
+ struct device_attribute *attr,
const char *buf,
size_t count)
{
@@ -1288,7 +1306,8 @@ static ssize_t store_mem_gpio_reg(struct
static DEVICE_ATTR(mem_gpio_reg, S_IWUSR|S_IRUGO,
show_mem_gpio_reg,store_mem_gpio_reg);
-static ssize_t show_indirect_dword(struct device *d, char *buf)
+static ssize_t show_indirect_dword(struct device *d,
+ struct device_attribute *attr, char *buf)
{
u32 reg = 0;
struct ipw_priv *priv = (struct ipw_priv *)d->driver_data;
@@ -1300,8 +1319,9 @@ static ssize_t show_indirect_dword(struc
return sprintf(buf, "0x%08x\n", reg);
}
static ssize_t store_indirect_dword(struct device *d,
- const char *buf,
- size_t count)
+ struct device_attribute *attr,
+ const char *buf,
+ size_t count)
{
struct ipw_priv *priv = (struct ipw_priv *)d->driver_data;
@@ -1312,7 +1332,8 @@ static ssize_t store_indirect_dword(stru
static DEVICE_ATTR(indirect_dword, S_IWUSR|S_IRUGO,
show_indirect_dword,store_indirect_dword);
-static ssize_t show_indirect_byte(struct device *d, char *buf)
+static ssize_t show_indirect_byte(struct device *d,
+ struct device_attribute *attr, char *buf)
{
u8 reg = 0;
struct ipw_priv *priv = (struct ipw_priv *)d->driver_data;
@@ -1324,6 +1345,7 @@ static ssize_t show_indirect_byte(struct
return sprintf(buf, "0x%02x\n", reg);
}
static ssize_t store_indirect_byte(struct device *d,
+ struct device_attribute *attr,
const char *buf,
size_t count)
{
@@ -1336,7 +1358,8 @@ static ssize_t store_indirect_byte(struc
static DEVICE_ATTR(indirect_byte, S_IWUSR|S_IRUGO,
show_indirect_byte, store_indirect_byte);
-static ssize_t show_direct_dword(struct device *d, char *buf)
+static ssize_t show_direct_dword(struct device *d,
+ struct device_attribute *attr, char *buf)
{
u32 reg = 0;
struct ipw_priv *priv = (struct ipw_priv *)d->driver_data;
@@ -1349,8 +1372,9 @@ static ssize_t show_direct_dword(struct
return sprintf(buf, "0x%08x\n", reg);
}
static ssize_t store_direct_dword(struct device *d,
- const char *buf,
- size_t count)
+ struct device_attribute *attr,
+ const char *buf,
+ size_t count)
{
struct ipw_priv *priv = (struct ipw_priv *)d->driver_data;
@@ -1372,7 +1396,8 @@ static inline int rf_kill_active(struct
return (priv->status & STATUS_RF_KILL_HW) ? 1 : 0;
}
-static ssize_t show_rf_kill(struct device *d, char *buf)
+static ssize_t show_rf_kill(struct device *d, struct device_attribute *attr,
+ char *buf)
{
/* 0 - RF kill not enabled
1 - SW based RF kill active (sysfs)
@@ -1415,7 +1440,8 @@ static int ipw_radio_kill_sw(struct ipw_
return 1;
}
-static ssize_t store_rf_kill(struct device *d, const char *buf, size_t count)
+static ssize_t store_rf_kill(struct device *d, struct device_attribute *attr,
+ const char *buf, size_t count)
{
struct ipw_priv *priv = (struct ipw_priv *)d->driver_data;
@@ -1425,7 +1451,8 @@ static ssize_t store_rf_kill(struct devi
}
static DEVICE_ATTR(rf_kill, S_IWUSR|S_IRUGO, show_rf_kill, store_rf_kill);
-static ssize_t show_speed_scan(struct device *d, char *buf)
+static ssize_t show_speed_scan(struct device *d, struct device_attribute *attr,
+ char *buf)
{
struct ipw_priv *priv = (struct ipw_priv *)d->driver_data;
int pos = 0, len = 0;
@@ -1439,7 +1466,9 @@ static ssize_t show_speed_scan(struct de
return sprintf(buf, "0\n");
}
-static ssize_t store_speed_scan(struct device *d, const char *buf, size_t count)
+static ssize_t store_speed_scan(struct device *d,
+ struct device_attribute *attr,
+ const char *buf, size_t count)
{
struct ipw_priv *priv = (struct ipw_priv *)d->driver_data;
int channel, pos = 0;
@@ -1477,14 +1506,16 @@ static ssize_t store_speed_scan(struct d
static DEVICE_ATTR(speed_scan, S_IWUSR|S_IRUGO, show_speed_scan,
store_speed_scan);
-static ssize_t show_net_stats(struct device *d, char *buf)
+static ssize_t show_net_stats(struct device *d, struct device_attribute *attr,
+ char *buf)
{
struct ipw_priv *priv = (struct ipw_priv *)d->driver_data;
return sprintf(buf, "%c\n", (priv->config & CFG_NET_STATS) ?
'1' : '0');
}
-static ssize_t store_net_stats(struct device *d, const char *buf, size_t count)
+static ssize_t store_net_stats(struct device *d, struct device_attribute *attr,
+ const char *buf, size_t count)
{
struct ipw_priv *priv = (struct ipw_priv *)d->driver_data;
if (buf[0] == '1')
next prev parent reply other threads:[~2005-06-29 22:37 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-06-29 10:12 ipw2200 can't compile under linux 2.6.13-rc1 Jeff Chua
2005-06-29 10:24 ` Arjan van de Ven
2005-06-29 12:43 ` Alejandro Bonilla
2005-06-29 13:00 ` [Ipw2100-devel] " Henrik Brix Andersen
2005-06-29 14:17 ` Jeff Chua
2005-06-29 16:55 ` Horst von Brand
2005-06-29 22:35 ` Rusty Lynch [this message]
2005-06-29 23:59 ` [Ipw2100-devel] " Jeff Chua
2005-06-29 15:43 ` Horst von Brand
2005-06-29 15:23 ` Jeff Garzik
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20050629223540.GA22949@linux.jf.intel.com \
--to=rusty@linux.intel.com \
--cc=abonilla@linuxwireless.org \
--cc=arjan@infradead.org \
--cc=ipw2100-devel@lists.sourceforge.net \
--cc=jeff96@silk.corp.fedex.com \
--cc=jeffchua@silk.corp.fedex.com \
--cc=linux-kernel@vger.kernel.org \
--cc=vonbrand@inf.utfsm.cl \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.