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
0f7ca591
Commit
0f7ca591
authored
May 03, 2010
by
David S. Miller
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
parents
a2f3be17
d0507009
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
133 additions
and
13 deletions
+133
-13
drivers/net/phy/Kconfig
drivers/net/phy/Kconfig
+5
-0
drivers/net/phy/Makefile
drivers/net/phy/Makefile
+1
-0
drivers/net/phy/micrel.c
drivers/net/phy/micrel.c
+104
-0
drivers/net/ppp_generic.c
drivers/net/ppp_generic.c
+22
-12
drivers/net/usb/dm9601.c
drivers/net/usb/dm9601.c
+1
-1
No files found.
drivers/net/phy/Kconfig
View file @
0f7ca591
...
@@ -88,6 +88,11 @@ config LSI_ET1011C_PHY
...
@@ -88,6 +88,11 @@ config LSI_ET1011C_PHY
---help---
---help---
Supports the LSI ET1011C PHY.
Supports the LSI ET1011C PHY.
config MICREL_PHY
tristate "Driver for Micrel PHYs"
---help---
Supports the KSZ9021, VSC8201, KS8001 PHYs.
config FIXED_PHY
config FIXED_PHY
bool "Driver for MDIO Bus/PHY emulation with fixed speed/link PHYs"
bool "Driver for MDIO Bus/PHY emulation with fixed speed/link PHYs"
depends on PHYLIB=y
depends on PHYLIB=y
...
...
drivers/net/phy/Makefile
View file @
0f7ca591
...
@@ -20,4 +20,5 @@ obj-$(CONFIG_MDIO_BITBANG) += mdio-bitbang.o
...
@@ -20,4 +20,5 @@ obj-$(CONFIG_MDIO_BITBANG) += mdio-bitbang.o
obj-$(CONFIG_MDIO_GPIO)
+=
mdio-gpio.o
obj-$(CONFIG_MDIO_GPIO)
+=
mdio-gpio.o
obj-$(CONFIG_NATIONAL_PHY)
+=
national.o
obj-$(CONFIG_NATIONAL_PHY)
+=
national.o
obj-$(CONFIG_STE10XP)
+=
ste10Xp.o
obj-$(CONFIG_STE10XP)
+=
ste10Xp.o
obj-$(CONFIG_MICREL_PHY)
+=
micrel.o
obj-$(CONFIG_MDIO_OCTEON)
+=
mdio-octeon.o
obj-$(CONFIG_MDIO_OCTEON)
+=
mdio-octeon.o
drivers/net/phy/micrel.c
0 → 100644
View file @
0f7ca591
/*
* drivers/net/phy/micrel.c
*
* Driver for Micrel PHYs
*
* Author: David J. Choi
*
* Copyright (c) 2010 Micrel, Inc.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* Support : ksz9021 , vsc8201, ks8001
*/
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/phy.h>
#define PHY_ID_KSZ9021 0x00221611
#define PHY_ID_VSC8201 0x000FC413
#define PHY_ID_KS8001 0x0022161A
static
int
kszphy_config_init
(
struct
phy_device
*
phydev
)
{
return
0
;
}
static
struct
phy_driver
ks8001_driver
=
{
.
phy_id
=
PHY_ID_KS8001
,
.
phy_id_mask
=
0x00fffff0
,
.
features
=
PHY_BASIC_FEATURES
,
.
flags
=
PHY_POLL
,
.
config_init
=
kszphy_config_init
,
.
config_aneg
=
genphy_config_aneg
,
.
read_status
=
genphy_read_status
,
.
driver
=
{
.
owner
=
THIS_MODULE
,},
};
static
struct
phy_driver
vsc8201_driver
=
{
.
phy_id
=
PHY_ID_VSC8201
,
.
name
=
"Micrel VSC8201"
,
.
phy_id_mask
=
0x00fffff0
,
.
features
=
PHY_BASIC_FEATURES
,
.
flags
=
PHY_POLL
,
.
config_init
=
kszphy_config_init
,
.
config_aneg
=
genphy_config_aneg
,
.
read_status
=
genphy_read_status
,
.
driver
=
{
.
owner
=
THIS_MODULE
,},
};
static
struct
phy_driver
ksz9021_driver
=
{
.
phy_id
=
PHY_ID_KSZ9021
,
.
phy_id_mask
=
0x000fff10
,
.
name
=
"Micrel KSZ9021 Gigabit PHY"
,
.
features
=
PHY_GBIT_FEATURES
|
SUPPORTED_Pause
,
.
flags
=
PHY_POLL
,
.
config_init
=
kszphy_config_init
,
.
config_aneg
=
genphy_config_aneg
,
.
read_status
=
genphy_read_status
,
.
driver
=
{
.
owner
=
THIS_MODULE
,
},
};
static
int
__init
ksphy_init
(
void
)
{
int
ret
;
ret
=
phy_driver_register
(
&
ks8001_driver
);
if
(
ret
)
goto
err1
;
ret
=
phy_driver_register
(
&
vsc8201_driver
);
if
(
ret
)
goto
err2
;
ret
=
phy_driver_register
(
&
ksz9021_driver
);
if
(
ret
)
goto
err3
;
return
0
;
err3:
phy_driver_unregister
(
&
vsc8201_driver
);
err2:
phy_driver_unregister
(
&
ks8001_driver
);
err1:
return
ret
;
}
static
void
__exit
ksphy_exit
(
void
)
{
phy_driver_unregister
(
&
ks8001_driver
);
phy_driver_unregister
(
&
vsc8201_driver
);
phy_driver_unregister
(
&
ksz9021_driver
);
}
module_init
(
ksphy_init
);
module_exit
(
ksphy_exit
);
MODULE_DESCRIPTION
(
"Micrel PHY driver"
);
MODULE_AUTHOR
(
"David J. Choi"
);
MODULE_LICENSE
(
"GPL"
);
drivers/net/ppp_generic.c
View file @
0f7ca591
...
@@ -405,6 +405,7 @@ static ssize_t ppp_read(struct file *file, char __user *buf,
...
@@ -405,6 +405,7 @@ static ssize_t ppp_read(struct file *file, char __user *buf,
DECLARE_WAITQUEUE
(
wait
,
current
);
DECLARE_WAITQUEUE
(
wait
,
current
);
ssize_t
ret
;
ssize_t
ret
;
struct
sk_buff
*
skb
=
NULL
;
struct
sk_buff
*
skb
=
NULL
;
struct
iovec
iov
;
ret
=
count
;
ret
=
count
;
...
@@ -448,7 +449,9 @@ static ssize_t ppp_read(struct file *file, char __user *buf,
...
@@ -448,7 +449,9 @@ static ssize_t ppp_read(struct file *file, char __user *buf,
if
(
skb
->
len
>
count
)
if
(
skb
->
len
>
count
)
goto
outf
;
goto
outf
;
ret
=
-
EFAULT
;
ret
=
-
EFAULT
;
if
(
copy_to_user
(
buf
,
skb
->
data
,
skb
->
len
))
iov
.
iov_base
=
buf
;
iov
.
iov_len
=
count
;
if
(
skb_copy_datagram_iovec
(
skb
,
0
,
&
iov
,
skb
->
len
))
goto
outf
;
goto
outf
;
ret
=
skb
->
len
;
ret
=
skb
->
len
;
...
@@ -1567,13 +1570,22 @@ ppp_input(struct ppp_channel *chan, struct sk_buff *skb)
...
@@ -1567,13 +1570,22 @@ ppp_input(struct ppp_channel *chan, struct sk_buff *skb)
struct
channel
*
pch
=
chan
->
ppp
;
struct
channel
*
pch
=
chan
->
ppp
;
int
proto
;
int
proto
;
if
(
!
pch
||
skb
->
len
==
0
)
{
if
(
!
pch
)
{
kfree_skb
(
skb
);
kfree_skb
(
skb
);
return
;
return
;
}
}
proto
=
PPP_PROTO
(
skb
);
read_lock_bh
(
&
pch
->
upl
);
read_lock_bh
(
&
pch
->
upl
);
if
(
!
pskb_may_pull
(
skb
,
2
))
{
kfree_skb
(
skb
);
if
(
pch
->
ppp
)
{
++
pch
->
ppp
->
dev
->
stats
.
rx_length_errors
;
ppp_receive_error
(
pch
->
ppp
);
}
goto
done
;
}
proto
=
PPP_PROTO
(
skb
);
if
(
!
pch
->
ppp
||
proto
>=
0xc000
||
proto
==
PPP_CCPFRAG
)
{
if
(
!
pch
->
ppp
||
proto
>=
0xc000
||
proto
==
PPP_CCPFRAG
)
{
/* put it on the channel queue */
/* put it on the channel queue */
skb_queue_tail
(
&
pch
->
file
.
rq
,
skb
);
skb_queue_tail
(
&
pch
->
file
.
rq
,
skb
);
...
@@ -1585,6 +1597,8 @@ ppp_input(struct ppp_channel *chan, struct sk_buff *skb)
...
@@ -1585,6 +1597,8 @@ ppp_input(struct ppp_channel *chan, struct sk_buff *skb)
}
else
{
}
else
{
ppp_do_recv
(
pch
->
ppp
,
skb
,
pch
);
ppp_do_recv
(
pch
->
ppp
,
skb
,
pch
);
}
}
done:
read_unlock_bh
(
&
pch
->
upl
);
read_unlock_bh
(
&
pch
->
upl
);
}
}
...
@@ -1617,7 +1631,8 @@ ppp_input_error(struct ppp_channel *chan, int code)
...
@@ -1617,7 +1631,8 @@ ppp_input_error(struct ppp_channel *chan, int code)
static
void
static
void
ppp_receive_frame
(
struct
ppp
*
ppp
,
struct
sk_buff
*
skb
,
struct
channel
*
pch
)
ppp_receive_frame
(
struct
ppp
*
ppp
,
struct
sk_buff
*
skb
,
struct
channel
*
pch
)
{
{
if
(
pskb_may_pull
(
skb
,
2
))
{
/* note: a 0-length skb is used as an error indication */
if
(
skb
->
len
>
0
)
{
#ifdef CONFIG_PPP_MULTILINK
#ifdef CONFIG_PPP_MULTILINK
/* XXX do channel-level decompression here */
/* XXX do channel-level decompression here */
if
(
PPP_PROTO
(
skb
)
==
PPP_MP
)
if
(
PPP_PROTO
(
skb
)
==
PPP_MP
)
...
@@ -1625,15 +1640,10 @@ ppp_receive_frame(struct ppp *ppp, struct sk_buff *skb, struct channel *pch)
...
@@ -1625,15 +1640,10 @@ ppp_receive_frame(struct ppp *ppp, struct sk_buff *skb, struct channel *pch)
else
else
#endif
/* CONFIG_PPP_MULTILINK */
#endif
/* CONFIG_PPP_MULTILINK */
ppp_receive_nonmp_frame
(
ppp
,
skb
);
ppp_receive_nonmp_frame
(
ppp
,
skb
);
return
;
}
else
{
kfree_skb
(
skb
);
ppp_receive_error
(
ppp
);
}
}
if
(
skb
->
len
>
0
)
/* note: a 0-length skb is used as an error indication */
++
ppp
->
dev
->
stats
.
rx_length_errors
;
kfree_skb
(
skb
);
ppp_receive_error
(
ppp
);
}
}
static
void
static
void
...
...
drivers/net/usb/dm9601.c
View file @
0f7ca591
...
@@ -240,7 +240,7 @@ static int dm_write_shared_word(struct usbnet *dev, int phy, u8 reg, __le16 valu
...
@@ -240,7 +240,7 @@ static int dm_write_shared_word(struct usbnet *dev, int phy, u8 reg, __le16 valu
goto
out
;
goto
out
;
dm_write_reg
(
dev
,
DM_SHARED_ADDR
,
phy
?
(
reg
|
0x40
)
:
reg
);
dm_write_reg
(
dev
,
DM_SHARED_ADDR
,
phy
?
(
reg
|
0x40
)
:
reg
);
dm_write_reg
(
dev
,
DM_SHARED_CTRL
,
phy
?
0x1
c
:
0x14
);
dm_write_reg
(
dev
,
DM_SHARED_CTRL
,
phy
?
0x1
a
:
0x12
);
for
(
i
=
0
;
i
<
DM_TIMEOUT
;
i
++
)
{
for
(
i
=
0
;
i
<
DM_TIMEOUT
;
i
++
)
{
u8
tmp
;
u8
tmp
;
...
...
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