Commit 86014f1b authored by Jeff Garzik's avatar Jeff Garzik

Merge redhat.com:/spare/repo/netdev-2.6/misc

into redhat.com:/spare/repo/net-drivers-2.6
parents fbd532e3 ce99046f
...@@ -1061,23 +1061,33 @@ M: tigran@veritas.com ...@@ -1061,23 +1061,33 @@ M: tigran@veritas.com
S: Maintained S: Maintained
INTEL PRO/100 ETHERNET SUPPORT INTEL PRO/100 ETHERNET SUPPORT
P: John Ronciak
M: john.ronciak@intel.com
P: Ganesh Venkatesan
M: ganesh.venkatesan@intel.com
P: Scott Feldman P: Scott Feldman
M: scott.feldman@intel.com M: scott.feldman@intel.com
W: http://sourceforge.net/projects/e1000/
S: Supported S: Supported
INTEL PRO/1000 GIGABIT ETHERNET SUPPORT INTEL PRO/1000 GIGABIT ETHERNET SUPPORT
P: Jeb Cramer P: Jeb Cramer
M: cramerj@intel.com M: cramerj@intel.com
P: Scott Feldman P: John Ronciak
M: scott.feldman@intel.com M: john.ronciak@intel.com
P: Ganesh Venkatesan
M: ganesh.venkatesan@intel.com
W: http://sourceforge.net/projects/e1000/ W: http://sourceforge.net/projects/e1000/
S: Supported S: Supported
INTEL PRO/10GbE SUPPORT INTEL PRO/10GbE SUPPORT
P: Ayyappan Veeraiyan
M: ayyappan.veeraiyan@intel.com
P: Ganesh Venkatesan P: Ganesh Venkatesan
M: Ganesh.Venkatesan@intel.com M: ganesh.venkatesan@intel.com
P: Scott Feldman P: John Ronciak
M: scott.feldman@intel.com M: john.ronciak@intel.com
W: http://sourceforge.net/projects/e1000/
S: Supported S: Supported
INTERMEZZO FILE SYSTEM INTERMEZZO FILE SYSTEM
......
...@@ -1084,7 +1084,7 @@ void NS8390_init(struct net_device *dev, int startp) ...@@ -1084,7 +1084,7 @@ void NS8390_init(struct net_device *dev, int startp)
for(i = 0; i < 6; i++) for(i = 0; i < 6; i++)
{ {
outb_p(dev->dev_addr[i], e8390_base + EN1_PHYS_SHIFT(i)); outb_p(dev->dev_addr[i], e8390_base + EN1_PHYS_SHIFT(i));
if(inb_p(e8390_base + EN1_PHYS_SHIFT(i))!=dev->dev_addr[i]) if (ei_debug > 1 && inb_p(e8390_base + EN1_PHYS_SHIFT(i))!=dev->dev_addr[i])
printk(KERN_ERR "Hw. address read/write mismap %d\n",i); printk(KERN_ERR "Hw. address read/write mismap %d\n",i);
} }
......
...@@ -131,8 +131,19 @@ struct ei_device { ...@@ -131,8 +131,19 @@ struct ei_device {
#define inb_p(port) in_8(port) #define inb_p(port) in_8(port)
#define outb_p(val,port) out_8(port,val) #define outb_p(val,port) out_8(port,val)
#elif defined(CONFIG_ARM_ETHERH) || defined(CONFIG_ARM_ETHERH_MODULE) || \ #elif defined(CONFIG_ARM_ETHERH) || defined(CONFIG_ARM_ETHERH_MODULE)
defined(CONFIG_NET_CBUS) #define EI_SHIFT(x) (ei_local->reg_offset[x])
#undef inb
#undef inb_p
#undef outb
#undef outb_p
#define inb(_p) readb(_p)
#define outb(_v,_p) writeb(_v,_p)
#define inb_p(_p) inb(_p)
#define outb_p(_v,_p) outb(_v,_p)
#elif defined(CONFIG_NET_CBUS)
#define EI_SHIFT(x) (ei_local->reg_offset[x]) #define EI_SHIFT(x) (ei_local->reg_offset[x])
#else #else
#define EI_SHIFT(x) (x) #define EI_SHIFT(x) (x)
......
...@@ -1219,6 +1219,9 @@ config AMD8111_ETH ...@@ -1219,6 +1219,9 @@ config AMD8111_ETH
To compile this driver as a module, choose M here and read To compile this driver as a module, choose M here and read
<file:Documentation/networking/net-modules.txt>. The module <file:Documentation/networking/net-modules.txt>. The module
will be called amd8111e. will be called amd8111e.
config AMD8111E_NAPI
bool "Enable NAPI support"
depends on AMD8111_ETH
config ADAPTEC_STARFIRE config ADAPTEC_STARFIRE
tristate "Adaptec Starfire/DuraLAN support" tristate "Adaptec Starfire/DuraLAN support"
......
This diff is collapsed.
...@@ -606,7 +606,7 @@ typedef enum { ...@@ -606,7 +606,7 @@ typedef enum {
/* ipg parameters */ /* ipg parameters */
#define DEFAULT_IPG 0x60 #define DEFAULT_IPG 0x60
#define IFS1_DELTA 36 #define IFS1_DELTA 36
#define IPG_CONVERGE_JIFFIES (HZ / 2) #define IPG_CONVERGE_JIFFIES (HZ/2)
#define IPG_STABLE_TIME 5 #define IPG_STABLE_TIME 5
#define MIN_IPG 96 #define MIN_IPG 96
#define MAX_IPG 255 #define MAX_IPG 255
...@@ -790,6 +790,7 @@ struct amd8111e_priv{ ...@@ -790,6 +790,7 @@ struct amd8111e_priv{
#endif #endif
char opened; char opened;
struct net_device_stats stats; struct net_device_stats stats;
unsigned int drv_rx_errors;
struct dev_mc_list* mc_list; struct dev_mc_list* mc_list;
struct amd8111e_coalesce_conf coal_conf; struct amd8111e_coalesce_conf coal_conf;
......
...@@ -185,8 +185,6 @@ static void __exit com20020_exit(void) ...@@ -185,8 +185,6 @@ static void __exit com20020_exit(void)
#ifndef MODULE #ifndef MODULE
static int __init com20020isa_setup(char *s) static int __init com20020isa_setup(char *s)
{ {
struct net_device *dev;
struct arcnet_local *lp;
int ints[8]; int ints[8];
s = get_options(s, 8, ints); s = get_options(s, 8, ints);
......
This diff is collapsed.
...@@ -2910,7 +2910,7 @@ static void iph5526_timeout(struct net_device *dev) ...@@ -2910,7 +2910,7 @@ static void iph5526_timeout(struct net_device *dev)
{ {
struct fc_info *fi = dev->priv; struct fc_info *fi = dev->priv;
printk(KERN_WARNING "%s: timed out on send.\n", dev->name); printk(KERN_WARNING "%s: timed out on send.\n", dev->name);
fi->fc_stats.rx_dropped++; fi->fc_stats.tx_dropped++;
dev->trans_start = jiffies; dev->trans_start = jiffies;
netif_wake_queue(dev); netif_wake_queue(dev);
} }
...@@ -2953,7 +2953,7 @@ static int iph5526_send_packet(struct sk_buff *skb, struct net_device *dev) ...@@ -2953,7 +2953,7 @@ static int iph5526_send_packet(struct sk_buff *skb, struct net_device *dev)
fi->fc_stats.tx_packets++; fi->fc_stats.tx_packets++;
} }
else else
fi->fc_stats.rx_dropped++; fi->fc_stats.tx_dropped++;
dev->trans_start = jiffies; dev->trans_start = jiffies;
/* We free up the IP buffers in the OCI_interrupt handler. /* We free up the IP buffers in the OCI_interrupt handler.
* status == 0 implies that the frame was not transmitted. So the * status == 0 implies that the frame was not transmitted. So the
......
...@@ -387,7 +387,7 @@ enum register_offsets { ...@@ -387,7 +387,7 @@ enum register_offsets {
IntrStatus = 0x10, IntrStatus = 0x10,
IntrMask = 0x14, IntrMask = 0x14,
IntrEnable = 0x18, IntrEnable = 0x18,
IntrHoldoff = 0x16, /* DP83816 only */ IntrHoldoff = 0x1C, /* DP83816 only */
TxRingPtr = 0x20, TxRingPtr = 0x20,
TxConfig = 0x24, TxConfig = 0x24,
RxRingPtr = 0x30, RxRingPtr = 0x30,
......
...@@ -997,13 +997,13 @@ static void skmca_set_multicast_list(struct net_device *dev) ...@@ -997,13 +997,13 @@ static void skmca_set_multicast_list(struct net_device *dev)
block.Mode &= ~LANCE_INIT_PROM; block.Mode &= ~LANCE_INIT_PROM;
if (dev->flags & IFF_ALLMULTI) { /* get all multicasts */ if (dev->flags & IFF_ALLMULTI) { /* get all multicasts */
memset(block.LAdrF, 8, 0xff); memset(block.LAdrF, 0xff, sizeof(block.LAdrF));
} else { /* get selected/no multicasts */ } else { /* get selected/no multicasts */
struct dev_mc_list *mptr; struct dev_mc_list *mptr;
int code; int code;
memset(block.LAdrF, 8, 0x00); memset(block.LAdrF, 0, sizeof(block.LAdrF));
for (mptr = dev->mc_list; mptr != NULL; mptr = mptr->next) { for (mptr = dev->mc_list; mptr != NULL; mptr = mptr->next) {
code = GetHash(mptr->dmi_addr); code = GetHash(mptr->dmi_addr);
block.LAdrF[(code >> 3) & 7] |= 1 << (code & 7); block.LAdrF[(code >> 3) & 7] |= 1 << (code & 7);
......
...@@ -42,13 +42,14 @@ struct divert_blk; ...@@ -42,13 +42,14 @@ struct divert_blk;
struct vlan_group; struct vlan_group;
struct ethtool_ops; struct ethtool_ops;
/* source back-compat hook */ /* source back-compat hooks */
#define SET_ETHTOOL_OPS(netdev,ops) \ #define SET_ETHTOOL_OPS(netdev,ops) \
( (netdev)->ethtool_ops = (ops) ) ( (netdev)->ethtool_ops = (ops) )
#define HAVE_ALLOC_NETDEV /* feature macro: alloc_xxxdev #define HAVE_ALLOC_NETDEV /* feature macro: alloc_xxxdev
functions are available. */ functions are available. */
#define HAVE_FREE_NETDEV #define HAVE_FREE_NETDEV /* free_netdev() */
#define HAVE_NETDEV_PRIV /* netdev_priv() */
#define NET_XMIT_SUCCESS 0 #define NET_XMIT_SUCCESS 0
#define NET_XMIT_DROP 1 /* skb dropped */ #define NET_XMIT_DROP 1 /* skb dropped */
......
...@@ -163,21 +163,15 @@ void netpoll_send_skb(struct netpoll *np, struct sk_buff *skb) ...@@ -163,21 +163,15 @@ void netpoll_send_skb(struct netpoll *np, struct sk_buff *skb)
spin_lock(&np->dev->xmit_lock); spin_lock(&np->dev->xmit_lock);
np->dev->xmit_lock_owner = smp_processor_id(); np->dev->xmit_lock_owner = smp_processor_id();
if (netif_queue_stopped(np->dev)) {
np->dev->xmit_lock_owner = -1;
spin_unlock(&np->dev->xmit_lock);
netpoll_poll(np);
goto repeat;
}
status = np->dev->hard_start_xmit(skb, np->dev); status = np->dev->hard_start_xmit(skb, np->dev);
np->dev->xmit_lock_owner = -1; np->dev->xmit_lock_owner = -1;
spin_unlock(&np->dev->xmit_lock); spin_unlock(&np->dev->xmit_lock);
/* transmit busy */ /* transmit busy */
if(status) if(status) {
netpoll_poll(np);
goto repeat; goto repeat;
}
} }
void netpoll_send_udp(struct netpoll *np, const char *msg, int len) void netpoll_send_udp(struct netpoll *np, const char *msg, int len)
...@@ -231,9 +225,8 @@ void netpoll_send_udp(struct netpoll *np, const char *msg, int len) ...@@ -231,9 +225,8 @@ void netpoll_send_udp(struct netpoll *np, const char *msg, int len)
static void arp_reply(struct sk_buff *skb) static void arp_reply(struct sk_buff *skb)
{ {
struct in_device *in_dev = (struct in_device *) skb->dev->ip_ptr;
struct arphdr *arp; struct arphdr *arp;
unsigned char *arp_ptr, *sha, *tha; unsigned char *arp_ptr;
int size, type = ARPOP_REPLY, ptype = ETH_P_ARP; int size, type = ARPOP_REPLY, ptype = ETH_P_ARP;
u32 sip, tip; u32 sip, tip;
struct sk_buff *send_skb; struct sk_buff *send_skb;
...@@ -253,7 +246,7 @@ static void arp_reply(struct sk_buff *skb) ...@@ -253,7 +246,7 @@ static void arp_reply(struct sk_buff *skb)
if (!np) return; if (!np) return;
/* No arp on this interface */ /* No arp on this interface */
if (!in_dev || skb->dev->flags & IFF_NOARP) if (skb->dev->flags & IFF_NOARP)
return; return;
if (!pskb_may_pull(skb, (sizeof(struct arphdr) + if (!pskb_may_pull(skb, (sizeof(struct arphdr) +
...@@ -270,21 +263,15 @@ static void arp_reply(struct sk_buff *skb) ...@@ -270,21 +263,15 @@ static void arp_reply(struct sk_buff *skb)
arp->ar_op != htons(ARPOP_REQUEST)) arp->ar_op != htons(ARPOP_REQUEST))
return; return;
arp_ptr= (unsigned char *)(arp+1); arp_ptr = (unsigned char *)(arp+1) + skb->dev->addr_len;
sha = arp_ptr;
arp_ptr += skb->dev->addr_len;
memcpy(&sip, arp_ptr, 4); memcpy(&sip, arp_ptr, 4);
arp_ptr += 4; arp_ptr += 4 + skb->dev->addr_len;
tha = arp_ptr;
arp_ptr += skb->dev->addr_len;
memcpy(&tip, arp_ptr, 4); memcpy(&tip, arp_ptr, 4);
/* Should we ignore arp? */ /* Should we ignore arp? */
if (tip != in_dev->ifa_list->ifa_address || if (tip != htonl(np->local_ip) || LOOPBACK(tip) || MULTICAST(tip))
LOOPBACK(tip) || MULTICAST(tip))
return; return;
size = sizeof(struct arphdr) + 2 * (skb->dev->addr_len + 4); size = sizeof(struct arphdr) + 2 * (skb->dev->addr_len + 4);
send_skb = find_skb(np, size + LL_RESERVED_SPACE(np->dev), send_skb = find_skb(np, size + LL_RESERVED_SPACE(np->dev),
LL_RESERVED_SPACE(np->dev)); LL_RESERVED_SPACE(np->dev));
...@@ -325,7 +312,7 @@ static void arp_reply(struct sk_buff *skb) ...@@ -325,7 +312,7 @@ static void arp_reply(struct sk_buff *skb)
arp_ptr += np->dev->addr_len; arp_ptr += np->dev->addr_len;
memcpy(arp_ptr, &tip, 4); memcpy(arp_ptr, &tip, 4);
arp_ptr += 4; arp_ptr += 4;
memcpy(arp_ptr, np->local_mac, np->dev->addr_len); memcpy(arp_ptr, np->remote_mac, np->dev->addr_len);
arp_ptr += np->dev->addr_len; arp_ptr += np->dev->addr_len;
memcpy(arp_ptr, &sip, 4); memcpy(arp_ptr, &sip, 4);
......
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