Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
Commits
f5a702b2
Commit
f5a702b2
authored
May 25, 2005
by
Committed by
Jeff Garzik
May 25, 2005
Browse files
Options
Browse Files
Download
Plain Diff
Automatic merge of /spare/repo/netdev-2.6 branch ns83820
parents
5ea6f2c3
c16ef1ce
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
29 additions
and
40 deletions
+29
-40
drivers/net/ns83820.c
drivers/net/ns83820.c
+29
-40
No files found.
drivers/net/ns83820.c
View file @
f5a702b2
#define
_VERSION "0.20
"
#define
VERSION "0.22
"
/* ns83820.c by Benjamin LaHaise with contributions.
*
* Questions/comments/discussion to linux-ns83820@kvack.org.
...
...
@@ -63,9 +63,11 @@
* - fix missed txok introduced during performance
* tuning
* 0.20 - fix stupid RFEN thinko. i am such a smurf.
*
* 20040828 0.21 - add hardware vlan accleration
* by Neil Horman <nhorman@redhat.com>
* 20050406 0.22 - improved DAC ifdefs from Andi Kleen
* - removal of dead code from Adrian Bunk
* - fix half duplex collision behaviour
* Driver Overview
* ===============
*
...
...
@@ -129,18 +131,6 @@ static int lnksts = 0; /* CFG_LNKSTS bit polarity */
#undef Dprintk
#define Dprintk dprintk
#if defined(CONFIG_HIGHMEM64G) || defined(__ia64__)
#define USE_64BIT_ADDR "+"
#endif
#if defined(USE_64BIT_ADDR)
#define VERSION _VERSION USE_64BIT_ADDR
#define TRY_DAC 1
#else
#define VERSION _VERSION
#define TRY_DAC 0
#endif
/* tunables */
#define RX_BUF_SIZE 1500
/* 8192 */
#if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE)
...
...
@@ -386,22 +376,16 @@ static int lnksts = 0; /* CFG_LNKSTS bit polarity */
#define LINK_DOWN 0x02
#define LINK_UP 0x04
#ifdef USE_64BIT_ADDR
#define HW_ADDR_LEN 8
#define HW_ADDR_LEN sizeof(dma_addr_t)
#define desc_addr_set(desc, addr) \
do { \
u64 __addr = (addr);
\
(desc)[0] = cpu_to_le32(__addr);
\
(desc)[1] = cpu_to_le32(__addr >> 32);
\
((desc)[0] = cpu_to_le32(addr));
\
if (HW_ADDR_LEN == 8)
\
(desc)[1] = cpu_to_le32(((u64)addr) >> 32);
\
} while(0)
#define desc_addr_get(desc) \
(((u64)le32_to_cpu((desc)[1]) << 32) \
| le32_to_cpu((desc)[0]))
#else
#define HW_ADDR_LEN 4
#define desc_addr_set(desc, addr) ((desc)[0] = cpu_to_le32(addr))
#define desc_addr_get(desc) (le32_to_cpu((desc)[0]))
#endif
(le32_to_cpu((desc)[0]) | \
(HW_ADDR_LEN == 8 ? ((dma_addr_t)le32_to_cpu((desc)[1]))<<32 : 0))
#define DESC_LINK 0
#define DESC_BUFPTR (DESC_LINK + HW_ADDR_LEN/4)
...
...
@@ -727,11 +711,23 @@ static void fastcall phy_intr(struct net_device *ndev)
speed
=
((
cfg
/
CFG_SPDSTS0
)
&
3
);
fullduplex
=
(
cfg
&
CFG_DUPSTS
);
if
(
fullduplex
)
if
(
fullduplex
)
{
new_cfg
|=
CFG_SB
;
writel
(
readl
(
dev
->
base
+
TXCFG
)
|
TXCFG_CSI
|
TXCFG_HBI
,
dev
->
base
+
TXCFG
);
writel
(
readl
(
dev
->
base
+
RXCFG
)
|
RXCFG_RX_FD
,
dev
->
base
+
RXCFG
);
}
else
{
writel
(
readl
(
dev
->
base
+
TXCFG
)
&
~
(
TXCFG_CSI
|
TXCFG_HBI
),
dev
->
base
+
TXCFG
);
writel
(
readl
(
dev
->
base
+
RXCFG
)
&
~
(
RXCFG_RX_FD
),
dev
->
base
+
RXCFG
);
}
if
((
cfg
&
CFG_LNKSTS
)
&&
((
new_cfg
^
dev
->
CFG_cache
)
&
CFG_MODE_100
0
))
{
((
new_cfg
^
dev
->
CFG_cache
)
!=
0
))
{
writel
(
new_cfg
,
dev
->
base
+
CFG
);
dev
->
CFG_cache
=
new_cfg
;
}
...
...
@@ -1189,7 +1185,6 @@ again:
for
(;;)
{
volatile
u32
*
desc
=
dev
->
tx_descs
+
(
free_idx
*
DESC_SIZE
);
u32
residue
=
0
;
dprintk
(
"frag[%3u]: %4u @ 0x%08Lx
\n
"
,
free_idx
,
len
,
(
unsigned
long
long
)
buf
);
...
...
@@ -1199,17 +1194,11 @@ again:
desc_addr_set
(
desc
+
DESC_BUFPTR
,
buf
);
desc
[
DESC_EXTSTS
]
=
cpu_to_le32
(
extsts
);
cmdsts
=
((
nr_frags
|
residue
)
?
CMDSTS_MORE
:
do_intr
?
CMDSTS_INTR
:
0
);
cmdsts
=
((
nr_frags
)
?
CMDSTS_MORE
:
do_intr
?
CMDSTS_INTR
:
0
);
cmdsts
|=
(
desc
==
first_desc
)
?
0
:
CMDSTS_OWN
;
cmdsts
|=
len
;
desc
[
DESC_CMDSTS
]
=
cpu_to_le32
(
cmdsts
);
if
(
residue
)
{
buf
+=
len
;
len
=
residue
;
continue
;
}
if
(
!
nr_frags
)
break
;
...
...
@@ -1841,7 +1830,8 @@ static int __devinit ns83820_init_one(struct pci_dev *pci_dev, const struct pci_
int
using_dac
=
0
;
/* See if we can set the dma mask early on; failure is fatal. */
if
(
TRY_DAC
&&
!
pci_set_dma_mask
(
pci_dev
,
0xffffffffffffffffULL
))
{
if
(
sizeof
(
dma_addr_t
)
==
8
&&
!
pci_set_dma_mask
(
pci_dev
,
0xffffffffffffffffULL
))
{
using_dac
=
1
;
}
else
if
(
!
pci_set_dma_mask
(
pci_dev
,
0xffffffff
))
{
using_dac
=
0
;
...
...
@@ -1972,9 +1962,8 @@ static int __devinit ns83820_init_one(struct pci_dev *pci_dev, const struct pci_
/* When compiled with 64 bit addressing, we must always enable
* the 64 bit descriptor format.
*/
#ifdef USE_64BIT_ADDR
if
(
sizeof
(
dma_addr_t
)
==
8
)
dev
->
CFG_cache
|=
CFG_M64ADDR
;
#endif
if
(
using_dac
)
dev
->
CFG_cache
|=
CFG_T64ADDR
;
...
...
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