rpms/open-vm-tools-kmod/F-12 open-vm-tools-217847-vmxnet3.patch, NONE, 1.1

Denis Leroy denis at rpmfusion.org
Wed Feb 17 10:17:18 CET 2010


Author: denis

Update of /cvs/free/rpms/open-vm-tools-kmod/F-12
In directory se02.es.rpmfusion.net:/tmp/cvs-serv10616

Added Files:
	open-vm-tools-217847-vmxnet3.patch 
Log Message:
Adding patch with vmxnet3 sources, build vmxnet3 only if kernel < 2.6.32

open-vm-tools-217847-vmxnet3.patch:
 COPYING              |  339 +++++
 Makefile             |  167 ++
 Makefile.kernel      |   42 
 README               |   11 
 vmxnet3_drv.c        | 3210 +++++++++++++++++++++++++++++++++++++++++++++++++++
 vmxnet3_ethtool.c    |  594 +++++++++
 vmxnet3_int.h        |  412 ++++++
 vmxnet3_shm.c        | 1531 ++++++++++++++++++++++++
 vmxnet3_shm.h        |  316 +++++
 vmxnet3_shm_shared.h |   94 +
 vmxnet3_version.h    |   35 
 11 files changed, 6751 insertions(+)

--- NEW FILE open-vm-tools-217847-vmxnet3.patch ---
diff -w -N -r -u open-vm-tools-2010.01.19-226760/modules/linux/vmxnet3/COPYING open-vm-tools-2009.12.16-217847/modules/linux/vmxnet3/COPYING
--- open-vm-tools-2010.01.19-226760/modules/linux/vmxnet3/COPYING	1970-01-01 01:00:00.000000000 +0100
+++ open-vm-tools-2009.12.16-217847/modules/linux/vmxnet3/COPYING	2009-12-17 22:26:31.000000000 +0100
@@ -0,0 +1,339 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
[...6396 lines suppressed...]
+				len,
+				direction);
+	}
+
+}
+
+static inline dma_addr_t
+vmxnet3_map_page(struct vmxnet3_adapter *adapter,
+		struct page *page,
+		size_t offset,
+		size_t len,
+		int direction)
+{
+	if (adapter->is_shm) {
+		unsigned long shm_idx = (unsigned long)page;
+		page = VMXNET3_SHM_IDX2PAGE(adapter->shm, shm_idx);
+	}
+
+	return pci_map_page(adapter->pdev,
+			page,
+			offset,
+			len,
+			direction);
+}
+
+/*
+ *-----------------------------------------------------------------------------
+ *
+ * vmxnet3_(put|alloc)_page --
+ *
+ *      Allocation and release of pages. Either use regular or shared memory
+ *      pages.
+ *
+ * Results:
+ *      Depends
+ *
+ * Side effects:
+ *      None.
+ *
+ *-----------------------------------------------------------------------------
+ */
+static inline void
+vmxnet3_put_page(struct vmxnet3_adapter *adapter,
+		struct page *page)
+{
+	if (!adapter->is_shm)
+		put_page(page);
+	else
+		vmxnet3_shm_free_page(adapter->shm, (unsigned long)page);
+}
+
+static inline void *
+vmxnet3_alloc_page(struct vmxnet3_adapter *adapter)
+{
+	if (adapter->is_shm)
+		return (void*) (unsigned long) vmxnet3_shm_alloc_page(adapter->shm);
+	else
+		return alloc_page(GFP_ATOMIC);
+
+}
+
+
+#endif
diff -w -N -r -u open-vm-tools-2010.01.19-226760/modules/linux/vmxnet3/vmxnet3_shm_shared.h open-vm-tools-2009.12.16-217847/modules/linux/vmxnet3/vmxnet3_shm_shared.h
--- open-vm-tools-2010.01.19-226760/modules/linux/vmxnet3/vmxnet3_shm_shared.h	1970-01-01 01:00:00.000000000 +0100
+++ open-vm-tools-2009.12.16-217847/modules/linux/vmxnet3/vmxnet3_shm_shared.h	2009-12-17 22:26:31.000000000 +0100
@@ -0,0 +1,94 @@
+/*********************************************************
+ * Copyright (C) 2009 VMware, Inc. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation version 2 and no later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ *
+ *********************************************************/
+
+/*
+ * vmxnet3_shm_shared.h --
+ *
+ *   Header shared between vmxnet3 shared memory kernel driver and userspace.
+ *
+ */
+
+#ifndef __VMXNET_SHARED_SHM
+#define __VMXNET_SHARED_SHM
+
+#include <linux/ioctl.h>
+
+// ioctl constants
+#define SHM_IOCTL_MAGIC 'v'
+#define SHM_IOCTL_TX                  _IO(SHM_IOCTL_MAGIC, 0)
+#define SHM_IOCTL_ALLOC_ONE           _IO(SHM_IOCTL_MAGIC, 1)
+#define SHM_IOCTL_ALLOC_MANY          _IO(SHM_IOCTL_MAGIC, 2)
+#define SHM_IOCTL_ALLOC_ONE_AND_MANY  _IO(SHM_IOCTL_MAGIC, 3)
+#define SHM_IOCTL_FREE_ONE            _IO(SHM_IOCTL_MAGIC, 4)
+
+/*
+ * invalid index
+ *
+ * Must be 0 so that a invalid shared memory page has the same
+ * value as a NULL struct page. We need that because we overload
+ * the same field for regular and shared memory version of vmxnet3.
+ */
+#define SHM_INVALID_IDX 0
+
+// sizes of shared memory regions in pages
+#define SHM_DATA_START 0
+#define SHM_DEFAULT_DATA_SIZE 4096
+#define SHM_MAX_DATA_SIZE 16384
+#define SHM_CTL_START 16384
+#define SHM_CTL_SIZE 1
+
+// ring size (in entries) is limited by the single control page - 4 bytes per re
+#define SHM_RX_RING_SIZE 500
+#define SHM_TX_RING_SIZE 500
+
+// maximum fragments per packet is 16 (64k) + 2 for metadata
+#define VMXNET3_SHM_MAX_FRAGS 18
+
+// shared memory ring entry
+struct vmxnet3_shm_ringentry
+{
+   uint16_t idx;      // index of this page in the pool
+   uint16_t len: 13;  // length of data in this page
+   uint16_t own: 1;   // whether the receiver owns the re
+   uint16_t eop: 1;   // end of packet
+   uint16_t trash: 1; // ignore all the data in this packet, but still take ownership
+};
+
+static const struct vmxnet3_shm_ringentry RE_ZERO = {0,0,0,0,0};
+
+// shared memory control page
+struct vmxnet3_shm_ctl
+{
+   struct vmxnet3_shm_ringentry rx_ring[SHM_RX_RING_SIZE];
+   struct vmxnet3_shm_ringentry tx_ring[SHM_TX_RING_SIZE];
+
+   // XXX move kernel_* into the kernel, currently here for debugging
+   // user_rxi is used by poll() to avoid going to sleep when there are packets waiting
+   uint16_t user_rxi, user_txi;
+   uint16_t kernel_rxi, kernel_txi;
+
+   struct
+   {
+      uint64_t user_rx, user_tx;
+      uint64_t kernel_rx, kernel_tx;
+   } stats;
+
+   uint64_t channelBad;
+};
+
+#endif
diff -w -N -r -u open-vm-tools-2010.01.19-226760/modules/linux/vmxnet3/vmxnet3_version.h open-vm-tools-2009.12.16-217847/modules/linux/vmxnet3/vmxnet3_version.h
--- open-vm-tools-2010.01.19-226760/modules/linux/vmxnet3/vmxnet3_version.h	1970-01-01 01:00:00.000000000 +0100
+++ open-vm-tools-2009.12.16-217847/modules/linux/vmxnet3/vmxnet3_version.h	2009-12-17 22:26:31.000000000 +0100
@@ -0,0 +1,35 @@
+/*********************************************************
+ * Copyright (C) 2007 VMware, Inc. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation version 2 and no later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ *
+ *********************************************************/
+
+/*
+ * vmxnet3_version.h --
+ *
+ * Version definitions for the Linux vmxnet3 driver.
+ */
+
+#ifndef _VMXNET3_VERSION_H_
+#define _VMXNET3_VERSION_H_
+
+#define VMXNET3_DRIVER_VERSION          1.0.5.0
+#define VMXNET3_DRIVER_VERSION_COMMAS   1,0,5,0
+#define VMXNET3_DRIVER_VERSION_STRING   "1.0.5.0"
+
+/* a 32-bit int, each byte encode a verion number in VMXNET3_DRIVER_VERSION */
+#define VMXNET3_DRIVER_VERSION_NUM      0x01000500
+
+#endif /* _VMXNET3_VERSION_H_ */



More information about the rpmfusion-commits mailing list