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
5ee33b7a
Commit
5ee33b7a
authored
Mar 11, 2006
by
Jeff Garzik
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'for-jeff' of
git://electric-eye.fr.zoreil.com/home/romieu/linux-2.6
parents
ed621785
70f1be48
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
34 additions
and
24 deletions
+34
-24
drivers/net/sky2.c
drivers/net/sky2.c
+21
-11
drivers/net/tulip/de2104x.c
drivers/net/tulip/de2104x.c
+13
-13
No files found.
drivers/net/sky2.c
View file @
5ee33b7a
...
@@ -74,7 +74,7 @@
...
@@ -74,7 +74,7 @@
#define TX_RING_SIZE 512
#define TX_RING_SIZE 512
#define TX_DEF_PENDING (TX_RING_SIZE - 1)
#define TX_DEF_PENDING (TX_RING_SIZE - 1)
#define TX_MIN_PENDING 64
#define TX_MIN_PENDING 64
#define MAX_SKB_TX_LE (4 +
2
*MAX_SKB_FRAGS)
#define MAX_SKB_TX_LE (4 +
(sizeof(dma_addr_t)/sizeof(u32))
*MAX_SKB_FRAGS)
#define STATUS_RING_SIZE 2048
/* 2 ports * (TX + 2*RX) */
#define STATUS_RING_SIZE 2048
/* 2 ports * (TX + 2*RX) */
#define STATUS_LE_BYTES (STATUS_RING_SIZE*sizeof(struct sky2_status_le))
#define STATUS_LE_BYTES (STATUS_RING_SIZE*sizeof(struct sky2_status_le))
...
@@ -622,8 +622,8 @@ static void sky2_mac_init(struct sky2_hw *hw, unsigned port)
...
@@ -622,8 +622,8 @@ static void sky2_mac_init(struct sky2_hw *hw, unsigned port)
/* Configure Rx MAC FIFO */
/* Configure Rx MAC FIFO */
sky2_write8
(
hw
,
SK_REG
(
port
,
RX_GMF_CTRL_T
),
GMF_RST_CLR
);
sky2_write8
(
hw
,
SK_REG
(
port
,
RX_GMF_CTRL_T
),
GMF_RST_CLR
);
sky2_write
16
(
hw
,
SK_REG
(
port
,
RX_GMF_CTRL_T
),
sky2_write
32
(
hw
,
SK_REG
(
port
,
RX_GMF_CTRL_T
),
GMF_
RX_CTRL_DEF
);
GMF_
OPER_ON
|
GMF_RX_F_FL_ON
);
/* Flush Rx MAC FIFO on any flow control or error */
/* Flush Rx MAC FIFO on any flow control or error */
sky2_write16
(
hw
,
SK_REG
(
port
,
RX_GMF_FL_MSK
),
GMR_FS_ANY_ERR
);
sky2_write16
(
hw
,
SK_REG
(
port
,
RX_GMF_FL_MSK
),
GMR_FS_ANY_ERR
);
...
@@ -995,6 +995,10 @@ static int sky2_rx_start(struct sky2_port *sky2)
...
@@ -995,6 +995,10 @@ static int sky2_rx_start(struct sky2_port *sky2)
sky2_rx_add
(
sky2
,
re
->
mapaddr
);
sky2_rx_add
(
sky2
,
re
->
mapaddr
);
}
}
/* Truncate oversize frames */
sky2_write16
(
hw
,
SK_REG
(
sky2
->
port
,
RX_GMF_TR_THR
),
sky2
->
rx_bufsize
-
8
);
sky2_write32
(
hw
,
SK_REG
(
sky2
->
port
,
RX_GMF_CTRL_T
),
RX_TRUNC_ON
);
/* Tell chip about available buffers */
/* Tell chip about available buffers */
sky2_write16
(
hw
,
Y2_QADDR
(
rxq
,
PREF_UNIT_PUT_IDX
),
sky2
->
rx_put
);
sky2_write16
(
hw
,
Y2_QADDR
(
rxq
,
PREF_UNIT_PUT_IDX
),
sky2
->
rx_put
);
sky2
->
rx_last_put
=
sky2_read16
(
hw
,
Y2_QADDR
(
rxq
,
PREF_UNIT_PUT_IDX
));
sky2
->
rx_last_put
=
sky2_read16
(
hw
,
Y2_QADDR
(
rxq
,
PREF_UNIT_PUT_IDX
));
...
@@ -1145,6 +1149,7 @@ static int sky2_xmit_frame(struct sk_buff *skb, struct net_device *dev)
...
@@ -1145,6 +1149,7 @@ static int sky2_xmit_frame(struct sk_buff *skb, struct net_device *dev)
struct
sky2_tx_le
*
le
=
NULL
;
struct
sky2_tx_le
*
le
=
NULL
;
struct
tx_ring_info
*
re
;
struct
tx_ring_info
*
re
;
unsigned
i
,
len
;
unsigned
i
,
len
;
int
avail
;
dma_addr_t
mapping
;
dma_addr_t
mapping
;
u32
addr64
;
u32
addr64
;
u16
mss
;
u16
mss
;
...
@@ -1287,12 +1292,16 @@ static int sky2_xmit_frame(struct sk_buff *skb, struct net_device *dev)
...
@@ -1287,12 +1292,16 @@ static int sky2_xmit_frame(struct sk_buff *skb, struct net_device *dev)
re
->
idx
=
sky2
->
tx_prod
;
re
->
idx
=
sky2
->
tx_prod
;
le
->
ctrl
|=
EOP
;
le
->
ctrl
|=
EOP
;
avail
=
tx_avail
(
sky2
);
if
(
mss
!=
0
||
avail
<
TX_MIN_PENDING
)
{
le
->
ctrl
|=
FRC_STAT
;
if
(
avail
<=
MAX_SKB_TX_LE
)
netif_stop_queue
(
dev
);
}
sky2_put_idx
(
hw
,
txqaddr
[
sky2
->
port
],
sky2
->
tx_prod
,
sky2_put_idx
(
hw
,
txqaddr
[
sky2
->
port
],
sky2
->
tx_prod
,
&
sky2
->
tx_last_put
,
TX_RING_SIZE
);
&
sky2
->
tx_last_put
,
TX_RING_SIZE
);
if
(
tx_avail
(
sky2
)
<=
MAX_SKB_TX_LE
)
netif_stop_queue
(
dev
);
out_unlock:
out_unlock:
spin_unlock
(
&
sky2
->
tx_lock
);
spin_unlock
(
&
sky2
->
tx_lock
);
...
@@ -1707,10 +1716,12 @@ static void sky2_tx_timeout(struct net_device *dev)
...
@@ -1707,10 +1716,12 @@ static void sky2_tx_timeout(struct net_device *dev)
#define roundup(x, y) ((((x)+((y)-1))/(y))*(y))
#define roundup(x, y) ((((x)+((y)-1))/(y))*(y))
/* Want receive buffer size to be multiple of 64 bits, and incl room for vlan */
/* Want receive buffer size to be multiple of 64 bits
* and incl room for vlan and truncation
*/
static
inline
unsigned
sky2_buf_size
(
int
mtu
)
static
inline
unsigned
sky2_buf_size
(
int
mtu
)
{
{
return
roundup
(
mtu
+
ETH_HLEN
+
4
,
8
)
;
return
roundup
(
mtu
+
ETH_HLEN
+
VLAN_HLEN
,
8
)
+
8
;
}
}
static
int
sky2_change_mtu
(
struct
net_device
*
dev
,
int
new_mtu
)
static
int
sky2_change_mtu
(
struct
net_device
*
dev
,
int
new_mtu
)
...
@@ -1793,7 +1804,7 @@ static struct sk_buff *sky2_receive(struct sky2_port *sky2,
...
@@ -1793,7 +1804,7 @@ static struct sk_buff *sky2_receive(struct sky2_port *sky2,
if
(
!
(
status
&
GMR_FS_RX_OK
))
if
(
!
(
status
&
GMR_FS_RX_OK
))
goto
resubmit
;
goto
resubmit
;
if
(
(
status
>>
16
)
!=
length
||
length
>
sky2
->
rx_bufsize
)
if
(
length
>
sky2
->
netdev
->
mtu
+
ETH_HLEN
)
goto
oversize
;
goto
oversize
;
if
(
length
<
copybreak
)
{
if
(
length
<
copybreak
)
{
...
@@ -3243,8 +3254,7 @@ static int __devinit sky2_probe(struct pci_dev *pdev,
...
@@ -3243,8 +3254,7 @@ static int __devinit sky2_probe(struct pci_dev *pdev,
}
}
}
}
err
=
request_irq
(
pdev
->
irq
,
sky2_intr
,
SA_SHIRQ
|
SA_SAMPLE_RANDOM
,
err
=
request_irq
(
pdev
->
irq
,
sky2_intr
,
SA_SHIRQ
,
DRV_NAME
,
hw
);
DRV_NAME
,
hw
);
if
(
err
)
{
if
(
err
)
{
printk
(
KERN_ERR
PFX
"%s: cannot assign irq %d
\n
"
,
printk
(
KERN_ERR
PFX
"%s: cannot assign irq %d
\n
"
,
pci_name
(
pdev
),
pdev
->
irq
);
pci_name
(
pdev
),
pdev
->
irq
);
...
...
drivers/net/tulip/de2104x.c
View file @
5ee33b7a
...
@@ -1362,7 +1362,6 @@ static int de_open (struct net_device *dev)
...
@@ -1362,7 +1362,6 @@ static int de_open (struct net_device *dev)
{
{
struct
de_private
*
de
=
dev
->
priv
;
struct
de_private
*
de
=
dev
->
priv
;
int
rc
;
int
rc
;
unsigned
long
flags
;
if
(
netif_msg_ifup
(
de
))
if
(
netif_msg_ifup
(
de
))
printk
(
KERN_DEBUG
"%s: enabling interface
\n
"
,
dev
->
name
);
printk
(
KERN_DEBUG
"%s: enabling interface
\n
"
,
dev
->
name
);
...
@@ -1376,18 +1375,20 @@ static int de_open (struct net_device *dev)
...
@@ -1376,18 +1375,20 @@ static int de_open (struct net_device *dev)
return
rc
;
return
rc
;
}
}
rc
=
de_init_hw
(
de
);
dw32
(
IntrMask
,
0
);
if
(
rc
)
{
printk
(
KERN_ERR
"%s: h/w init failure, err=%d
\n
"
,
dev
->
name
,
rc
);
goto
err_out_free
;
}
rc
=
request_irq
(
dev
->
irq
,
de_interrupt
,
SA_SHIRQ
,
dev
->
name
,
dev
);
rc
=
request_irq
(
dev
->
irq
,
de_interrupt
,
SA_SHIRQ
,
dev
->
name
,
dev
);
if
(
rc
)
{
if
(
rc
)
{
printk
(
KERN_ERR
"%s: IRQ %d request failure, err=%d
\n
"
,
printk
(
KERN_ERR
"%s: IRQ %d request failure, err=%d
\n
"
,
dev
->
name
,
dev
->
irq
,
rc
);
dev
->
name
,
dev
->
irq
,
rc
);
goto
err_out_hw
;
goto
err_out_free
;
}
rc
=
de_init_hw
(
de
);
if
(
rc
)
{
printk
(
KERN_ERR
"%s: h/w init failure, err=%d
\n
"
,
dev
->
name
,
rc
);
goto
err_out_free_irq
;
}
}
netif_start_queue
(
dev
);
netif_start_queue
(
dev
);
...
@@ -1395,11 +1396,8 @@ static int de_open (struct net_device *dev)
...
@@ -1395,11 +1396,8 @@ static int de_open (struct net_device *dev)
return
0
;
return
0
;
err_out_hw:
err_out_free_irq:
spin_lock_irqsave
(
&
de
->
lock
,
flags
);
free_irq
(
dev
->
irq
,
dev
);
de_stop_hw
(
de
);
spin_unlock_irqrestore
(
&
de
->
lock
,
flags
);
err_out_free:
err_out_free:
de_free_rings
(
de
);
de_free_rings
(
de
);
return
rc
;
return
rc
;
...
@@ -1455,6 +1453,8 @@ static void de_tx_timeout (struct net_device *dev)
...
@@ -1455,6 +1453,8 @@ static void de_tx_timeout (struct net_device *dev)
synchronize_irq
(
dev
->
irq
);
synchronize_irq
(
dev
->
irq
);
de_clean_rings
(
de
);
de_clean_rings
(
de
);
de_init_rings
(
de
);
de_init_hw
(
de
);
de_init_hw
(
de
);
netif_wake_queue
(
dev
);
netif_wake_queue
(
dev
);
...
...
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