r2432 - in trunk/kernel/s390/kernel-image-2.6.10-s390: debian diffs

Bastian Blank waldi@costa.debian.org
Tue, 01 Feb 2005 08:23:51 +0100


Author: waldi
Date: 2005-02-01 08:23:50 +0100 (Tue, 01 Feb 2005)
New Revision: 2432

Added:
   trunk/kernel/s390/kernel-image-2.6.10-s390/diffs/eui64.diff
   trunk/kernel/s390/kernel-image-2.6.10-s390/diffs/kerntypes.diff
Removed:
   trunk/kernel/s390/kernel-image-2.6.10-s390/diffs/ibm.diff
Modified:
   trunk/kernel/s390/kernel-image-2.6.10-s390/debian/changelog
Log:
* debian/changelog: Update.
* diffs/eui64.diff: Add upstream patch.
* diffs/ibm.diff: Remove.
* diffs/kerntypes.diff
  - Copy relevant parts from diffs/ibm.diff.
  - Add missing parts from IBM patch.


Modified: trunk/kernel/s390/kernel-image-2.6.10-s390/debian/changelog
===================================================================
--- trunk/kernel/s390/kernel-image-2.6.10-s390/debian/changelog	2005-02-01 07:03:14 UTC (rev 2431)
+++ trunk/kernel/s390/kernel-image-2.6.10-s390/debian/changelog	2005-02-01 07:23:50 UTC (rev 2432)
@@ -1,3 +1,11 @@
+kernel-image-2.6.10-s390 (2.6.10-2) UNRELEASED; urgency=low
+
+  * diffs:
+    - Split ibm into eui64 and kerntypes.
+    - Replace eui64 with upstream patch.
+
+ -- Bastian Blank <waldi@debian.org>  Mon, 31 Jan 2005 17:01:04 +0100
+
 kernel-image-2.6.10-s390 (2.6.10-1) unstable; urgency=low
 
   * New upstream release.

Added: trunk/kernel/s390/kernel-image-2.6.10-s390/diffs/eui64.diff
===================================================================
--- trunk/kernel/s390/kernel-image-2.6.10-s390/diffs/eui64.diff	2005-02-01 07:03:14 UTC (rev 2431)
+++ trunk/kernel/s390/kernel-image-2.6.10-s390/diffs/eui64.diff	2005-02-01 07:23:50 UTC (rev 2432)
@@ -0,0 +1,90 @@
+--- drivers/s390/net/qeth_main.c	2005-01-04 00:49:39 +01:00
++++ drivers/s390/net/qeth_main.c	2005-01-16 12:33:52 +01:00
+@@ -5033,27 +5033,6 @@
+ 	return 0;
+ }
+ 
+-#ifdef CONFIG_QETH_IPV6
+-int
+-qeth_ipv6_generate_eui64(u8 * eui, struct net_device *dev)
+-{
+-	switch (dev->type) {
+-	case ARPHRD_ETHER:
+-	case ARPHRD_FDDI:
+-	case ARPHRD_IEEE802_TR:
+-		if (dev->addr_len != ETH_ALEN)
+-			return -1;
+-		memcpy(eui, dev->dev_addr, 3);
+-		memcpy(eui + 5, dev->dev_addr + 3, 3);
+-		eui[3] = (dev->dev_id >> 8) & 0xff;
+-		eui[4] = dev->dev_id & 0xff;
+-		return 0;
+-	}
+-	return -1;
+-
+-}
+-#endif
+-
+ static void
+ qeth_get_mac_for_ipm(__u32 ipm, char *mac, struct net_device *dev)
+ {
+@@ -5587,11 +5566,8 @@
+ 	}
+ #ifdef CONFIG_QETH_IPV6
+ 	/*IPv6 address autoconfiguration stuff*/
+-	card->dev->dev_id = card->info.unique_id & 0xffff;
+ 	if (!(card->info.unique_id & UNIQUE_ID_NOT_BY_CARD))
+-		card->dev->generate_eui64 = qeth_ipv6_generate_eui64;
+-
+-
++		card->dev->dev_id = card->info.unique_id & 0xffff;
+ #endif
+ 	dev->hard_header_parse = NULL;
+ 	dev->set_mac_address = qeth_layer2_set_mac_address;
+--- include/linux/netdevice.h	2005-01-10 21:23:55 +01:00
++++ include/linux/netdevice.h	2005-01-16 12:32:07 +01:00
+@@ -345,6 +345,7 @@
+ 	unsigned char		broadcast[MAX_ADDR_LEN];	/* hw bcast add	*/
+ 	unsigned char		dev_addr[MAX_ADDR_LEN];	/* hw address	*/
+ 	unsigned char		addr_len;	/* hardware address length	*/
++	unsigned short          dev_id;		/* for shared network cards */
+ 
+ 	struct dev_mc_list	*mc_list;	/* Multicast mac addresses	*/
+ 	int			mc_count;	/* Number of installed mcasts	*/
+--- net/ipv6/addrconf.c	2005-01-14 22:30:07 +01:00
++++ net/ipv6/addrconf.c	2005-01-16 12:29:51 +01:00
+@@ -1079,10 +1079,29 @@
+ 		if (dev->addr_len != ETH_ALEN)
+ 			return -1;
+ 		memcpy(eui, dev->dev_addr, 3);
+-		memcpy(eui + 5, dev->dev_addr+3, 3);
+-		eui[3] = 0xFF;
+-		eui[4] = 0xFE;
+-		eui[0] ^= 2;
++		memcpy(eui + 5, dev->dev_addr + 3, 3);
++
++		/*
++		 * The zSeries OSA network cards can be shared among various
++		 * OS instances, but the OSA cards have only one MAC address.
++		 * This leads to duplicate address conflicts in conjunction
++		 * with IPv6 if more than one instance uses the same card.
++		 * 
++		 * The driver for these cards can deliver a unique 16-bit
++		 * identifier for each instance sharing the same card.  It is
++		 * placed instead of 0xFFFE in the interface identifier.  The
++		 * "u" bit of the interface identifier is not inverted in this
++		 * case.  Hence the resulting interface identifier has local
++		 * scope according to RFC2373.
++		 */
++		if (dev->dev_id) {
++			eui[3] = (dev->dev_id >> 8) & 0xFF;
++			eui[4] = dev->dev_id & 0xFF;
++		} else {
++			eui[3] = 0xFF;
++			eui[4] = 0xFE;
++			eui[0] ^= 2;
++		}
+ 		return 0;
+ 	case ARPHRD_ARCNET:
+ 		/* XXX: inherit EUI-64 from other interface -- yoshfuji */
+

Deleted: trunk/kernel/s390/kernel-image-2.6.10-s390/diffs/ibm.diff
===================================================================
--- trunk/kernel/s390/kernel-image-2.6.10-s390/diffs/ibm.diff	2005-02-01 07:03:14 UTC (rev 2431)
+++ trunk/kernel/s390/kernel-image-2.6.10-s390/diffs/ibm.diff	2005-02-01 07:23:50 UTC (rev 2432)
@@ -1,189 +0,0 @@
---- arch/s390/boot/kerntypes.c
-+++ arch/s390/boot/kerntypes.c
-@@ -0,0 +1,58 @@
-+/*
-+ * kerntypes.c
-+ *
-+ * Dummy module that includes headers for all kernel types of interest.
-+ * The kernel type information is used by the lcrash utility when
-+ * analyzing system crash dumps or the live system. Using the type
-+ * information for the running system, rather than kernel header files,
-+ * makes for a more flexible and robust analysis tool.
-+ *
-+ * This source code is released under the GNU GPL.
-+ */
-+
-+/* generate version for this file */
-+typedef char *COMPILE_VERSION;
-+
-+/* General linux types */
-+
-+#include <linux/autoconf.h>
-+#include <linux/compile.h>
-+#include <linux/config.h>
-+#include <linux/utsname.h>
-+#include <linux/module.h>
-+#include <linux/sched.h>
-+#include <linux/mm.h>
-+
-+#include <asm/lowcore.h>
-+#include <asm/debug.h>
-+#include <asm/ccwdev.h>
-+#include <asm/ccwgroup.h>
-+#include <asm/qdio.h>
-+
-+/* channel subsystem driver */
-+#include "drivers/s390/cio/cio.h"
-+#include "drivers/s390/cio/chsc.h"
-+#include "drivers/s390/cio/css.h"
-+#include "drivers/s390/cio/device.h"
-+#include "drivers/s390/cio/qdio.h"
-+
-+/* dasd device driver */
-+#include "drivers/s390/block/dasd_int.h"
-+#include "drivers/s390/block/dasd_diag.h"
-+#include "drivers/s390/block/dasd_eckd.h"
-+#include "drivers/s390/block/dasd_fba.h"
-+
-+/* networking drivers */
-+#include "drivers/s390/net/fsm.h"
-+#include "drivers/s390/net/iucv.h"
-+#include "drivers/s390/net/lcs.h"
-+
-+/* zfcp device driver */
-+#include "drivers/s390/scsi/zfcp_def.h"
-+#include "drivers/s390/scsi/zfcp_fsf.h"
-+
-+/* include sched.c for types: 
-+ *    - struct prio_array 
-+ *    - struct runqueue
-+ */
-+#include "kernel/sched.c"
---- include/linux/netdevice.h
-+++ include/linux/netdevice.h
-@@ -475,6 +475,9 @@
- #ifdef CONFIG_NET_POLL_CONTROLLER
- 	void                    (*poll_controller)(struct net_device *dev);
- #endif
-+#ifdef CONFIG_X_NET_DEVICE_SPECIFIC_EUI64
-+	int			(*generate_eui64)(u8 *eui, struct net_device *dev);
-+#endif
- 
- 	/* bridge stuff */
- 	struct net_bridge_port	*br_port;
-@@ -486,6 +489,12 @@
- 
- 	/* class/net/name entry */
- 	struct class_device	class_dev;
-+
-+#ifdef CONFIG_X_NET_DEVICE_SPECIFIC_EUI64
-+	/* use dev_id in conjunction with shared network cards*/
-+	unsigned short		dev_id;
-+#endif
-+
- 	/* how much padding had been added by alloc_netdev() */
- 	int padded;
- };
---- include/net/addrconf.h
-+++ include/net/addrconf.h
-@@ -69,6 +69,9 @@
- 					       struct in6_addr *daddr,
- 					       struct in6_addr *saddr);
- extern int			ipv6_get_lladdr(struct net_device *dev, struct in6_addr *);
-+#ifdef CONFIG_X_NET_DEVICE_SPECIFIC_EUI64
-+extern int			ipv6_generate_eui64(u8 *eui, struct net_device *dev);
-+#endif
- extern int			ipv6_rcv_saddr_equal(const struct sock *sk, 
- 						      const struct sock *sk2);
- extern void			addrconf_join_solict(struct net_device *dev,
---- net/8021q/vlan.c
-+++ net/8021q/vlan.c
-@@ -454,6 +454,12 @@
- 
- 	new_dev->state = real_dev->state & VLAN_LINK_STATE_MASK;
- 
-+#ifdef CONFIG_X_NET_DEVICE_SPECIFIC_EUI64
-+	/* ipv6 shared card related stuff */
-+	new_dev->dev_id = real_dev->dev_id;
-+	new_dev->generate_eui64 = real_dev->generate_eui64;
-+#endif
-+
- 	/* need 4 bytes for extra VLAN header info,
- 	 * hope the underlying device can handle it.
- 	 */
---- net/ipv6/addrconf.c
-+++ net/ipv6/addrconf.c
-@@ -1074,7 +1074,10 @@
- 	__ipv6_dev_ac_dec(ifp->idev, &addr);
- }
- 
--static int ipv6_generate_eui64(u8 *eui, struct net_device *dev)
-+#ifndef CONFIG_X_NET_DEVICE_SPECIFIC_EUI64
-+static
-+#endif
-+int ipv6_generate_eui64(u8 *eui, struct net_device *dev)
- {
- 	switch (dev->type) {
- 	case ARPHRD_ETHER:
-@@ -1132,7 +1135,11 @@
- 
- 	dev = idev->dev;
- 
-+#ifdef CONFIG_X_NET_DEVICE_SPECIFIC_EUI64
-+	if (dev->generate_eui64(idev->work_eui64, dev)) {
-+#else
- 	if (ipv6_generate_eui64(idev->work_eui64, dev)) {
-+#endif
- 		printk(KERN_INFO
- 			"__ipv6_regen_rndid(idev=%p): cannot get EUI64 identifier; use random bytes.\n",
- 			idev);
-@@ -1396,7 +1403,11 @@
- 
- 		if (pinfo->prefix_len == 64) {
- 			memcpy(&addr, &pinfo->prefix, 8);
-+#ifdef CONFIG_X_NET_DEVICE_SPECIFIC_EUI64
-+			if (dev->generate_eui64(addr.s6_addr + 8, dev) &&
-+#else
- 			if (ipv6_generate_eui64(addr.s6_addr + 8, dev) &&
-+#endif
- 			    ipv6_inherit_eui64(addr.s6_addr + 8, in6_dev)) {
- 				in6_dev_put(in6_dev);
- 				return;
-@@ -1799,6 +1810,11 @@
- 		return;
- 	}
- 
-+#ifdef CONFIG_X_NET_DEVICE_SPECIFIC_EUI64
-+	if (!dev->generate_eui64) 
-+		dev->generate_eui64 = ipv6_generate_eui64;
-+#endif
-+
- 	idev = addrconf_add_dev(dev);
- 	if (idev == NULL)
- 		return;
-@@ -1806,7 +1822,11 @@
- 	memset(&addr, 0, sizeof(struct in6_addr));
- 	addr.s6_addr32[0] = htonl(0xFE800000);
- 
-+#ifdef CONFIG_X_NET_DEVICE_SPECIFIC_EUI64
-+	if (dev->generate_eui64(addr.s6_addr + 8, dev) == 0)
-+#else
- 	if (ipv6_generate_eui64(addr.s6_addr + 8, dev) == 0)
-+#endif
- 		addrconf_add_linklocal(idev, &addr);
- }
- 
---- net/Kconfig
-+++ net/Kconfig
-@@ -647,6 +647,11 @@
- config NET_POLL_CONTROLLER
- 	def_bool NETPOLL
- 
-+config X_NET_DEVICE_SPECIFIC_EUI64
-+	bool
-+	default y
-+	depends on ARCH_S390
-+
- source "net/ax25/Kconfig"
- 
- source "net/irda/Kconfig"

Copied: trunk/kernel/s390/kernel-image-2.6.10-s390/diffs/kerntypes.diff (from rev 2396, trunk/kernel/s390/kernel-image-2.6.10-s390/diffs/ibm.diff)
===================================================================
--- trunk/kernel/s390/kernel-image-2.6.10-s390/diffs/ibm.diff	2005-01-24 07:26:45 UTC (rev 2396)
+++ trunk/kernel/s390/kernel-image-2.6.10-s390/diffs/kerntypes.diff	2005-02-01 07:23:50 UTC (rev 2432)
@@ -0,0 +1,94 @@
+--- arch/s390/Makefile	Sun Apr  4 05:36:26 2004
++++ arch/s390/Makefile	Tue Apr 13 10:35:18 2004
+@@ -52,12 +52,12 @@
+ 
+ boot		:= arch/$(ARCH)/boot
+ 
+-all: image
++all: image kerntypes.o
+ 
+ install: vmlinux
+ 	$(Q)$(MAKE) $(build)=$(boot) $@
+ 
+-image: vmlinux
++image kerntypes.o: vmlinux
+ 	$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
+ 
+ archclean:
+--- arch/s390/boot/Makefile	Sun Apr  4 05:38:27 2004
++++ arch/s390/boot/Makefile	Tue Apr 13 10:35:18 2004
+@@ -8,11 +8,11 @@
+ 
+ EXTRA_CFLAGS  := -DCOMPILE_VERSION=$(COMPILE_VERSION) -gstabs -I.
+ 
+-targets := image
++targets := image kerntypes.o
+ 
+ $(obj)/image: vmlinux FORCE
+ 	$(call if_changed,objcopy)
+ 
+ install: $(CONFIGURE) $(obj)/image
+ 	sh -x  $(srctree)/$(obj)/install.sh $(KERNELRELEASE) $(obj)/image \
+-	      System.map Kerntypes "$(INSTALL_PATH)"
++	      System.map "$(INSTALL_PATH)"
+--- arch/s390/boot/kerntypes.c	Thu Jan  1 01:00:00 1970
++++ arch/s390/boot/kerntypes.c	Tue Apr 13 10:35:18 2004
+@@ -0,0 +1,58 @@
++/*
++ * kerntypes.c
++ *
++ * Dummy module that includes headers for all kernel types of interest.
++ * The kernel type information is used by the lcrash utility when
++ * analyzing system crash dumps or the live system. Using the type
++ * information for the running system, rather than kernel header files,
++ * makes for a more flexible and robust analysis tool.
++ *
++ * This source code is released under the GNU GPL.
++ */
++
++/* generate version for this file */
++typedef char *COMPILE_VERSION;
++
++/* General linux types */
++
++#include <linux/autoconf.h>
++#include <linux/compile.h>
++#include <linux/config.h>
++#include <linux/utsname.h>
++#include <linux/module.h>
++#include <linux/sched.h>
++#include <linux/mm.h>
++
++#include <asm/lowcore.h>
++#include <asm/debug.h>
++#include <asm/ccwdev.h>
++#include <asm/ccwgroup.h>
++#include <asm/qdio.h>
++
++/* channel subsystem driver */
++#include "drivers/s390/cio/cio.h"
++#include "drivers/s390/cio/chsc.h"
++#include "drivers/s390/cio/css.h"
++#include "drivers/s390/cio/device.h"
++#include "drivers/s390/cio/qdio.h"
++
++/* dasd device driver */
++#include "drivers/s390/block/dasd_int.h"
++#include "drivers/s390/block/dasd_diag.h"
++#include "drivers/s390/block/dasd_eckd.h"
++#include "drivers/s390/block/dasd_fba.h"
++
++/* networking drivers */
++#include "drivers/s390/net/fsm.h"
++#include "drivers/s390/net/iucv.h"
++#include "drivers/s390/net/lcs.h"
++
++/* zfcp device driver */
++#include "drivers/s390/scsi/zfcp_def.h"
++#include "drivers/s390/scsi/zfcp_fsf.h"
++
++/* include sched.c for types: 
++ *    - struct prio_array 
++ *    - struct runqueue
++ */
++#include "kernel/sched.c"