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
Kirill Smelkov
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
Hide 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 @@
module by all drivers that require it.
Alan Cox : Spinlocking work, added 'BUG_83C690'
Paul Gortmaker : Separate out Tx timeout code from Tx path.
Paul Gortmaker : Remove old unused single Tx buffer code.
Sources:
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)
send_length
=
ETH_ZLEN
<
length
?
length
:
ETH_ZLEN
;
#ifdef EI_PINGPONG
/*
* We have two Tx slots available for use. Find the first free
* 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)
}
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
;
if
(
ei_debug
&&
ei_local
->
tx1
>
0
)
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)
else
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. */
ei_local
->
irqlock
=
0
;
outb_p
(
ENISR_ALL
,
e8390_base
+
EN0_IMR
);
...
...
@@ -590,8 +567,6 @@ static void ei_tx_intr(struct net_device *dev)
outb_p
(
ENISR_TX
,
e8390_base
+
EN0_ISR
);
/* Ack intr. */
#ifdef EI_PINGPONG
/*
* There are two Tx buffers, see which one finished, and trigger
* the send of another one if it exists.
...
...
@@ -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",
// 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. */
if
(
status
&
ENTSR_COL
)
ei_local
->
stat
.
collisions
++
;
...
...
drivers/net/8390.h
View file @
ede6d085
...
...
@@ -12,17 +12,7 @@
#include <linux/ioport.h>
#include <linux/skbuff.h>
#define TX_2X_PAGES 12
#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 TX_PAGES 12
/* Two Tx slots */
#define ETHER_ADDR_LEN 6
...
...
drivers/net/e100.c
View file @
ede6d085
...
...
@@ -87,9 +87,8 @@
* 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
* 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
* in dev->poll in the case where NAPI is enabled. cbs_avail keeps
* track of number of free CB resources available.
* up happens in interrupt context in response to a CU interrupt.
* cbs_avail keeps track of number of free CB resources available.
*
* Hardware padding of short packets to minimum packet size is
* enabled. 82557 pads with 7Eh, while the later controllers pad
...
...
@@ -112,9 +111,8 @@
* replacement RFDs cannot be allocated, or the RU goes non-active,
* the RU must be restarted. Frame arrival generates an interrupt,
* and Rx indication and re-allocation happen in the same context,
* therefore no locking is required. If NAPI is enabled, this work
* happens in dev->poll. A software-generated interrupt is gen-
* erated from the watchdog to recover from a failed allocation
* therefore no locking is required. A software-generated interrupt
* is generated from the watchdog to recover from a failed allocation
* senario where all Rx resources have been indicated and none re-
* placed.
*
...
...
@@ -126,8 +124,6 @@
* supported. Tx Scatter/Gather is not supported. Jumbo Frames is
* not supported (hardware limitation).
*
* NAPI support is enabled with CONFIG_E100_NAPI.
*
* MagicPacket(tm) WoL support is enabled/disabled via ethtool.
*
* Thanks to JC (jchapman@katalix.com) for helping with
...
...
@@ -158,7 +154,7 @@
#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_COPYRIGHT "Copyright(c) 1999-2004 Intel Corporation"
#define PFX DRV_NAME ": "
...
...
@@ -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_bytes
+=
actual_size
;
nic
->
netdev
->
last_rx
=
jiffies
;
#ifdef CONFIG_E100_NAPI
netif_receive_skb
(
skb
);
#else
netif_rx
(
skb
);
#endif
if
(
work_done
)
(
*
work_done
)
++
;
}
...
...
@@ -1562,20 +1554,12 @@ static irqreturn_t e100_intr(int irq, void *dev_id, struct pt_regs *regs)
if
(
stat_ack
&
stat_ack_rnr
)
nic
->
ru_running
=
0
;
#ifdef CONFIG_E100_NAPI
e100_disable_irq
(
nic
);
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
;
}
#ifdef CONFIG_E100_NAPI
static
int
e100_poll
(
struct
net_device
*
netdev
,
int
*
budget
)
{
struct
nic
*
nic
=
netdev_priv
(
netdev
);
...
...
@@ -1598,7 +1582,6 @@ static int e100_poll(struct net_device *netdev, int *budget)
return
1
;
}
#endif
#ifdef CONFIG_NET_POLL_CONTROLLER
static
void
e100_netpoll
(
struct
net_device
*
netdev
)
...
...
@@ -2135,10 +2118,8 @@ static int __devinit e100_probe(struct pci_dev *pdev,
SET_ETHTOOL_OPS
(
netdev
,
&
e100_ethtool_ops
);
netdev
->
tx_timeout
=
e100_tx_timeout
;
netdev
->
watchdog_timeo
=
E100_WATCHDOG_PERIOD
;
#ifdef CONFIG_E100_NAPI
netdev
->
poll
=
e100_poll
;
netdev
->
weight
=
E100_NAPI_WEIGHT
;
#endif
#ifdef CONFIG_NET_POLL_CONTROLLER
netdev
->
poll_controller
=
e100_netpoll
;
#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