diff options
author | John Bowler <jbowler@nslu2-linux.org> | 2006-01-10 01:06:43 +0000 |
---|---|---|
committer | OpenEmbedded Project <openembedded-devel@lists.openembedded.org> | 2006-01-10 01:06:43 +0000 |
commit | 2f0e3d2a376647127e9d569aa9d2ab0ae2211843 (patch) | |
tree | b81909ac6d20e1eac9ede7cd68b04a32597bf213 | |
parent | a8ba51336caf9272a41e3cd68531920333d19e75 (diff) |
ixp400-eth: incorporate new patches from nslu2 CVS into 1.5
- three new patches from dwery:
continue-if-qmgr-init-fails, int-random, stop-on-rmmod
change to device name (eth vs ixp) handling from rwhitby so that is
works on non-OE builds (plus debug code added to debug.patch)
sanitise patches to make them easier to compare
12 files changed, 242 insertions, 38 deletions
diff --git a/packages/ixp425-eth/ixp400-eth-1.5/2.6.14.patch b/packages/ixp425-eth/ixp400-eth-1.5/2.6.14.patch index 9d8dcc6590..f3426e4287 100644 --- a/packages/ixp425-eth/ixp400-eth-1.5/2.6.14.patch +++ b/packages/ixp425-eth/ixp400-eth-1.5/2.6.14.patch @@ -1,5 +1,8 @@ ---- ./ixp400_eth.c 2005-11-19 23:27:54.541565744 -0800 -+++ ./ixp400_eth.c 2005-11-19 23:28:56.253449028 -0800 + ixp400_eth.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +--- ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000 ++++ ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000 @@ -1838,7 +1838,11 @@ static inline void dev_eth_type_trans(un skb->len -= header_len; diff --git a/packages/ixp425-eth/ixp400-eth-1.5/2.6.15.patch b/packages/ixp425-eth/ixp400-eth-1.5/2.6.15.patch index 143c509c62..83115d8efa 100644 --- a/packages/ixp425-eth/ixp400-eth-1.5/2.6.15.patch +++ b/packages/ixp425-eth/ixp400-eth-1.5/2.6.15.patch @@ -1,5 +1,10 @@ ---- ./ixp400_eth.c.orig 2005-11-13 16:17:57.943717806 -0800 -+++ ./ixp400_eth.c 2005-11-13 16:29:00.829430574 -0800 +2.6.15 needs platform_device.h + + ixp400_eth.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000 ++++ ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000 @@ -65,6 +65,10 @@ #include <linux/sysctl.h> #include <linux/unistd.h> diff --git a/packages/ixp425-eth/ixp400-eth-1.5/Makefile.patch b/packages/ixp425-eth/ixp400-eth-1.5/Makefile.patch index 2120391cbb..3bc51f0b66 100644 --- a/packages/ixp425-eth/ixp400-eth-1.5/Makefile.patch +++ b/packages/ixp425-eth/ixp400-eth-1.5/Makefile.patch @@ -1,5 +1,8 @@ ---- ./Makefile 2005-09-06 00:17:15.000000000 -0700 -+++ ./Makefile 2005-10-02 22:15:19.974595551 -0700 +This is an OpenEmbedded only patch to make the code buildable in +the OpenEmbedded environment. + +--- ixp400-eth/Makefile 1970-01-01 00:00:00.000000000 +0000 ++++ ixp400-eth/Makefile 1970-01-01 00:00:00.000000000 +0000 @@ -0,0 +1,30 @@ +obj-m := ixp400_eth.o + diff --git a/packages/ixp425-eth/ixp400-eth-1.5/continue-if-qmgr-init-fails.patch b/packages/ixp425-eth/ixp400-eth-1.5/continue-if-qmgr-init-fails.patch new file mode 100644 index 0000000000..8508790fa5 --- /dev/null +++ b/packages/ixp425-eth/ixp400-eth-1.5/continue-if-qmgr-init-fails.patch @@ -0,0 +1,22 @@ +tries to go on even if queue manager initialization +fails. this is hand because you'll be allowed to +insert ixp400_eth immediately after you have removed +it, without re-inserting ixp400. + + ixp400_eth.c | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +--- ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000 ++++ ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000 +@@ -2850,10 +2850,7 @@ static int qmgr_init(void) + /* Initialise Queue Manager */ + P_VERBOSE("Initialising Queue Manager...\n"); + if ((res = ixQMgrInit())) +- { +- P_ERROR("Error initialising queue manager!\n"); +- return -1; +- } ++ P_ERROR("Error initialising queue manager, trying to continue!\n"); + + TRACE; + diff --git a/packages/ixp425-eth/ixp400-eth-1.5/debug.patch b/packages/ixp425-eth/ixp400-eth-1.5/debug.patch index f88457c060..c684c078d2 100644 --- a/packages/ixp425-eth/ixp400-eth-1.5/debug.patch +++ b/packages/ixp425-eth/ixp400-eth-1.5/debug.patch @@ -1,7 +1,62 @@ -# This patch is not necessary but helps when debugging the build ---- ./ixp400_eth.c 2005-11-20 13:26:14.890767165 -0800 -+++ ./ixp400_eth.c 2005-11-20 13:45:32.163589752 -0800 -@@ -3249,6 +3249,8 @@ static int __devinit dev_eth_probe(struc +This patch is not necessary but helps when debugging the build + +--- ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000 ++++ ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000 +@@ -1350,9 +1350,10 @@ static int dev_media_check_thread (void* + + if (res != IX_ETH_ACC_SUCCESS) + { +- P_WARN("ixEthMiiLinkStatus failed on PHY%d.\n" ++ P_WARN("%s: ixEthMiiLinkStatus failed on PHY%d.\n" + "\tCan't determine\nthe auto negotiated parameters. " + "Using default values.\n", ++ dev->name, + phyNum); + /* something is bad, gracefully stops the loop */ + priv->maintenanceCheckStopped = TRUE; +@@ -2213,7 +2214,8 @@ static int port_enable(struct net_device + IX_IEEE803_MAC_ADDRESS_SIZE); + if ((res = ixEthAccPortUnicastMacAddressSet(priv->port_id, &npeMacAddr))) + { +- P_VERBOSE("Failed to set MAC address %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x for port %d\n", ++ P_VERBOSE("%s: Failed to set MAC address %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x for port %d\n", ++ dev->name, + (unsigned)npeMacAddr.macAddress[0], + (unsigned)npeMacAddr.macAddress[1], + (unsigned)npeMacAddr.macAddress[2], +@@ -2707,8 +2709,8 @@ static int do_dev_ioctl(struct net_devic + down (miiAccessMutex); /* lock the MII register access mutex */ + if ((res = ixEthAccMiiReadRtn (data->phy_id, data->reg_num, &data->val_out))) + { +- P_ERROR("Error reading MII reg %d on phy %d\n", +- data->reg_num, data->phy_id); ++ P_ERROR("%s: Error reading MII reg %d on phy %d\n", ++ dev->name, data->reg_num, data->phy_id); + res = -1; + } + up (miiAccessMutex); /* release the MII register access mutex */ +@@ -2720,8 +2722,8 @@ static int do_dev_ioctl(struct net_devic + down (miiAccessMutex); /* lock the MII register access mutex */ + if ((res = ixEthAccMiiWriteRtn (data->phy_id, data->reg_num, data->val_in))) + { +- P_ERROR("Error writing MII reg %d on phy %d\n", +- data->reg_num, data->phy_id); ++ P_ERROR("%s: Error writing MII reg %d on phy %d\n", ++ dev->name, data->reg_num, data->phy_id); + res = -1; + } + up (miiAccessMutex); /* release the MII register access mutex */ +@@ -3049,7 +3051,8 @@ static int set_mac_address(struct net_de + /* Set MAC addr in h/w (ethAcc checks for MAC address to be valid) */ + if ((res = ixEthAccPortUnicastMacAddressSet(priv->port_id, &npeMacAddr))) + { +- P_VERBOSE("Failed to set MAC address %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x for port %d\n", ++ P_VERBOSE("%s: Failed to set MAC address %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x for port %d\n", ++ dev->name, + (unsigned)npeMacAddr.macAddress[0], + (unsigned)npeMacAddr.macAddress[1], + (unsigned)npeMacAddr.macAddress[2], +@@ -3267,6 +3270,8 @@ static int __devinit dev_eth_probe(struc kmalloc(sizeof(struct semaphore), GFP_KERNEL); if (!priv->maintenanceCheckThreadComplete) { @@ -10,7 +65,7 @@ goto error; } priv->lock = SPIN_LOCK_UNLOCKED; -@@ -3355,7 +3361,11 @@ static int __devinit dev_eth_probe(struc +@@ -3360,7 +3365,11 @@ static int __devinit dev_eth_probe(struc #if IS_KERNEL26 if (register_netdev(ndev)) @@ -22,7 +77,7 @@ #else found_devices++; #endif /* IS_KERNEL26 */ -@@ -3365,6 +3375,8 @@ static int __devinit dev_eth_probe(struc +@@ -3370,6 +3379,8 @@ static int __devinit dev_eth_probe(struc /* register EthAcc callbacks for this port */ if (dev_rxtxcallback_register(portId, (UINT32)ndev)) { @@ -31,7 +86,7 @@ goto error; } -@@ -3388,6 +3400,7 @@ static int __devinit dev_eth_probe(struc +@@ -3393,6 +3404,7 @@ static int __devinit dev_eth_probe(struc /* Error handling: enter here whenever error detected */ error: @@ -39,7 +94,32 @@ TRACE; #ifdef CONFIG_IXP400_ETH_QDISC_ENABLED -@@ -3523,6 +3536,9 @@ static int __init ixp400_eth_init(void) +@@ -3465,21 +3477,21 @@ static int __devexit dev_eth_remove(int + { + if (IX_SUCCESS != ixNpeDlNpeStopAndReset(IX_NPEDL_NPEID_NPEA)) + { +- P_NOTICE("Error Halting NPE for Ethernet port %d!\n", portId); ++ P_NOTICE("%s: Error Halting NPE for Ethernet port %d!\n", ndev->name, portId); + } + } + if (default_npeImageId[portId] == IX_ETH_NPE_B_IMAGE_ID) + { + if (IX_SUCCESS != ixNpeDlNpeStopAndReset(IX_NPEDL_NPEID_NPEB)) + { +- P_NOTICE("Error Halting NPE for Ethernet port %d!\n", portId); ++ P_NOTICE("%s: Error Halting NPE for Ethernet port %d!\n", ndev->name, portId); + } + } + if (default_npeImageId[portId] == IX_ETH_NPE_C_IMAGE_ID) + { + if (IX_SUCCESS != ixNpeDlNpeStopAndReset(IX_NPEDL_NPEID_NPEC)) + { +- P_NOTICE("Error Halting NPE for Ethernet port %d!\n", portId); ++ P_NOTICE("%s: Error Halting NPE for Ethernet port %d!\n", ndev->name, portId); + } + } + +@@ -3528,6 +3540,9 @@ static int __init ixp400_eth_init(void) TRACE; P_INFO("Initializing IXP400 NPE Ethernet driver software v. " MOD_VERSION " \n"); diff --git a/packages/ixp425-eth/ixp400-eth-1.5/device-name.patch b/packages/ixp425-eth/ixp400-eth-1.5/device-name.patch index b0e0d329e6..d8bbc97b8c 100644 --- a/packages/ixp425-eth/ixp400-eth-1.5/device-name.patch +++ b/packages/ixp425-eth/ixp400-eth-1.5/device-name.patch @@ -1,14 +1,47 @@ ---- ./ixp400_eth.c 2005-11-20 16:58:48.973330982 -0800 -+++ ./ixp400_eth.c 2005-11-20 17:01:26.719257307 -0800 -@@ -161,7 +161,11 @@ MODULE_PARM(dev_max_count, "i"); + register the ethernet devices as ethX + + ixp400_eth.c | 41 +++++++++++++++++++---------------------- + 1 file changed, 19 insertions(+), 22 deletions(-) + +--- ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000 ++++ ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000 +@@ -160,9 +160,6 @@ MODULE_PARM_DESC(phy_reset, "If non-zero + MODULE_PARM(dev_max_count, "i"); MODULE_PARM_DESC(dev_max_count, "Number of devices to initialize"); - /* devices will be called ixp0 and ixp1 */ -+#ifdef IX_DEVICE_NAME_ETH -+#define DEVICE_NAME "eth" -+#else - #define DEVICE_NAME "ixp" -+#endif - +-/* devices will be called ixp0 and ixp1 */ +-#define DEVICE_NAME "ixp" +- /* boolean values for PHY link speed, duplex, and autonegotiation */ #define PHY_SPEED_10 0 + #define PHY_SPEED_100 1 +@@ -1570,7 +1568,7 @@ static int dev_pmu_timer_setup(void) + if (request_irq(IX_OSAL_IXP400_XSCALE_PMU_IRQ_LVL, + dev_pmu_timer_os_isr, + SA_SHIRQ, +- DEVICE_NAME, ++ MODULE_NAME, + (void *)IRQ_ANY_PARAMETER)) + { + P_ERROR("Failed to reassign irq to PMU timer interrupt!\n"); +@@ -3009,8 +3008,8 @@ static int phy_init(void) + if (port_id == IX_ETH_PORT_2) npe_id = "C"; + if (port_id == IX_ETH_PORT_3) npe_id = "A"; + +- P_INFO("%s%d is using NPE%s and the PHY at address %d\n", +- DEVICE_NAME, dev_count, npe_id, phyAddresses[port_id]); ++ P_INFO("ethernet %d using NPE%s and the PHY at address %d\n", ++ dev_count, npe_id, phyAddresses[port_id]); + + /* Set the MAC to the same duplex mode as the phy */ + ixEthAccPortDuplexModeSet(port_id, +@@ -3215,9 +3215,6 @@ static int __devinit dev_eth_probe(struc + /* set the private port ID */ + priv->port_id = portId; + +- /* set device name */ +- sprintf(ndev->name, DEVICE_NAME"%d", priv->port_id); +- + TRACE; + + /* initialize RX pool */ diff --git a/packages/ixp425-eth/ixp400-eth-1.5/int-random.patch b/packages/ixp425-eth/ixp400-eth-1.5/int-random.patch new file mode 100644 index 0000000000..fede9daf90 --- /dev/null +++ b/packages/ixp425-eth/ixp400-eth-1.5/int-random.patch @@ -0,0 +1,16 @@ +use the ethernet device interrupts to gather entropy + + ixp400_eth.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000 ++++ ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000 +@@ -2864,7 +2864,7 @@ static int qmgr_init(void) + + if (request_irq(IX_OSAL_IXP400_QM1_IRQ_LVL, + dev_qmgr_os_isr, +- SA_SHIRQ, ++ SA_SHIRQ | SA_SAMPLE_RANDOM, + MODULE_NAME, + (void *)IRQ_ANY_PARAMETER)) + { diff --git a/packages/ixp425-eth/ixp400-eth-1.5/le.patch b/packages/ixp425-eth/ixp400-eth-1.5/le.patch index 37c4150bc9..3d569015e6 100644 --- a/packages/ixp425-eth/ixp400-eth-1.5/le.patch +++ b/packages/ixp425-eth/ixp400-eth-1.5/le.patch @@ -1,6 +1,11 @@ ---- ./ixp400_eth.c 2005-11-20 18:25:26.812410374 -0800 -+++ ./ixp400_eth.c 2005-11-20 18:50:22.126504557 -0800 -@@ -2046,6 +2046,16 @@ static void rx_cb(UINT32 callbackTag, IX +little endian support + + ixp400_eth.c | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) + +--- ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000 ++++ ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000 +@@ -2040,6 +2040,16 @@ static void rx_cb(UINT32 callbackTag, IX skb->tail = skb->data + len; skb->len = len; @@ -13,11 +18,11 @@ + *p = ntohl(*p), ++p; + } +#endif -+ ++ #ifdef DEBUG_DUMP skb_dump("rx", skb); #endif -@@ -2436,6 +2446,16 @@ static int dev_hard_start_xmit(struct sk +@@ -2431,6 +2441,16 @@ static int dev_hard_start_xmit(struct sk return 0; } diff --git a/packages/ixp425-eth/ixp400-eth-1.5/mac-address.patch b/packages/ixp425-eth/ixp400-eth-1.5/mac-address.patch index bd16124e94..1845dd3089 100644 --- a/packages/ixp425-eth/ixp400-eth-1.5/mac-address.patch +++ b/packages/ixp425-eth/ixp400-eth-1.5/mac-address.patch @@ -1,5 +1,5 @@ ---- ./ixp400_eth.c.base 2005-11-28 23:59:34.476404165 -0800 -+++ ./ixp400_eth.c 2005-11-29 00:42:44.587389574 -0800 +--- ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000 ++++ ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000 @@ -23,10 +23,10 @@ * This driver is written and optimized for Intel Xscale technology. * diff --git a/packages/ixp425-eth/ixp400-eth-1.5/poll-controller.patch b/packages/ixp425-eth/ixp400-eth-1.5/poll-controller.patch index 22049c3491..64fb310ee5 100644 --- a/packages/ixp425-eth/ixp400-eth-1.5/poll-controller.patch +++ b/packages/ixp425-eth/ixp400-eth-1.5/poll-controller.patch @@ -1,6 +1,11 @@ ---- ./ixp400_eth.c 2005-11-19 23:36:44.482912850 -0800 -+++ ./ixp400_eth.c 2005-11-19 23:39:13.080263492 -0800 -@@ -347,6 +347,12 @@ static int dev_pmu_timer_init(void); +poll controller support + + ixp400_eth.c | 22 ++++++++++++++++++++++ + 1 file changed, 22 insertions(+) + +--- ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000 ++++ ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000 +@@ -348,6 +348,12 @@ static int dev_pmu_timer_init(void); extern void ixEthTxFrameDoneQMCallback(IxQMgrQId qId, IxQMgrCallbackId callbackId); @@ -13,7 +18,7 @@ /* Private device data */ typedef struct { spinlock_t lock; /* multicast management lock */ -@@ -3056,6 +3062,19 @@ static int set_mac_address(struct net_de +@@ -3060,6 +3066,19 @@ static int set_mac_address(struct net_de return 0; } @@ -33,7 +38,7 @@ /* * TX QDISC -@@ -3269,6 +3288,9 @@ static int __devinit dev_eth_probe(struc +@@ -3270,6 +3289,9 @@ static int __devinit dev_eth_probe(struc ndev->get_stats = dev_get_stats; ndev->set_multicast_list = dev_set_multicast_list; ndev->flags |= IFF_MULTICAST; diff --git a/packages/ixp425-eth/ixp400-eth-1.5/stop-on-rmmod.patch b/packages/ixp425-eth/ixp400-eth-1.5/stop-on-rmmod.patch new file mode 100644 index 0000000000..2ddc98938a --- /dev/null +++ b/packages/ixp425-eth/ixp400-eth-1.5/stop-on-rmmod.patch @@ -0,0 +1,29 @@ +devices must be explicitely stopped when +the driver is going do be removed, otherwise +it will simply hang. + + ixp400_eth.c | 13 ++++++++++--- + 1 file changed, 10 insertions(+), 3 deletions(-) + +--- ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000 ++++ ixp400-eth/ixp400_eth.c 1970-01-01 00:00:00.000000000 +0000 +@@ -3800,9 +3800,16 @@ void __exit ixp400_eth_exit(void) + + TRACE; + +- /* We can only get here when the module use count is 0, +- * so there's no need to stop devices. +- */ ++ /* stop devices */ ++ ++#if IS_KERNEL26 ++ for (dev_count = 0; ++ dev_count < dev_max_count; /* module parameter */ ++ dev_count++) ++ { ++ do_dev_stop(platform_get_drvdata(&ixp400_eth_devices[dev_count])); ++ } ++#endif + + if (no_ixp400_sw_init == 0) /* module parameter */ + { diff --git a/packages/ixp425-eth/ixp400-eth_1.5.bb b/packages/ixp425-eth/ixp400-eth_1.5.bb index 24eb358902..96287fb3d9 100644 --- a/packages/ixp425-eth/ixp400-eth_1.5.bb +++ b/packages/ixp425-eth/ixp400-eth_1.5.bb @@ -6,16 +6,19 @@ HOMEPAGE = "http://www.intel.com/design/network/products/npfamily/ixp420.htm" LICENSE = "GPL" SRC_URI = "ftp://aiedownload.intel.com/df-support/9519/eng/GPL_ixp400LinuxEthernetDriverPatch-1_5.zip" -SRC_URI += "file://Makefile.patch;patch=1" SRC_URI += "file://2.6.14.patch;patch=1" SRC_URI += "file://2.6.15.patch;patch=1" SRC_URI += "file://device-name.patch;patch=1" SRC_URI += "file://poll-controller.patch;patch=1" SRC_URI += "file://le.patch;patch=1" SRC_URI += "file://mac-address.patch;patch=1" +SRC_URI += "file://int-random.patch;patch=1" +SRC_URI += "file://stop-on-rmmod.patch;patch=1" +SRC_URI += "file://continue-if-qmgr-init-fails.patch;patch=1" SRC_URI += "file://debug.patch;patch=1" +SRC_URI += "file://Makefile.patch;patch=1" -PR = "r1" +PR = "r2" DEPENDS = "ixp4xx-csr" RDEPENDS = "ixp4xx-csr" |