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
2896ddff
Commit
2896ddff
authored
Oct 18, 2002
by
Scott Feldman
Committed by
Jeff Garzik
Oct 18, 2002
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
e100 3/4:
* Updated change log * Adding notifier to track ifname change for /proc info
parent
66d7f339
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
68 additions
and
42 deletions
+68
-42
drivers/net/e100/e100.h
drivers/net/e100/e100.h
+1
-0
drivers/net/e100/e100_main.c
drivers/net/e100/e100_main.c
+57
-32
drivers/net/e100/e100_proc.c
drivers/net/e100/e100_proc.c
+10
-10
No files found.
drivers/net/e100/e100.h
View file @
2896ddff
...
@@ -954,6 +954,7 @@ struct e100_private {
...
@@ -954,6 +954,7 @@ struct e100_private {
#ifdef CONFIG_PM
#ifdef CONFIG_PM
u32
pci_state
[
16
];
u32
pci_state
[
16
];
#endif
#endif
char
ifname
[
IFNAMSIZ
];
};
};
#define E100_AUTONEG 0
#define E100_AUTONEG 0
...
...
drivers/net/e100/e100_main.c
View file @
2896ddff
...
@@ -45,6 +45,15 @@
...
@@ -45,6 +45,15 @@
**********************************************************************/
**********************************************************************/
/* Change Log
/* Change Log
*
* 2.1.24 10/7/02
* o Bug fix: Wrong files under /proc/net/PRO_LAN_Adapters/ when interface
* name is changed
* o Bug fix: Rx skb corruption when Rx polling code and Rx interrupt code
* are executing during stress traffic at shared interrupt system.
* Removed Rx polling code
* o Added detailed printk if selftest failed when insmod
* o Removed misleading printks
*
*
* 2.1.12 8/2/02
* 2.1.12 8/2/02
* o Feature: ethtool register dump
* o Feature: ethtool register dump
...
@@ -62,25 +71,6 @@
...
@@ -62,25 +71,6 @@
* o Bug fix: PHY loopback diagnostic fails
* o Bug fix: PHY loopback diagnostic fails
*
*
* 2.1.6 7/5/02
* 2.1.6 7/5/02
* o Added device ID support for Dell LOM.
* o Added device ID support for 82511QM mobile nics.
* o Bug fix: ethtool get/set EEPROM routines modified to use byte
* addressing rather than word addressing.
* o Feature: added MDIX mode support for 82550 and up.
* o Bug fix: added reboot notifer to setup WOL settings when
* shutting system down.
* o Cleanup: removed yield() redefinition (Andrew Morton,
* akpm@zip.com.au).
* o Bug fix: flow control now working when link partner is
* autoneg capable but not flow control capable.
* o Bug fix: added check for corrupted EEPROM
* o Bug fix: don't report checksum offloading for the older
* controllers that don't support the feature.
* o Bug fix: calculate cable diagnostics when link goes down
* rather than when queuering /proc file.
* o Cleanup: move mdi_access_lock to local get/set mdi routines.
*
* 2.0.30 5/30/02
*/
*/
#include <linux/config.h>
#include <linux/config.h>
...
@@ -94,8 +84,8 @@
...
@@ -94,8 +84,8 @@
#include "e100_vendor.h"
#include "e100_vendor.h"
#ifdef CONFIG_PROC_FS
#ifdef CONFIG_PROC_FS
extern
int
e100_create_proc_subdir
(
struct
e100_private
*
);
extern
int
e100_create_proc_subdir
(
struct
e100_private
*
,
char
*
);
extern
void
e100_remove_proc_subdir
(
struct
e100_private
*
);
extern
void
e100_remove_proc_subdir
(
struct
e100_private
*
,
char
*
);
#else
#else
#define e100_create_proc_subdir(X) 0
#define e100_create_proc_subdir(X) 0
#define e100_remove_proc_subdir(X) do {} while(0)
#define e100_remove_proc_subdir(X) do {} while(0)
...
@@ -145,7 +135,7 @@ static void e100_non_tx_background(unsigned long);
...
@@ -145,7 +135,7 @@ static void e100_non_tx_background(unsigned long);
/* Global Data structures and variables */
/* Global Data structures and variables */
char
e100_copyright
[]
__devinitdata
=
"Copyright (c) 2002 Intel Corporation"
;
char
e100_copyright
[]
__devinitdata
=
"Copyright (c) 2002 Intel Corporation"
;
char
e100_driver_version
[]
=
"2.1.
15
-k1"
;
char
e100_driver_version
[]
=
"2.1.
24
-k1"
;
const
char
*
e100_full_driver_name
=
"Intel(R) PRO/100 Network Driver"
;
const
char
*
e100_full_driver_name
=
"Intel(R) PRO/100 Network Driver"
;
char
e100_short_driver_name
[]
=
"e100"
;
char
e100_short_driver_name
[]
=
"e100"
;
static
int
e100nics
=
0
;
static
int
e100nics
=
0
;
...
@@ -154,12 +144,19 @@ static int e100nics = 0;
...
@@ -154,12 +144,19 @@ static int e100nics = 0;
static
int
e100_notify_reboot
(
struct
notifier_block
*
,
unsigned
long
event
,
void
*
ptr
);
static
int
e100_notify_reboot
(
struct
notifier_block
*
,
unsigned
long
event
,
void
*
ptr
);
static
int
e100_suspend
(
struct
pci_dev
*
pcid
,
u32
state
);
static
int
e100_suspend
(
struct
pci_dev
*
pcid
,
u32
state
);
static
int
e100_resume
(
struct
pci_dev
*
pcid
);
static
int
e100_resume
(
struct
pci_dev
*
pcid
);
struct
notifier_block
e100_notifier
=
{
struct
notifier_block
e100_notifier
_reboot
=
{
notifier_call:
e100_notify_reboot
,
notifier_call:
e100_notify_reboot
,
next:
NULL
,
next:
NULL
,
priority:
0
priority:
0
};
};
#endif
#endif
static
int
e100_notify_netdev
(
struct
notifier_block
*
,
unsigned
long
event
,
void
*
ptr
);
struct
notifier_block
e100_notifier_netdev
=
{
notifier_call:
e100_notify_netdev
,
next:
NULL
,
priority:
0
};
static
void
e100_get_mdix_status
(
struct
e100_private
*
bdp
);
static
void
e100_get_mdix_status
(
struct
e100_private
*
bdp
);
...
@@ -651,6 +648,8 @@ e100_found1(struct pci_dev *pcid, const struct pci_device_id *ent)
...
@@ -651,6 +648,8 @@ e100_found1(struct pci_dev *pcid, const struct pci_device_id *ent)
if
((
rc
=
register_netdev
(
dev
))
!=
0
)
{
if
((
rc
=
register_netdev
(
dev
))
!=
0
)
{
goto
err_pci
;
goto
err_pci
;
}
}
memcpy
(
bdp
->
ifname
,
dev
->
name
,
IFNAMSIZ
);
bdp
->
ifname
[
IFNAMSIZ
-
1
]
=
0
;
bdp
->
device_type
=
ent
->
driver_data
;
bdp
->
device_type
=
ent
->
driver_data
;
printk
(
KERN_NOTICE
printk
(
KERN_NOTICE
...
@@ -669,7 +668,7 @@ e100_found1(struct pci_dev *pcid, const struct pci_device_id *ent)
...
@@ -669,7 +668,7 @@ e100_found1(struct pci_dev *pcid, const struct pci_device_id *ent)
bdp
->
cable_status
=
"Not available"
;
bdp
->
cable_status
=
"Not available"
;
}
}
if
(
e100_create_proc_subdir
(
bdp
)
<
0
)
{
if
(
e100_create_proc_subdir
(
bdp
,
bdp
->
ifname
)
<
0
)
{
printk
(
KERN_ERR
"e100: Failed to create proc dir for %s
\n
"
,
printk
(
KERN_ERR
"e100: Failed to create proc dir for %s
\n
"
,
bdp
->
device
->
name
);
bdp
->
device
->
name
);
}
}
...
@@ -733,7 +732,7 @@ e100_remove1(struct pci_dev *pcid)
...
@@ -733,7 +732,7 @@ e100_remove1(struct pci_dev *pcid)
unregister_netdev
(
dev
);
unregister_netdev
(
dev
);
e100_remove_proc_subdir
(
bdp
);
e100_remove_proc_subdir
(
bdp
,
bdp
->
ifname
);
e100_sw_reset
(
bdp
,
PORT_SELECTIVE_RESET
);
e100_sw_reset
(
bdp
,
PORT_SELECTIVE_RESET
);
...
@@ -767,10 +766,12 @@ e100_init_module(void)
...
@@ -767,10 +766,12 @@ e100_init_module(void)
int
ret
;
int
ret
;
ret
=
pci_module_init
(
&
e100_driver
);
ret
=
pci_module_init
(
&
e100_driver
);
#ifdef CONFIG_PM
if
(
ret
>=
0
)
{
if
(
ret
>=
0
)
#ifdef CONFIG_PM
register_reboot_notifier
(
&
e100_notifier
);
register_reboot_notifier
(
&
e100_notifier_reboot
);
#endif
#endif
register_netdevice_notifier
(
&
e100_notifier_netdev
);
}
return
ret
;
return
ret
;
}
}
...
@@ -779,8 +780,9 @@ static void __exit
...
@@ -779,8 +780,9 @@ static void __exit
e100_cleanup_module
(
void
)
e100_cleanup_module
(
void
)
{
{
#ifdef CONFIG_PM
#ifdef CONFIG_PM
unregister_reboot_notifier
(
&
e100_notifier
);
unregister_reboot_notifier
(
&
e100_notifier_reboot
);
#endif
#endif
unregister_netdevice_notifier
(
&
e100_notifier_netdev
);
pci_unregister_driver
(
&
e100_driver
);
pci_unregister_driver
(
&
e100_driver
);
}
}
...
@@ -4091,11 +4093,34 @@ e100_non_tx_background(unsigned long ptr)
...
@@ -4091,11 +4093,34 @@ e100_non_tx_background(unsigned long ptr)
spin_unlock_bh
(
&
(
bdp
->
bd_non_tx_lock
));
spin_unlock_bh
(
&
(
bdp
->
bd_non_tx_lock
));
}
}
int
e100_notify_netdev
(
struct
notifier_block
*
nb
,
unsigned
long
event
,
void
*
p
)
{
struct
e100_private
*
bdp
;
struct
net_device
*
netdev
=
p
;
if
(
netdev
==
NULL
)
return
NOTIFY_DONE
;
switch
(
event
)
{
case
NETDEV_CHANGENAME
:
if
(
netdev
->
open
==
e100_open
)
{
bdp
=
netdev
->
priv
;
/* rename the proc nodes the easy way */
e100_remove_proc_subdir
(
bdp
,
bdp
->
ifname
);
memcpy
(
bdp
->
ifname
,
netdev
->
name
,
IFNAMSIZ
);
bdp
->
ifname
[
IFNAMSIZ
-
1
]
=
0
;
e100_create_proc_subdir
(
bdp
,
bdp
->
ifname
);
}
break
;
}
return
NOTIFY_DONE
;
}
#ifdef CONFIG_PM
#ifdef CONFIG_PM
static
int
static
int
e100_notify_reboot
(
struct
notifier_block
*
nb
,
unsigned
long
event
,
void
*
p
)
e100_notify_reboot
(
struct
notifier_block
*
nb
,
unsigned
long
event
,
void
*
p
)
{
{
struct
pci_dev
*
pdev
=
NULL
;
struct
pci_dev
*
pdev
;
switch
(
event
)
{
switch
(
event
)
{
case
SYS_DOWN
:
case
SYS_DOWN
:
...
...
drivers/net/e100/e100_proc.c
View file @
2896ddff
...
@@ -289,7 +289,7 @@ read_info(char *page, char **start, off_t off, int count, int *eof, void *data)
...
@@ -289,7 +289,7 @@ read_info(char *page, char **start, off_t off, int count, int *eof, void *data)
return
generic_read
(
page
,
start
,
off
,
count
,
eof
,
len
);
return
generic_read
(
page
,
start
,
off
,
count
,
eof
,
len
);
}
}
static
struct
proc_dir_entry
*
__devinit
static
struct
proc_dir_entry
*
create_proc_rw
(
char
*
name
,
void
*
data
,
struct
proc_dir_entry
*
parent
,
create_proc_rw
(
char
*
name
,
void
*
data
,
struct
proc_dir_entry
*
parent
,
read_proc_t
*
read_proc
,
write_proc_t
*
write_proc
)
read_proc_t
*
read_proc
,
write_proc_t
*
write_proc
)
{
{
...
@@ -316,7 +316,7 @@ create_proc_rw(char *name, void *data, struct proc_dir_entry *parent,
...
@@ -316,7 +316,7 @@ create_proc_rw(char *name, void *data, struct proc_dir_entry *parent,
}
}
void
void
e100_remove_proc_subdir
(
struct
e100_private
*
bdp
)
e100_remove_proc_subdir
(
struct
e100_private
*
bdp
,
char
*
name
)
{
{
e100_proc_entry
*
pe
;
e100_proc_entry
*
pe
;
char
info
[
256
];
char
info
[
256
];
...
@@ -327,8 +327,8 @@ e100_remove_proc_subdir(struct e100_private *bdp)
...
@@ -327,8 +327,8 @@ e100_remove_proc_subdir(struct e100_private *bdp)
return
;
return
;
}
}
len
=
strlen
(
bdp
->
device
->
name
);
len
=
strlen
(
bdp
->
if
name
);
strncpy
(
info
,
bdp
->
device
->
name
,
sizeof
(
info
));
strncpy
(
info
,
bdp
->
if
name
,
sizeof
(
info
));
strncat
(
info
+
len
,
".info"
,
sizeof
(
info
)
-
len
);
strncat
(
info
+
len
,
".info"
,
sizeof
(
info
)
-
len
);
if
(
bdp
->
proc_parent
)
{
if
(
bdp
->
proc_parent
)
{
...
@@ -339,7 +339,7 @@ e100_remove_proc_subdir(struct e100_private *bdp)
...
@@ -339,7 +339,7 @@ e100_remove_proc_subdir(struct e100_private *bdp)
remove_proc_entry
(
pe
->
name
,
bdp
->
proc_parent
);
remove_proc_entry
(
pe
->
name
,
bdp
->
proc_parent
);
}
}
remove_proc_entry
(
bdp
->
device
->
name
,
adapters_proc_dir
);
remove_proc_entry
(
bdp
->
if
name
,
adapters_proc_dir
);
bdp
->
proc_parent
=
NULL
;
bdp
->
proc_parent
=
NULL
;
}
}
...
@@ -349,7 +349,7 @@ e100_remove_proc_subdir(struct e100_private *bdp)
...
@@ -349,7 +349,7 @@ e100_remove_proc_subdir(struct e100_private *bdp)
e100_proc_cleanup
();
e100_proc_cleanup
();
}
}
int
__devinit
int
e100_create_proc_subdir
(
struct
e100_private
*
bdp
)
e100_create_proc_subdir
(
struct
e100_private
*
bdp
)
{
{
struct
proc_dir_entry
*
dev_dir
;
struct
proc_dir_entry
*
dev_dir
;
...
@@ -364,7 +364,7 @@ e100_create_proc_subdir(struct e100_private *bdp)
...
@@ -364,7 +364,7 @@ e100_create_proc_subdir(struct e100_private *bdp)
return
-
ENOMEM
;
return
-
ENOMEM
;
}
}
strncpy
(
info
,
bdp
->
device
->
name
,
sizeof
(
info
));
strncpy
(
info
,
bdp
->
if
name
,
sizeof
(
info
));
len
=
strlen
(
info
);
len
=
strlen
(
info
);
strncat
(
info
+
len
,
".info"
,
sizeof
(
info
)
-
len
);
strncat
(
info
+
len
,
".info"
,
sizeof
(
info
)
-
len
);
...
@@ -374,12 +374,12 @@ e100_create_proc_subdir(struct e100_private *bdp)
...
@@ -374,12 +374,12 @@ e100_create_proc_subdir(struct e100_private *bdp)
return
-
ENOMEM
;
return
-
ENOMEM
;
}
}
dev_dir
=
create_proc_entry
(
bdp
->
device
->
name
,
S_IFDIR
,
dev_dir
=
create_proc_entry
(
bdp
->
if
name
,
S_IFDIR
,
adapters_proc_dir
);
adapters_proc_dir
);
bdp
->
proc_parent
=
dev_dir
;
bdp
->
proc_parent
=
dev_dir
;
if
(
!
dev_dir
)
{
if
(
!
dev_dir
)
{
e100_remove_proc_subdir
(
bdp
);
e100_remove_proc_subdir
(
bdp
,
bdp
->
ifname
);
return
-
ENOMEM
;
return
-
ENOMEM
;
}
}
...
@@ -394,7 +394,7 @@ e100_create_proc_subdir(struct e100_private *bdp)
...
@@ -394,7 +394,7 @@ e100_create_proc_subdir(struct e100_private *bdp)
if
(
!
(
create_proc_rw
(
pe
->
name
,
data
,
dev_dir
,
if
(
!
(
create_proc_rw
(
pe
->
name
,
data
,
dev_dir
,
pe
->
read_proc
,
pe
->
write_proc
)))
{
pe
->
read_proc
,
pe
->
write_proc
)))
{
e100_remove_proc_subdir
(
bdp
);
e100_remove_proc_subdir
(
bdp
,
bdp
->
ifname
);
return
-
ENOMEM
;
return
-
ENOMEM
;
}
}
}
}
...
...
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