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
ede6d085
Commit
ede6d085
authored
Jul 27, 2004
by
Jeff Garzik
Browse files
Options
Browse Files
Download
Plain Diff
Merge pobox.com:/spare/repo/netdev-2.6/epic100
into pobox.com:/spare/repo/netdev-2.6/ALL
parents
5c689888
5e42488f
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
8 additions
and
69 deletions
+8
-69
drivers/net/8390.c
drivers/net/8390.c
+2
-34
drivers/net/8390.h
drivers/net/8390.h
+1
-11
drivers/net/e100.c
drivers/net/e100.c
+5
-24
No files found.
drivers/net/8390.c
View file @
ede6d085
...
@@ -41,6 +41,7 @@
...
@@ -41,6 +41,7 @@
module by all drivers that require it.
module by all drivers that require it.
Alan Cox : Spinlocking work, added 'BUG_83C690'
Alan Cox : Spinlocking work, added 'BUG_83C690'
Paul Gortmaker : Separate out Tx timeout code from Tx path.
Paul Gortmaker : Separate out Tx timeout code from Tx path.
Paul Gortmaker : Remove old unused single Tx buffer code.
Sources:
Sources:
The National Semiconductor LAN Databook, and the 3Com 3c503 databook.
The National Semiconductor LAN Databook, and the 3Com 3c503 databook.
...
@@ -289,8 +290,6 @@ static int ei_start_xmit(struct sk_buff *skb, struct net_device *dev)
...
@@ -289,8 +290,6 @@ static int ei_start_xmit(struct sk_buff *skb, struct net_device *dev)
send_length
=
ETH_ZLEN
<
length
?
length
:
ETH_ZLEN
;
send_length
=
ETH_ZLEN
<
length
?
length
:
ETH_ZLEN
;
#ifdef EI_PINGPONG
/*
/*
* We have two Tx slots available for use. Find the first free
* We have two Tx slots available for use. Find the first free
* slot, and then perform some sanity checks. With two Tx bufs,
* slot, and then perform some sanity checks. With two Tx bufs,
...
@@ -309,7 +308,7 @@ static int ei_start_xmit(struct sk_buff *skb, struct net_device *dev)
...
@@ -309,7 +308,7 @@ static int ei_start_xmit(struct sk_buff *skb, struct net_device *dev)
}
}
else
if
(
ei_local
->
tx2
==
0
)
else
if
(
ei_local
->
tx2
==
0
)
{
{
output_page
=
ei_local
->
tx_start_page
+
TX_
1X_PAGES
;
output_page
=
ei_local
->
tx_start_page
+
TX_
PAGES
/
2
;
ei_local
->
tx2
=
send_length
;
ei_local
->
tx2
=
send_length
;
if
(
ei_debug
&&
ei_local
->
tx1
>
0
)
if
(
ei_debug
&&
ei_local
->
tx1
>
0
)
printk
(
KERN_DEBUG
"%s: idle transmitter, tx1=%d, lasttx=%d, txing=%d.
\n
"
,
printk
(
KERN_DEBUG
"%s: idle transmitter, tx1=%d, lasttx=%d, txing=%d.
\n
"
,
...
@@ -366,28 +365,6 @@ static int ei_start_xmit(struct sk_buff *skb, struct net_device *dev)
...
@@ -366,28 +365,6 @@ static int ei_start_xmit(struct sk_buff *skb, struct net_device *dev)
else
else
netif_start_queue
(
dev
);
netif_start_queue
(
dev
);
#else
/* EI_PINGPONG */
/*
* Only one Tx buffer in use. You need two Tx bufs to come close to
* back-to-back transmits. Expect a 20 -> 25% performance hit on
* reasonable hardware if you only use one Tx buffer.
*/
if
(
length
==
send_length
)
ei_block_output
(
dev
,
length
,
skb
->
data
,
ei_local
->
tx_start_page
);
else
{
memset
(
scratch
,
0
,
ETH_ZLEN
);
memcpy
(
scratch
,
skb
->
data
,
skb
->
len
);
ei_block_output
(
dev
,
ETH_ZLEN
,
scratch
,
ei_local
->
tx_start_page
);
}
ei_local
->
txing
=
1
;
NS8390_trigger_send
(
dev
,
send_length
,
ei_local
->
tx_start_page
);
dev
->
trans_start
=
jiffies
;
netif_stop_queue
(
dev
);
#endif
/* EI_PINGPONG */
/* Turn 8390 interrupts back on. */
/* Turn 8390 interrupts back on. */
ei_local
->
irqlock
=
0
;
ei_local
->
irqlock
=
0
;
outb_p
(
ENISR_ALL
,
e8390_base
+
EN0_IMR
);
outb_p
(
ENISR_ALL
,
e8390_base
+
EN0_IMR
);
...
@@ -590,8 +567,6 @@ static void ei_tx_intr(struct net_device *dev)
...
@@ -590,8 +567,6 @@ static void ei_tx_intr(struct net_device *dev)
outb_p
(
ENISR_TX
,
e8390_base
+
EN0_ISR
);
/* Ack intr. */
outb_p
(
ENISR_TX
,
e8390_base
+
EN0_ISR
);
/* Ack intr. */
#ifdef EI_PINGPONG
/*
/*
* There are two Tx buffers, see which one finished, and trigger
* There are two Tx buffers, see which one finished, and trigger
* the send of another one if it exists.
* the send of another one if it exists.
...
@@ -634,13 +609,6 @@ static void ei_tx_intr(struct net_device *dev)
...
@@ -634,13 +609,6 @@ static void ei_tx_intr(struct net_device *dev)
// else printk(KERN_WARNING "%s: unexpected TX-done interrupt, lasttx=%d.\n",
// else printk(KERN_WARNING "%s: unexpected TX-done interrupt, lasttx=%d.\n",
// dev->name, ei_local->lasttx);
// dev->name, ei_local->lasttx);
#else
/* EI_PINGPONG */
/*
* Single Tx buffer: mark it free so another packet can be loaded.
*/
ei_local
->
txing
=
0
;
#endif
/* Minimize Tx latency: update the statistics after we restart TXing. */
/* Minimize Tx latency: update the statistics after we restart TXing. */
if
(
status
&
ENTSR_COL
)
if
(
status
&
ENTSR_COL
)
ei_local
->
stat
.
collisions
++
;
ei_local
->
stat
.
collisions
++
;
...
...
drivers/net/8390.h
View file @
ede6d085
...
@@ -12,17 +12,7 @@
...
@@ -12,17 +12,7 @@
#include <linux/ioport.h>
#include <linux/ioport.h>
#include <linux/skbuff.h>
#include <linux/skbuff.h>
#define TX_2X_PAGES 12
#define TX_PAGES 12
/* Two Tx slots */
#define TX_1X_PAGES 6
/* Should always use two Tx slots to get back-to-back transmits. */
#define EI_PINGPONG
#ifdef EI_PINGPONG
#define TX_PAGES TX_2X_PAGES
#else
#define TX_PAGES TX_1X_PAGES
#endif
#define ETHER_ADDR_LEN 6
#define ETHER_ADDR_LEN 6
...
...
drivers/net/e100.c
View file @
ede6d085
...
@@ -87,9 +87,8 @@
...
@@ -87,9 +87,8 @@
* cb_to_use is the next CB to use for queuing a command; cb_to_clean
* cb_to_use is the next CB to use for queuing a command; cb_to_clean
* is the next CB to check for completion; cb_to_send is the first
* is the next CB to check for completion; cb_to_send is the first
* CB to start on in case of a previous failure to resume. CB clean
* CB to start on in case of a previous failure to resume. CB clean
* up happens in interrupt context in response to a CU interrupt, or
* up happens in interrupt context in response to a CU interrupt.
* in dev->poll in the case where NAPI is enabled. cbs_avail keeps
* cbs_avail keeps track of number of free CB resources available.
* track of number of free CB resources available.
*
*
* Hardware padding of short packets to minimum packet size is
* Hardware padding of short packets to minimum packet size is
* enabled. 82557 pads with 7Eh, while the later controllers pad
* enabled. 82557 pads with 7Eh, while the later controllers pad
...
@@ -112,9 +111,8 @@
...
@@ -112,9 +111,8 @@
* replacement RFDs cannot be allocated, or the RU goes non-active,
* replacement RFDs cannot be allocated, or the RU goes non-active,
* the RU must be restarted. Frame arrival generates an interrupt,
* the RU must be restarted. Frame arrival generates an interrupt,
* and Rx indication and re-allocation happen in the same context,
* and Rx indication and re-allocation happen in the same context,
* therefore no locking is required. If NAPI is enabled, this work
* therefore no locking is required. A software-generated interrupt
* happens in dev->poll. A software-generated interrupt is gen-
* is generated from the watchdog to recover from a failed allocation
* erated from the watchdog to recover from a failed allocation
* senario where all Rx resources have been indicated and none re-
* senario where all Rx resources have been indicated and none re-
* placed.
* placed.
*
*
...
@@ -126,8 +124,6 @@
...
@@ -126,8 +124,6 @@
* supported. Tx Scatter/Gather is not supported. Jumbo Frames is
* supported. Tx Scatter/Gather is not supported. Jumbo Frames is
* not supported (hardware limitation).
* not supported (hardware limitation).
*
*
* NAPI support is enabled with CONFIG_E100_NAPI.
*
* MagicPacket(tm) WoL support is enabled/disabled via ethtool.
* MagicPacket(tm) WoL support is enabled/disabled via ethtool.
*
*
* Thanks to JC (jchapman@katalix.com) for helping with
* Thanks to JC (jchapman@katalix.com) for helping with
...
@@ -158,7 +154,7 @@
...
@@ -158,7 +154,7 @@
#define DRV_NAME "e100"
#define DRV_NAME "e100"
#define DRV_VERSION "3.0.
18
"
#define DRV_VERSION "3.0.
22-NAPI
"
#define DRV_DESCRIPTION "Intel(R) PRO/100 Network Driver"
#define DRV_DESCRIPTION "Intel(R) PRO/100 Network Driver"
#define DRV_COPYRIGHT "Copyright(c) 1999-2004 Intel Corporation"
#define DRV_COPYRIGHT "Copyright(c) 1999-2004 Intel Corporation"
#define PFX DRV_NAME ": "
#define PFX DRV_NAME ": "
...
@@ -1463,11 +1459,7 @@ static inline int e100_rx_indicate(struct nic *nic, struct rx *rx,
...
@@ -1463,11 +1459,7 @@ static inline int e100_rx_indicate(struct nic *nic, struct rx *rx,
nic
->
net_stats
.
rx_packets
++
;
nic
->
net_stats
.
rx_packets
++
;
nic
->
net_stats
.
rx_bytes
+=
actual_size
;
nic
->
net_stats
.
rx_bytes
+=
actual_size
;
nic
->
netdev
->
last_rx
=
jiffies
;
nic
->
netdev
->
last_rx
=
jiffies
;
#ifdef CONFIG_E100_NAPI
netif_receive_skb
(
skb
);
netif_receive_skb
(
skb
);
#else
netif_rx
(
skb
);
#endif
if
(
work_done
)
if
(
work_done
)
(
*
work_done
)
++
;
(
*
work_done
)
++
;
}
}
...
@@ -1562,20 +1554,12 @@ static irqreturn_t e100_intr(int irq, void *dev_id, struct pt_regs *regs)
...
@@ -1562,20 +1554,12 @@ static irqreturn_t e100_intr(int irq, void *dev_id, struct pt_regs *regs)
if
(
stat_ack
&
stat_ack_rnr
)
if
(
stat_ack
&
stat_ack_rnr
)
nic
->
ru_running
=
0
;
nic
->
ru_running
=
0
;
#ifdef CONFIG_E100_NAPI
e100_disable_irq
(
nic
);
e100_disable_irq
(
nic
);
netif_rx_schedule
(
netdev
);
netif_rx_schedule
(
netdev
);
#else
if
(
stat_ack
&
stat_ack_rx
)
e100_rx_clean
(
nic
,
NULL
,
0
);
if
(
stat_ack
&
stat_ack_tx
)
e100_tx_clean
(
nic
);
#endif
return
IRQ_HANDLED
;
return
IRQ_HANDLED
;
}
}
#ifdef CONFIG_E100_NAPI
static
int
e100_poll
(
struct
net_device
*
netdev
,
int
*
budget
)
static
int
e100_poll
(
struct
net_device
*
netdev
,
int
*
budget
)
{
{
struct
nic
*
nic
=
netdev_priv
(
netdev
);
struct
nic
*
nic
=
netdev_priv
(
netdev
);
...
@@ -1598,7 +1582,6 @@ static int e100_poll(struct net_device *netdev, int *budget)
...
@@ -1598,7 +1582,6 @@ static int e100_poll(struct net_device *netdev, int *budget)
return
1
;
return
1
;
}
}
#endif
#ifdef CONFIG_NET_POLL_CONTROLLER
#ifdef CONFIG_NET_POLL_CONTROLLER
static
void
e100_netpoll
(
struct
net_device
*
netdev
)
static
void
e100_netpoll
(
struct
net_device
*
netdev
)
...
@@ -2135,10 +2118,8 @@ static int __devinit e100_probe(struct pci_dev *pdev,
...
@@ -2135,10 +2118,8 @@ static int __devinit e100_probe(struct pci_dev *pdev,
SET_ETHTOOL_OPS
(
netdev
,
&
e100_ethtool_ops
);
SET_ETHTOOL_OPS
(
netdev
,
&
e100_ethtool_ops
);
netdev
->
tx_timeout
=
e100_tx_timeout
;
netdev
->
tx_timeout
=
e100_tx_timeout
;
netdev
->
watchdog_timeo
=
E100_WATCHDOG_PERIOD
;
netdev
->
watchdog_timeo
=
E100_WATCHDOG_PERIOD
;
#ifdef CONFIG_E100_NAPI
netdev
->
poll
=
e100_poll
;
netdev
->
poll
=
e100_poll
;
netdev
->
weight
=
E100_NAPI_WEIGHT
;
netdev
->
weight
=
E100_NAPI_WEIGHT
;
#endif
#ifdef CONFIG_NET_POLL_CONTROLLER
#ifdef CONFIG_NET_POLL_CONTROLLER
netdev
->
poll_controller
=
e100_netpoll
;
netdev
->
poll_controller
=
e100_netpoll
;
#endif
#endif
...
...
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