summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrans Meulenbroeks <fransmeulenbroeks@yahoo.com>2005-11-01 11:48:34 +0000
committerOpenEmbedded Project <openembedded-devel@lists.openembedded.org>2005-11-01 11:48:34 +0000
commit2212fe1f354a474b884e1d0705bcc1cd051d729b (patch)
treef7d08e6f2c7de5744336fa84d3158ef89beb7a9c
parentbfd78e118cb70c13f04b6a26e908892086445bed (diff)
ixp425-eth/ixp400-eth: added pollcontroller patch for ixp400; required for netconsole
-rw-r--r--packages/ixp425-eth/files/ixp400_pollcontroller.patch50
-rw-r--r--packages/ixp425-eth/ixp400-eth_1.4.bb3
2 files changed, 52 insertions, 1 deletions
diff --git a/packages/ixp425-eth/files/ixp400_pollcontroller.patch b/packages/ixp425-eth/files/ixp400_pollcontroller.patch
new file mode 100644
index 0000000000..b6fe10a5c6
--- /dev/null
+++ b/packages/ixp425-eth/files/ixp400_pollcontroller.patch
@@ -0,0 +1,50 @@
+*** ixp400-eth-1.4-r4/ixp400_eth.c.orig Mon Oct 31 22:45:46 2005
+--- ixp400-eth-1.4-r4/ixp400_eth.c Mon Oct 31 22:47:48 2005
+***************
+*** 306,311 ****
+--- 306,316 ----
+ ixEthRxFrameQMCallback(IxQMgrQId qId, IxQMgrCallbackId callbackId);
+ extern void
+ ixEthTxFrameDoneQMCallback(IxQMgrQId qId, IxQMgrCallbackId callbackId);
++ #ifdef CONFIG_NET_POLL_CONTROLLER
++ /* poll controller (needed for netconsole et al) */
++ static void
++ ixp425eth_poll_controller(struct net_device *dev);
++ #endif
+
+ /* Private device data */
+ typedef struct {
+***************
+*** 3082,3087 ****
+--- 3087,3095 ----
+ ndev->get_stats = dev_get_stats;
+ ndev->set_multicast_list = dev_set_multicast_list;
+ ndev->flags |= IFF_MULTICAST;
++ #ifdef CONFIG_NET_POLL_CONTROLLER
++ ndev->poll_controller = ixp425eth_poll_controller;
++ #endif
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,13)
+ ndev->set_mac_address = dev_set_mac_address;
+ #else
+***************
+*** 3172,3177 ****
+--- 3180,3198 ----
+ return res;
+ }
+
++ #ifdef CONFIG_NET_POLL_CONTROLLER
++ /*
++ * Polling receive - used by netconsole and other diagnostic tools
++ * to allow network i/o with interrupts disabled.
++ * (stolen from 8139too.c by siddy)
++ */
++ static void ixp425eth_poll_controller(struct net_device *dev)
++ {
++ disable_irq(dev->irq);
++ dev_qmgr_os_isr(dev->irq, dev, NULL);
++ enable_irq(dev->irq);
++ }
++ #endif
+
+ static int __devinit npe_eth_init_device(struct device *dev)
+ {
diff --git a/packages/ixp425-eth/ixp400-eth_1.4.bb b/packages/ixp425-eth/ixp400-eth_1.4.bb
index f6b4dbb4e6..623f609d7d 100644
--- a/packages/ixp425-eth/ixp400-eth_1.4.bb
+++ b/packages/ixp425-eth/ixp400-eth_1.4.bb
@@ -8,7 +8,8 @@ SRC_URI += "file://ixp400-le-be.patch;patch=1"
SRC_URI += "file://makefile.patch;patch=1"
SRC_URI += "file://2.6.13.patch;patch=1"
SRC_URI += "file://2.6.14.patch;patch=1"
-PR = "r4"
+SRC_URI += "file://ixp400_pollcontroller.patch;patch=1"
+PR = "r5"
DEPENDS = "ixp4xx-csr"
RDEPENDS = "ixp4xx-csr"