Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
e032fa3f
Commit
e032fa3f
authored
Aug 26, 2003
by
Jeff Garzik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[netdrvr] ethtool_ops support for 3c515, 3c523, 3c527, and dmfe
parent
e34b4b9f
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
63 additions
and
260 deletions
+63
-260
drivers/net/3c515.c
drivers/net/3c515.c
+19
-75
drivers/net/3c523.c
drivers/net/3c523.c
+10
-63
drivers/net/3c527.c
drivers/net/3c527.c
+19
-75
drivers/net/tulip/dmfe.c
drivers/net/tulip/dmfe.c
+15
-47
No files found.
drivers/net/3c515.c
View file @
e032fa3f
...
...
@@ -392,7 +392,7 @@ static int corkscrew_close(struct net_device *dev);
static
void
update_stats
(
int
addr
,
struct
net_device
*
dev
);
static
struct
net_device_stats
*
corkscrew_get_stats
(
struct
net_device
*
dev
);
static
void
set_rx_mode
(
struct
net_device
*
dev
);
static
int
netdev_ioctl
(
struct
net_device
*
dev
,
struct
ifreq
*
rq
,
int
cmd
)
;
static
struct
ethtool_ops
netdev_ethtool_ops
;
/*
...
...
@@ -718,7 +718,7 @@ static int corkscrew_probe1(struct net_device *dev)
dev
->
stop
=
&
corkscrew_close
;
dev
->
get_stats
=
&
corkscrew_get_stats
;
dev
->
set_multicast_list
=
&
set_rx_mode
;
dev
->
do_ioctl
=
netdev_ioctl
;
dev
->
ethtool_ops
=
&
netdev_ethtool_ops
;
return
0
;
}
...
...
@@ -1580,86 +1580,30 @@ static void set_rx_mode(struct net_device *dev)
outw
(
new_mode
,
ioaddr
+
EL3_CMD
);
}
/**
* netdev_ethtool_ioctl: Handle network interface SIOCETHTOOL ioctls
* @dev: network interface on which out-of-band action is to be performed
* @useraddr: userspace address to which data is to be read and returned
*
* Process the various commands of the SIOCETHTOOL interface.
*/
static
int
netdev_ethtool_ioctl
(
struct
net_device
*
dev
,
void
*
useraddr
)
static
void
netdev_get_drvinfo
(
struct
net_device
*
dev
,
struct
ethtool_drvinfo
*
info
)
{
u32
ethcmd
;
/* dev_ioctl() in ../../net/core/dev.c has already checked
capable(CAP_NET_ADMIN), so don't bother with that here. */
if
(
get_user
(
ethcmd
,
(
u32
*
)
useraddr
))
return
-
EFAULT
;
switch
(
ethcmd
)
{
case
ETHTOOL_GDRVINFO
:
{
struct
ethtool_drvinfo
info
=
{
ETHTOOL_GDRVINFO
};
strcpy
(
info
.
driver
,
DRV_NAME
);
strcpy
(
info
.
version
,
DRV_VERSION
);
sprintf
(
info
.
bus_info
,
"ISA 0x%lx"
,
dev
->
base_addr
);
if
(
copy_to_user
(
useraddr
,
&
info
,
sizeof
(
info
)))
return
-
EFAULT
;
return
0
;
}
/* get message-level */
case
ETHTOOL_GMSGLVL
:
{
struct
ethtool_value
edata
=
{
ETHTOOL_GMSGLVL
};
edata
.
data
=
corkscrew_debug
;
if
(
copy_to_user
(
useraddr
,
&
edata
,
sizeof
(
edata
)))
return
-
EFAULT
;
return
0
;
}
/* set message-level */
case
ETHTOOL_SMSGLVL
:
{
struct
ethtool_value
edata
;
if
(
copy_from_user
(
&
edata
,
useraddr
,
sizeof
(
edata
)))
return
-
EFAULT
;
corkscrew_debug
=
edata
.
data
;
return
0
;
}
default:
break
;
}
return
-
EOPNOTSUPP
;
strcpy
(
info
->
driver
,
DRV_NAME
);
strcpy
(
info
->
version
,
DRV_VERSION
);
sprintf
(
info
->
bus_info
,
"ISA 0x%lx"
,
dev
->
base_addr
);
}
/**
* netdev_ioctl: Handle network interface ioctls
* @dev: network interface on which out-of-band action is to be performed
* @rq: user request data
* @cmd: command issued by user
*
* Process the various out-of-band ioctls passed to this driver.
*/
static
int
netdev_ioctl
(
struct
net_device
*
dev
,
struct
ifreq
*
rq
,
int
cmd
)
static
u32
netdev_get_msglevel
(
struct
net_device
*
dev
)
{
int
rc
=
0
;
return
debug
;
}
switch
(
cmd
)
{
case
SIOCETHTOOL
:
rc
=
netdev_ethtool_ioctl
(
dev
,
(
void
*
)
rq
->
ifr_data
)
;
break
;
static
void
netdev_set_msglevel
(
struct
net_device
*
dev
,
u32
level
)
{
debug
=
level
;
}
default:
rc
=
-
EOPNOTSUPP
;
break
;
}
static
struct
ethtool_ops
netdev_ethtool_ops
=
{
.
get_drvinfo
=
netdev_get_drvinfo
,
.
get_msglevel
=
netdev_get_msglevel
,
.
set_msglevel
=
netdev_set_msglevel
,
};
return
rc
;
}
#ifdef MODULE
void
cleanup_module
(
void
)
...
...
drivers/net/3c523.c
View file @
e032fa3f
...
...
@@ -188,7 +188,7 @@ static void elmc_timeout(struct net_device *dev);
#ifdef ELMC_MULTICAST
static
void
set_multicast_list
(
struct
net_device
*
dev
);
#endif
static
int
netdev_ioctl
(
struct
net_device
*
dev
,
struct
ifreq
*
rq
,
int
cmd
)
;
static
struct
ethtool_ops
netdev_ethtool_ops
;
/* helper-functions */
static
int
init586
(
struct
net_device
*
dev
);
...
...
@@ -571,7 +571,7 @@ int __init elmc_probe(struct net_device *dev)
#else
dev
->
set_multicast_list
=
NULL
;
#endif
dev
->
do_ioctl
=
netdev_ioctl
;
dev
->
ethtool_ops
=
&
netdev_ethtool_ops
;
ether_setup
(
dev
);
...
...
@@ -1228,70 +1228,17 @@ static void set_multicast_list(struct net_device *dev)
}
#endif
/**
* netdev_ethtool_ioctl: Handle network interface SIOCETHTOOL ioctls
* @dev: network interface on which out-of-band action is to be performed
* @useraddr: userspace address to which data is to be read and returned
*
* Process the various commands of the SIOCETHTOOL interface.
*/
static
int
netdev_ethtool_ioctl
(
struct
net_device
*
dev
,
void
*
useraddr
)
static
void
netdev_get_drvinfo
(
struct
net_device
*
dev
,
struct
ethtool_drvinfo
*
info
)
{
u32
ethcmd
;
/* dev_ioctl() in ../../net/core/dev.c has already checked
capable(CAP_NET_ADMIN), so don't bother with that here. */
if
(
get_user
(
ethcmd
,
(
u32
*
)
useraddr
))
return
-
EFAULT
;
switch
(
ethcmd
)
{
case
ETHTOOL_GDRVINFO
:
{
struct
ethtool_drvinfo
info
=
{
ETHTOOL_GDRVINFO
};
strcpy
(
info
.
driver
,
DRV_NAME
);
strcpy
(
info
.
version
,
DRV_VERSION
);
sprintf
(
info
.
bus_info
,
"MCA 0x%lx"
,
dev
->
base_addr
);
if
(
copy_to_user
(
useraddr
,
&
info
,
sizeof
(
info
)))
return
-
EFAULT
;
return
0
;
}
default:
break
;
}
return
-
EOPNOTSUPP
;
strcpy
(
info
->
driver
,
DRV_NAME
);
strcpy
(
info
->
version
,
DRV_VERSION
);
sprintf
(
info
->
bus_info
,
"MCA 0x%lx"
,
dev
->
base_addr
);
}
/**
* netdev_ioctl: Handle network interface ioctls
* @dev: network interface on which out-of-band action is to be performed
* @rq: user request data
* @cmd: command issued by user
*
* Process the various out-of-band ioctls passed to this driver.
*/
static
int
netdev_ioctl
(
struct
net_device
*
dev
,
struct
ifreq
*
rq
,
int
cmd
)
{
int
rc
=
0
;
switch
(
cmd
)
{
case
SIOCETHTOOL
:
rc
=
netdev_ethtool_ioctl
(
dev
,
(
void
*
)
rq
->
ifr_data
);
break
;
default:
rc
=
-
EOPNOTSUPP
;
break
;
}
return
rc
;
}
/*************************************************************************/
static
struct
ethtool_ops
netdev_ethtool_ops
=
{
.
get_drvinfo
=
netdev_get_drvinfo
,
};
#ifdef MODULE
...
...
drivers/net/3c527.c
View file @
e032fa3f
...
...
@@ -218,7 +218,7 @@ static int mc32_close(struct net_device *dev);
static
struct
net_device_stats
*
mc32_get_stats
(
struct
net_device
*
dev
);
static
void
mc32_set_multicast_list
(
struct
net_device
*
dev
);
static
void
mc32_reset_multicast_list
(
struct
net_device
*
dev
);
static
int
netdev_ioctl
(
struct
net_device
*
dev
,
struct
ifreq
*
rq
,
int
cmd
)
;
static
struct
ethtool_ops
netdev_ethtool_ops
;
/**
* mc32_probe - Search for supported boards
...
...
@@ -508,7 +508,7 @@ static int __init mc32_probe1(struct net_device *dev, int slot)
dev
->
set_multicast_list
=
mc32_set_multicast_list
;
dev
->
tx_timeout
=
mc32_timeout
;
dev
->
watchdog_timeo
=
HZ
*
5
;
/* Board does all the work */
dev
->
do_ioctl
=
netdev_ioctl
;
dev
->
ethtool_ops
=
&
netdev_ethtool_ops
;
lp
->
xceiver_state
=
HALTED
;
...
...
@@ -1655,86 +1655,30 @@ static void mc32_reset_multicast_list(struct net_device *dev)
do_mc32_set_multicast_list
(
dev
,
1
);
}
/**
* netdev_ethtool_ioctl: Handle network interface SIOCETHTOOL ioctls
* @dev: network interface on which out-of-band action is to be performed
* @useraddr: userspace address to which data is to be read and returned
*
* Process the various commands of the SIOCETHTOOL interface.
*/
static
int
netdev_ethtool_ioctl
(
struct
net_device
*
dev
,
void
*
useraddr
)
static
void
netdev_get_drvinfo
(
struct
net_device
*
dev
,
struct
ethtool_drvinfo
*
info
)
{
u32
ethcmd
;
/* dev_ioctl() in ../../net/core/dev.c has already checked
capable(CAP_NET_ADMIN), so don't bother with that here. */
if
(
get_user
(
ethcmd
,
(
u32
*
)
useraddr
))
return
-
EFAULT
;
switch
(
ethcmd
)
{
case
ETHTOOL_GDRVINFO
:
{
struct
ethtool_drvinfo
info
=
{
ETHTOOL_GDRVINFO
};
strcpy
(
info
.
driver
,
DRV_NAME
);
strcpy
(
info
.
version
,
DRV_VERSION
);
sprintf
(
info
.
bus_info
,
"MCA 0x%lx"
,
dev
->
base_addr
);
if
(
copy_to_user
(
useraddr
,
&
info
,
sizeof
(
info
)))
return
-
EFAULT
;
return
0
;
}
/* get message-level */
case
ETHTOOL_GMSGLVL
:
{
struct
ethtool_value
edata
=
{
ETHTOOL_GMSGLVL
};
edata
.
data
=
mc32_debug
;
if
(
copy_to_user
(
useraddr
,
&
edata
,
sizeof
(
edata
)))
return
-
EFAULT
;
return
0
;
}
/* set message-level */
case
ETHTOOL_SMSGLVL
:
{
struct
ethtool_value
edata
;
if
(
copy_from_user
(
&
edata
,
useraddr
,
sizeof
(
edata
)))
return
-
EFAULT
;
mc32_debug
=
edata
.
data
;
return
0
;
}
default:
break
;
}
return
-
EOPNOTSUPP
;
strcpy
(
info
->
driver
,
DRV_NAME
);
strcpy
(
info
->
version
,
DRV_VERSION
);
sprintf
(
info
->
bus_info
,
"MCA 0x%lx"
,
dev
->
base_addr
);
}
/**
* netdev_ioctl: Handle network interface ioctls
* @dev: network interface on which out-of-band action is to be performed
* @rq: user request data
* @cmd: command issued by user
*
* Process the various out-of-band ioctls passed to this driver.
*/
static
int
netdev_ioctl
(
struct
net_device
*
dev
,
struct
ifreq
*
rq
,
int
cmd
)
static
u32
netdev_get_msglevel
(
struct
net_device
*
dev
)
{
int
rc
=
0
;
return
mc32_debug
;
}
switch
(
cmd
)
{
case
SIOCETHTOOL
:
rc
=
netdev_ethtool_ioctl
(
dev
,
(
void
*
)
rq
->
ifr_data
)
;
break
;
static
void
netdev_set_msglevel
(
struct
net_device
*
dev
,
u32
level
)
{
mc32_debug
=
level
;
}
default:
rc
=
-
EOPNOTSUPP
;
break
;
}
static
struct
ethtool_ops
netdev_ethtool_ops
=
{
.
get_drvinfo
=
netdev_get_drvinfo
,
.
get_msglevel
=
netdev_get_msglevel
,
.
set_msglevel
=
netdev_set_msglevel
,
};
return
rc
;
}
#ifdef MODULE
static
struct
net_device
this_device
;
...
...
drivers/net/tulip/dmfe.c
View file @
e032fa3f
...
...
@@ -296,7 +296,7 @@ static int dmfe_start_xmit(struct sk_buff *, struct DEVICE *);
static
int
dmfe_stop
(
struct
DEVICE
*
);
static
struct
net_device_stats
*
dmfe_get_stats
(
struct
DEVICE
*
);
static
void
dmfe_set_filter_mode
(
struct
DEVICE
*
);
static
int
dmfe_do_ioctl
(
struct
DEVICE
*
,
struct
ifreq
*
,
int
)
;
static
struct
ethtool_ops
netdev_ethtool_ops
;
static
u16
read_srom_word
(
long
,
int
);
static
irqreturn_t
dmfe_interrupt
(
int
,
void
*
,
struct
pt_regs
*
);
static
void
dmfe_descriptor_init
(
struct
dmfe_board_info
*
,
unsigned
long
);
...
...
@@ -417,7 +417,7 @@ static int __devinit dmfe_init_one (struct pci_dev *pdev,
dev
->
stop
=
&
dmfe_stop
;
dev
->
get_stats
=
&
dmfe_get_stats
;
dev
->
set_multicast_list
=
&
dmfe_set_filter_mode
;
dev
->
do_ioctl
=
&
dmfe_do_ioctl
;
dev
->
ethtool_ops
=
&
netdev_ethtool_ops
;
spin_lock_init
(
&
db
->
lock
);
pci_read_config_dword
(
pdev
,
0x50
,
&
pci_pmr
);
...
...
@@ -1000,55 +1000,23 @@ static void dmfe_set_filter_mode(struct DEVICE * dev)
spin_unlock_irqrestore
(
&
db
->
lock
,
flags
);
}
/*
* Process the ethtool ioctl command
*/
static
int
dmfe_ethtool_ioctl
(
struct
net_device
*
dev
,
void
*
useraddr
)
static
void
netdev_get_drvinfo
(
struct
net_device
*
dev
,
struct
ethtool_drvinfo
*
info
)
{
struct
dmfe_board_info
*
db
=
dev
->
priv
;
struct
ethtool_drvinfo
info
=
{
ETHTOOL_GDRVINFO
};
u32
ethcmd
;
if
(
copy_from_user
(
&
ethcmd
,
useraddr
,
sizeof
(
ethcmd
)))
return
-
EFAULT
;
switch
(
ethcmd
)
{
case
ETHTOOL_GDRVINFO
:
strcpy
(
info
.
driver
,
DRV_NAME
);
strcpy
(
info
.
version
,
DRV_VERSION
);
if
(
db
->
pdev
)
strcpy
(
info
.
bus_info
,
pci_name
(
db
->
pdev
));
else
sprintf
(
info
.
bus_info
,
"EISA 0x%lx %d"
,
dev
->
base_addr
,
dev
->
irq
);
if
(
copy_to_user
(
useraddr
,
&
info
,
sizeof
(
info
)))
return
-
EFAULT
;
return
0
;
}
return
-
EOPNOTSUPP
;
}
struct
dmfe_board_info
*
np
=
dev
->
priv
;
/*
* Process the upper socket ioctl command
*/
static
int
dmfe_do_ioctl
(
struct
DEVICE
*
dev
,
struct
ifreq
*
ifr
,
int
cmd
)
{
int
retval
=
-
EOPNOTSUPP
;
DMFE_DBUG
(
0
,
"dmfe_do_ioctl()"
,
0
);
switch
(
cmd
)
{
case
SIOCETHTOOL
:
return
dmfe_ethtool_ioctl
(
dev
,
(
void
*
)
ifr
->
ifr_data
);
}
return
retval
;
strcpy
(
info
->
driver
,
DRV_NAME
);
strcpy
(
info
->
version
,
DRV_VERSION
);
if
(
np
->
pdev
)
strcpy
(
info
->
bus_info
,
pci_name
(
np
->
pdev
));
else
sprintf
(
info
->
bus_info
,
"EISA 0x%lx %d"
,
dev
->
base_addr
,
dev
->
irq
);
}
static
struct
ethtool_ops
netdev_ethtool_ops
=
{
.
get_drvinfo
=
netdev_get_drvinfo
,
};
/*
* A periodic timer routine
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment