Commit d9e34325 authored by Jeff Garzik's avatar Jeff Garzik

Merge branch 'upstream-fixes'

parents 500f83ab 832f8f03
...@@ -1655,7 +1655,7 @@ config LAN_SAA9730 ...@@ -1655,7 +1655,7 @@ config LAN_SAA9730
config NET_POCKET config NET_POCKET
bool "Pocket and portable adapters" bool "Pocket and portable adapters"
depends on NET_ETHERNET && ISA depends on NET_ETHERNET && PARPORT
---help--- ---help---
Cute little network (Ethernet) devices which attach to the parallel Cute little network (Ethernet) devices which attach to the parallel
port ("pocket adapters"), commonly used with laptops. If you have port ("pocket adapters"), commonly used with laptops. If you have
...@@ -1679,7 +1679,7 @@ config NET_POCKET ...@@ -1679,7 +1679,7 @@ config NET_POCKET
config ATP config ATP
tristate "AT-LAN-TEC/RealTek pocket adapter support" tristate "AT-LAN-TEC/RealTek pocket adapter support"
depends on NET_POCKET && ISA && X86 depends on NET_POCKET && PARPORT && X86
select CRC32 select CRC32
---help--- ---help---
This is a network (Ethernet) device which attaches to your parallel This is a network (Ethernet) device which attaches to your parallel
...@@ -1694,7 +1694,7 @@ config ATP ...@@ -1694,7 +1694,7 @@ config ATP
config DE600 config DE600
tristate "D-Link DE600 pocket adapter support" tristate "D-Link DE600 pocket adapter support"
depends on NET_POCKET && ISA depends on NET_POCKET && PARPORT
---help--- ---help---
This is a network (Ethernet) device which attaches to your parallel This is a network (Ethernet) device which attaches to your parallel
port. Read <file:Documentation/networking/DLINK.txt> as well as the port. Read <file:Documentation/networking/DLINK.txt> as well as the
...@@ -1709,7 +1709,7 @@ config DE600 ...@@ -1709,7 +1709,7 @@ config DE600
config DE620 config DE620
tristate "D-Link DE620 pocket adapter support" tristate "D-Link DE620 pocket adapter support"
depends on NET_POCKET && ISA depends on NET_POCKET && PARPORT
---help--- ---help---
This is a network (Ethernet) device which attaches to your parallel This is a network (Ethernet) device which attaches to your parallel
port. Read <file:Documentation/networking/DLINK.txt> as well as the port. Read <file:Documentation/networking/DLINK.txt> as well as the
......
This diff is collapsed.
...@@ -40,8 +40,8 @@ ...@@ -40,8 +40,8 @@
#include "bond_3ad.h" #include "bond_3ad.h"
#include "bond_alb.h" #include "bond_alb.h"
#define DRV_VERSION "2.6.3" #define DRV_VERSION "2.6.4"
#define DRV_RELDATE "June 8, 2005" #define DRV_RELDATE "September 26, 2005"
#define DRV_NAME "bonding" #define DRV_NAME "bonding"
#define DRV_DESCRIPTION "Ethernet Channel Bonding Driver" #define DRV_DESCRIPTION "Ethernet Channel Bonding Driver"
......
...@@ -1875,6 +1875,9 @@ static int emac_init_device(struct ocp_device *ocpdev, struct ibm_ocp_mal *mal) ...@@ -1875,6 +1875,9 @@ static int emac_init_device(struct ocp_device *ocpdev, struct ibm_ocp_mal *mal)
rc = -ENODEV; rc = -ENODEV;
goto bail; goto bail;
} }
/* Disable any PHY features not supported by the platform */
ep->phy_mii.def->features &= ~emacdata->phy_feat_exc;
/* Setup initial PHY config & startup aneg */ /* Setup initial PHY config & startup aneg */
if (ep->phy_mii.def->ops->init) if (ep->phy_mii.def->ops->init)
...@@ -1882,6 +1885,34 @@ static int emac_init_device(struct ocp_device *ocpdev, struct ibm_ocp_mal *mal) ...@@ -1882,6 +1885,34 @@ static int emac_init_device(struct ocp_device *ocpdev, struct ibm_ocp_mal *mal)
netif_carrier_off(ndev); netif_carrier_off(ndev);
if (ep->phy_mii.def->features & SUPPORTED_Autoneg) if (ep->phy_mii.def->features & SUPPORTED_Autoneg)
ep->want_autoneg = 1; ep->want_autoneg = 1;
else {
ep->want_autoneg = 0;
/* Select highest supported speed/duplex */
if (ep->phy_mii.def->features & SUPPORTED_1000baseT_Full) {
ep->phy_mii.speed = SPEED_1000;
ep->phy_mii.duplex = DUPLEX_FULL;
} else if (ep->phy_mii.def->features &
SUPPORTED_1000baseT_Half) {
ep->phy_mii.speed = SPEED_1000;
ep->phy_mii.duplex = DUPLEX_HALF;
} else if (ep->phy_mii.def->features &
SUPPORTED_100baseT_Full) {
ep->phy_mii.speed = SPEED_100;
ep->phy_mii.duplex = DUPLEX_FULL;
} else if (ep->phy_mii.def->features &
SUPPORTED_100baseT_Half) {
ep->phy_mii.speed = SPEED_100;
ep->phy_mii.duplex = DUPLEX_HALF;
} else if (ep->phy_mii.def->features &
SUPPORTED_10baseT_Full) {
ep->phy_mii.speed = SPEED_10;
ep->phy_mii.duplex = DUPLEX_FULL;
} else {
ep->phy_mii.speed = SPEED_10;
ep->phy_mii.duplex = DUPLEX_HALF;
}
}
emac_start_link(ep, NULL); emac_start_link(ep, NULL);
/* read the MAC Address */ /* read the MAC Address */
......
...@@ -584,7 +584,7 @@ static inline int ns83820_add_rx_skb(struct ns83820 *dev, struct sk_buff *skb) ...@@ -584,7 +584,7 @@ static inline int ns83820_add_rx_skb(struct ns83820 *dev, struct sk_buff *skb)
return 0; return 0;
} }
static inline int rx_refill(struct net_device *ndev, unsigned int gfp) static inline int rx_refill(struct net_device *ndev, unsigned int __nocast gfp)
{ {
struct ns83820 *dev = PRIV(ndev); struct ns83820 *dev = PRIV(ndev);
unsigned i; unsigned i;
......
...@@ -133,14 +133,18 @@ ...@@ -133,14 +133,18 @@
- finally added firmware (GPL'ed by Adaptec) - finally added firmware (GPL'ed by Adaptec)
- removed compatibility code for 2.2.x - removed compatibility code for 2.2.x
LK1.4.2.1 (Ion Badulescu)
- fixed 32/64 bit issues on i386 + CONFIG_HIGHMEM
- added 32-bit padding to outgoing skb's, removed previous workaround
TODO: - fix forced speed/duplexing code (broken a long time ago, when TODO: - fix forced speed/duplexing code (broken a long time ago, when
somebody converted the driver to use the generic MII code) somebody converted the driver to use the generic MII code)
- fix VLAN support - fix VLAN support
*/ */
#define DRV_NAME "starfire" #define DRV_NAME "starfire"
#define DRV_VERSION "1.03+LK1.4.2" #define DRV_VERSION "1.03+LK1.4.2.1"
#define DRV_RELDATE "January 19, 2005" #define DRV_RELDATE "October 3, 2005"
#include <linux/config.h> #include <linux/config.h>
#include <linux/version.h> #include <linux/version.h>
...@@ -165,6 +169,14 @@ TODO: - fix forced speed/duplexing code (broken a long time ago, when ...@@ -165,6 +169,14 @@ TODO: - fix forced speed/duplexing code (broken a long time ago, when
* of length 1. If and when this is fixed, the #define below can be removed. * of length 1. If and when this is fixed, the #define below can be removed.
*/ */
#define HAS_BROKEN_FIRMWARE #define HAS_BROKEN_FIRMWARE
/*
* If using the broken firmware, data must be padded to the next 32-bit boundary.
*/
#ifdef HAS_BROKEN_FIRMWARE
#define PADDING_MASK 3
#endif
/* /*
* Define this if using the driver with the zero-copy patch * Define this if using the driver with the zero-copy patch
*/ */
...@@ -257,9 +269,10 @@ static int full_duplex[MAX_UNITS] = {0, }; ...@@ -257,9 +269,10 @@ static int full_duplex[MAX_UNITS] = {0, };
* This SUCKS. * This SUCKS.
* We need a much better method to determine if dma_addr_t is 64-bit. * We need a much better method to determine if dma_addr_t is 64-bit.
*/ */
#if (defined(__i386__) && defined(CONFIG_HIGHMEM) && (LINUX_VERSION_CODE > 0x20500 || defined(CONFIG_HIGHMEM64G))) || defined(__x86_64__) || defined (__ia64__) || defined(__mips64__) || (defined(__mips__) && defined(CONFIG_HIGHMEM) && defined(CONFIG_64BIT_PHYS_ADDR)) #if (defined(__i386__) && defined(CONFIG_HIGHMEM64G)) || defined(__x86_64__) || defined (__ia64__) || defined(__mips64__) || (defined(__mips__) && defined(CONFIG_HIGHMEM) && defined(CONFIG_64BIT_PHYS_ADDR))
/* 64-bit dma_addr_t */ /* 64-bit dma_addr_t */
#define ADDR_64BITS /* This chip uses 64 bit addresses. */ #define ADDR_64BITS /* This chip uses 64 bit addresses. */
#define netdrv_addr_t u64
#define cpu_to_dma(x) cpu_to_le64(x) #define cpu_to_dma(x) cpu_to_le64(x)
#define dma_to_cpu(x) le64_to_cpu(x) #define dma_to_cpu(x) le64_to_cpu(x)
#define RX_DESC_Q_ADDR_SIZE RxDescQAddr64bit #define RX_DESC_Q_ADDR_SIZE RxDescQAddr64bit
...@@ -268,6 +281,7 @@ static int full_duplex[MAX_UNITS] = {0, }; ...@@ -268,6 +281,7 @@ static int full_duplex[MAX_UNITS] = {0, };
#define TX_COMPL_Q_ADDR_SIZE TxComplQAddr64bit #define TX_COMPL_Q_ADDR_SIZE TxComplQAddr64bit
#define RX_DESC_ADDR_SIZE RxDescAddr64bit #define RX_DESC_ADDR_SIZE RxDescAddr64bit
#else /* 32-bit dma_addr_t */ #else /* 32-bit dma_addr_t */
#define netdrv_addr_t u32
#define cpu_to_dma(x) cpu_to_le32(x) #define cpu_to_dma(x) cpu_to_le32(x)
#define dma_to_cpu(x) le32_to_cpu(x) #define dma_to_cpu(x) le32_to_cpu(x)
#define RX_DESC_Q_ADDR_SIZE RxDescQAddr32bit #define RX_DESC_Q_ADDR_SIZE RxDescQAddr32bit
...@@ -1333,21 +1347,10 @@ static int start_tx(struct sk_buff *skb, struct net_device *dev) ...@@ -1333,21 +1347,10 @@ static int start_tx(struct sk_buff *skb, struct net_device *dev)
} }
#if defined(ZEROCOPY) && defined(HAS_BROKEN_FIRMWARE) #if defined(ZEROCOPY) && defined(HAS_BROKEN_FIRMWARE)
{ if (skb->ip_summed == CHECKSUM_HW) {
int has_bad_length = 0; skb = skb_padto(skb, (skb->len + PADDING_MASK) & ~PADDING_MASK);
if (skb == NULL)
if (skb_first_frag_len(skb) == 1) return NETDEV_TX_OK;
has_bad_length = 1;
else {
for (i = 0; i < skb_shinfo(skb)->nr_frags; i++)
if (skb_shinfo(skb)->frags[i].size == 1) {
has_bad_length = 1;
break;
}
}
if (has_bad_length)
skb_checksum_help(skb, 0);
} }
#endif /* ZEROCOPY && HAS_BROKEN_FIRMWARE */ #endif /* ZEROCOPY && HAS_BROKEN_FIRMWARE */
...@@ -2127,13 +2130,12 @@ static int __init starfire_init (void) ...@@ -2127,13 +2130,12 @@ static int __init starfire_init (void)
#endif #endif
#endif #endif
#ifndef ADDR_64BITS
/* we can do this test only at run-time... sigh */ /* we can do this test only at run-time... sigh */
if (sizeof(dma_addr_t) == sizeof(u64)) { if (sizeof(dma_addr_t) != sizeof(netdrv_addr_t)) {
printk("This driver has not been ported to this 64-bit architecture yet\n"); printk("This driver has dma_addr_t issues, please send email to maintainer\n");
return -ENODEV; return -ENODEV;
} }
#endif /* not ADDR_64BITS */
return pci_module_init (&starfire_driver); return pci_module_init (&starfire_driver);
} }
......
...@@ -1035,7 +1035,8 @@ struct gem { ...@@ -1035,7 +1035,8 @@ struct gem {
#define ALIGNED_RX_SKB_ADDR(addr) \ #define ALIGNED_RX_SKB_ADDR(addr) \
((((unsigned long)(addr) + (64UL - 1UL)) & ~(64UL - 1UL)) - (unsigned long)(addr)) ((((unsigned long)(addr) + (64UL - 1UL)) & ~(64UL - 1UL)) - (unsigned long)(addr))
static __inline__ struct sk_buff *gem_alloc_skb(int size, int gfp_flags) static __inline__ struct sk_buff *gem_alloc_skb(int size,
unsigned int __nocast gfp_flags)
{ {
struct sk_buff *skb = alloc_skb(size + 64, gfp_flags); struct sk_buff *skb = alloc_skb(size + 64, gfp_flags);
......
...@@ -172,7 +172,7 @@ void t21142_lnk_change(struct net_device *dev, int csr5) ...@@ -172,7 +172,7 @@ void t21142_lnk_change(struct net_device *dev, int csr5)
int i; int i;
for (i = 0; i < tp->mtable->leafcount; i++) for (i = 0; i < tp->mtable->leafcount; i++)
if (tp->mtable->mleaf[i].media == dev->if_port) { if (tp->mtable->mleaf[i].media == dev->if_port) {
int startup = ! ((tp->chip_id == DC21143 && tp->revision == 65)); int startup = ! ((tp->chip_id == DC21143 && (tp->revision == 48 || tp->revision == 65)));
tp->cur_index = i; tp->cur_index = i;
tulip_select_media(dev, startup); tulip_select_media(dev, startup);
setup_done = 1; setup_done = 1;
......
...@@ -187,7 +187,7 @@ void ieee80211_txb_free(struct ieee80211_txb *txb) ...@@ -187,7 +187,7 @@ void ieee80211_txb_free(struct ieee80211_txb *txb)
} }
static struct ieee80211_txb *ieee80211_alloc_txb(int nr_frags, int txb_size, static struct ieee80211_txb *ieee80211_alloc_txb(int nr_frags, int txb_size,
unsigned int gfp_mask) unsigned int __nocast gfp_mask)
{ {
struct ieee80211_txb *txb; struct ieee80211_txb *txb;
int i; int i;
......
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