Commit 3c88d2f4 authored by Eli Kupermann's avatar Eli Kupermann Committed by Jeff Garzik

e100 net driver update 3/4:

- added pci flushing in the e100_set_intr_mask function (pci posting bug)
- better logic in the prepare_xmit_buff function moving some tx
buffer initialization code to the start of the function.
parent 99d728bf
...@@ -165,7 +165,7 @@ static void e100_non_tx_background(unsigned long); ...@@ -165,7 +165,7 @@ static void e100_non_tx_background(unsigned long);
/* Global Data structures and variables */ /* Global Data structures and variables */
char e100_copyright[] __devinitdata = "Copyright (c) 2002 Intel Corporation"; char e100_copyright[] __devinitdata = "Copyright (c) 2002 Intel Corporation";
#define E100_VERSION "2.0.23-pre1" #define E100_VERSION "2.0.23-pre2"
#define E100_FULL_DRIVER_NAME "Intel(R) PRO/100 Fast Ethernet Adapter - Loadable driver, ver " #define E100_FULL_DRIVER_NAME "Intel(R) PRO/100 Fast Ethernet Adapter - Loadable driver, ver "
...@@ -541,6 +541,7 @@ static inline void ...@@ -541,6 +541,7 @@ static inline void
e100_set_intr_mask(struct e100_private *bdp) e100_set_intr_mask(struct e100_private *bdp)
{ {
writeb(bdp->intr_mask, &bdp->scb->scb_cmd_hi); writeb(bdp->intr_mask, &bdp->scb->scb_cmd_hi);
readw(&(bdp->scb->scb_status)); /* flushes last write, read-safe */
} }
static inline void static inline void
...@@ -2206,6 +2207,12 @@ e100_prepare_xmit_buff(struct e100_private *bdp, struct sk_buff *skb) ...@@ -2206,6 +2207,12 @@ e100_prepare_xmit_buff(struct e100_private *bdp, struct sk_buff *skb)
tcb = bdp->tcb_pool.data; tcb = bdp->tcb_pool.data;
tcb += TCB_TO_USE(bdp->tcb_pool); tcb += TCB_TO_USE(bdp->tcb_pool);
if (bdp->flags & USE_IPCB) {
tcb->tcbu.ipcb.ip_activation_high = IPCB_IP_ACTIVATION_DEFAULT;
tcb->tcbu.ipcb.ip_schedule &= ~IPCB_TCP_PACKET;
tcb->tcbu.ipcb.ip_schedule &= ~IPCB_TCPUDP_CHECKSUM_ENABLE;
}
tcb->tcb_hdr.cb_status = 0; tcb->tcb_hdr.cb_status = 0;
tcb->tcb_thrshld = bdp->tx_thld; tcb->tcb_thrshld = bdp->tx_thld;
tcb->tcb_hdr.cb_cmd |= __constant_cpu_to_le16(CB_S_BIT); tcb->tcb_hdr.cb_cmd |= __constant_cpu_to_le16(CB_S_BIT);
...@@ -2246,15 +2253,6 @@ e100_prepare_xmit_buff(struct e100_private *bdp, struct sk_buff *skb) ...@@ -2246,15 +2253,6 @@ e100_prepare_xmit_buff(struct e100_private *bdp, struct sk_buff *skb)
*chksum = e100_pseudo_hdr_csum(ip); *chksum = e100_pseudo_hdr_csum(ip);
} }
} else {
if (bdp->flags & USE_IPCB) {
tcb->tcbu.ipcb.ip_activation_high =
IPCB_IP_ACTIVATION_DEFAULT;
tcb->tcbu.ipcb.ip_schedule &= ~IPCB_TCP_PACKET;
tcb->tcbu.ipcb.ip_schedule &=
~IPCB_TCPUDP_CHECKSUM_ENABLE;
}
} }
if (!skb_shinfo(skb)->nr_frags) { if (!skb_shinfo(skb)->nr_frags) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment