1 |
vadimk 12/02/04 16:34:59 |
2 |
|
3 |
Added: fragsize.patch setnlink.patch moduleparam.patch |
4 |
Log: |
5 |
patches for kernel ge 3.2.0 |
6 |
|
7 |
(Portage version: 2.1.10.44/cvs/Linux x86_64) |
8 |
|
9 |
Revision Changes Path |
10 |
1.1 app-emulation/open-vm-tools-kmod/files/fragsize.patch |
11 |
|
12 |
file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/app-emulation/open-vm-tools-kmod/files/fragsize.patch?rev=1.1&view=markup |
13 |
plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/app-emulation/open-vm-tools-kmod/files/fragsize.patch?rev=1.1&content-type=text/plain |
14 |
|
15 |
Index: fragsize.patch |
16 |
=================================================================== |
17 |
diff --git a/modules/linux/vmxnet/vmxnet.c b/modules/linux/vmxnet/vmxnet.c |
18 |
index a6f5740..3c75bb2 100644 |
19 |
--- a/modules/linux/vmxnet/vmxnet.c |
20 |
+++ b/modules/linux/vmxnet/vmxnet.c |
21 |
@@ -989,7 +989,7 @@ vmxnet_probe_device(struct pci_dev *pdev, // IN: vmxnet PCI device |
22 |
.ndo_start_xmit = &vmxnet_start_tx, |
23 |
.ndo_stop = &vmxnet_close, |
24 |
.ndo_get_stats = &vmxnet_get_stats, |
25 |
- .ndo_set_multicast_list = &vmxnet_set_multicast_list, |
26 |
+ .ndo_set_rx_mode = &vmxnet_set_multicast_list, |
27 |
.ndo_change_mtu = &vmxnet_change_mtu, |
28 |
# ifdef VMW_HAVE_POLL_CONTROLLER |
29 |
.ndo_poll_controller = vmxnet_netpoll, |
30 |
@@ -2033,21 +2033,23 @@ vmxnet_map_pkt(struct sk_buff *skb, |
31 |
offset -= skb_headlen(skb); |
32 |
|
33 |
for ( ; nextFrag < skb_shinfo(skb)->nr_frags; nextFrag++){ |
34 |
+ int fragSize; |
35 |
frag = &skb_shinfo(skb)->frags[nextFrag]; |
36 |
+ fragSize = skb_frag_size(frag); |
37 |
|
38 |
// skip those frags that are completely copied |
39 |
- if (offset >= frag->size){ |
40 |
- offset -= frag->size; |
41 |
+ if (offset >= fragSize){ |
42 |
+ offset -= fragSize; |
43 |
} else { |
44 |
// map the part of the frag that is not copied |
45 |
dma = pci_map_page(lp->pdev, |
46 |
- frag->page, |
47 |
+ frag->page.p, |
48 |
frag->page_offset + offset, |
49 |
- frag->size - offset, |
50 |
+ fragSize - offset, |
51 |
PCI_DMA_TODEVICE); |
52 |
- VMXNET_FILL_SG(xre->sg.sg[nextSg], dma, frag->size - offset); |
53 |
+ VMXNET_FILL_SG(xre->sg.sg[nextSg], dma, fragSize - offset); |
54 |
VMXNET_LOG("vmxnet_map_tx: txRing[%u].sg[%d] -> frag[%d]+%u (%uB)\n", |
55 |
- dd->txDriverNext, nextSg, nextFrag, offset, frag->size - offset); |
56 |
+ dd->txDriverNext, nextSg, nextFrag, offset, fragSize - offset); |
57 |
nextSg++; |
58 |
nextFrag++; |
59 |
|
60 |
@@ -2058,11 +2060,14 @@ vmxnet_map_pkt(struct sk_buff *skb, |
61 |
|
62 |
// map the remaining frags, we might need to use additional tx entries |
63 |
for ( ; nextFrag < skb_shinfo(skb)->nr_frags; nextFrag++) { |
64 |
+ int fragSize; |
65 |
frag = &skb_shinfo(skb)->frags[nextFrag]; |
66 |
+ fragSize = skb_frag_size(frag); |
67 |
+ |
68 |
dma = pci_map_page(lp->pdev, |
69 |
- frag->page, |
70 |
+ frag->page.p, |
71 |
frag->page_offset, |
72 |
- frag->size, |
73 |
+ fragSize, |
74 |
PCI_DMA_TODEVICE); |
75 |
|
76 |
if (nextSg == VMXNET2_SG_DEFAULT_LENGTH) { |
77 |
@@ -2091,9 +2096,9 @@ vmxnet_map_pkt(struct sk_buff *skb, |
78 |
|
79 |
nextSg = 0; |
80 |
} |
81 |
- VMXNET_FILL_SG(xre->sg.sg[nextSg], dma, frag->size); |
82 |
+ VMXNET_FILL_SG(xre->sg.sg[nextSg], dma, fragSize); |
83 |
VMXNET_LOG("vmxnet_map_tx: txRing[%u].sg[%d] -> frag[%d] (%uB)\n", |
84 |
- dd->txDriverNext, nextSg, nextFrag, frag->size); |
85 |
+ dd->txDriverNext, nextSg, nextFrag, fragSize); |
86 |
nextSg++; |
87 |
} |
88 |
|
89 |
@@ -2548,7 +2553,7 @@ vmxnet_rx_frags(Vmxnet_Private *lp, struct sk_buff *skb) |
90 |
if (UNLIKELY(newPage == NULL)) { |
91 |
skb_shinfo(skb)->nr_frags = numFrags; |
92 |
skb->len += skb->data_len; |
93 |
- skb->truesize += skb->data_len; |
94 |
+ skb->truesize += PAGE_SIZE; |
95 |
|
96 |
compat_dev_kfree_skb(skb, FREE_WRITE); |
97 |
|
98 |
@@ -2558,10 +2563,12 @@ vmxnet_rx_frags(Vmxnet_Private *lp, struct sk_buff *skb) |
99 |
} |
100 |
|
101 |
pci_unmap_page(pdev, rre2->paddr, PAGE_SIZE, PCI_DMA_FROMDEVICE); |
102 |
- skb_shinfo(skb)->frags[numFrags].page = lp->rxPages[dd->rxDriverNext2]; |
103 |
+ __skb_frag_set_page(&skb_shinfo(skb)->frags[numFrags], |
104 |
+ lp->rxPages[dd->rxDriverNext2]); |
105 |
skb_shinfo(skb)->frags[numFrags].page_offset = 0; |
106 |
skb_shinfo(skb)->frags[numFrags].size = rre2->actualLength; |
107 |
skb->data_len += rre2->actualLength; |
108 |
+ skb->truesize += PAGE_SIZE; |
109 |
numFrags++; |
110 |
|
111 |
/* refill the buffer */ |
112 |
@@ -2579,7 +2586,7 @@ vmxnet_rx_frags(Vmxnet_Private *lp, struct sk_buff *skb) |
113 |
VMXNET_ASSERT(numFrags > 0); |
114 |
skb_shinfo(skb)->nr_frags = numFrags; |
115 |
skb->len += skb->data_len; |
116 |
- skb->truesize += skb->data_len; |
117 |
+ skb->truesize += PAGE_SIZE; |
118 |
VMXNET_LOG("vmxnet_rx: %dB from rxRing[%d](%dB)+rxRing2[%d, %d)(%dB)\n", |
119 |
skb->len, dd->rxDriverNext, skb_headlen(skb), |
120 |
firstFrag, dd->rxDriverNext2, skb->data_len); |
121 |
|
122 |
|
123 |
|
124 |
1.1 app-emulation/open-vm-tools-kmod/files/setnlink.patch |
125 |
|
126 |
file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/app-emulation/open-vm-tools-kmod/files/setnlink.patch?rev=1.1&view=markup |
127 |
plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/app-emulation/open-vm-tools-kmod/files/setnlink.patch?rev=1.1&content-type=text/plain |
128 |
|
129 |
Index: setnlink.patch |
130 |
=================================================================== |
131 |
diff --git a/modules/linux/vmhgfs/fsutil.c b/modules/linux/vmhgfs/fsutil.c |
132 |
index 0c5102b..a978005 100644 |
133 |
--- a/modules/linux/vmhgfs/fsutil.c |
134 |
+++ b/modules/linux/vmhgfs/fsutil.c |
135 |
@@ -62,6 +62,31 @@ static int HgfsPackGetattrRequest(HgfsReq *req, |
136 |
* Private function implementations. |
137 |
*/ |
138 |
|
139 |
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 2, 0) |
140 |
+/* |
141 |
+ *---------------------------------------------------------------------------- |
142 |
+ * |
143 |
+ * set_nlink -- |
144 |
+ * |
145 |
+ * Set an inode's link count. |
146 |
+ * |
147 |
+ * Results: |
148 |
+ * None |
149 |
+ * |
150 |
+ * Side effects: |
151 |
+ * None |
152 |
+ * |
153 |
+ *---------------------------------------------------------------------------- |
154 |
+ */ |
155 |
+ |
156 |
+static inline void |
157 |
+set_nlink(struct inode *inode, unsigned int nlink) |
158 |
+{ |
159 |
+ inode->i_nlink = nlink; |
160 |
+} |
161 |
+#endif |
162 |
+ |
163 |
+ |
164 |
/* |
165 |
*---------------------------------------------------------------------- |
166 |
* |
167 |
@@ -607,7 +632,7 @@ HgfsChangeFileAttributes(struct inode *inode, // IN/OUT: Inode |
168 |
* account for '.' and ".."), and find printed a hard link error. So until |
169 |
* we have getattr support for nlink, everyone gets 1. |
170 |
*/ |
171 |
- inode->i_nlink = 1; |
172 |
+ set_nlink(inode, 1); |
173 |
|
174 |
/* |
175 |
* Use the stored uid and gid if we were given them at mount-time, or if |
176 |
|
177 |
|
178 |
|
179 |
1.1 app-emulation/open-vm-tools-kmod/files/moduleparam.patch |
180 |
|
181 |
file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/app-emulation/open-vm-tools-kmod/files/moduleparam.patch?rev=1.1&view=markup |
182 |
plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/app-emulation/open-vm-tools-kmod/files/moduleparam.patch?rev=1.1&content-type=text/plain |
183 |
|
184 |
Index: moduleparam.patch |
185 |
=================================================================== |
186 |
diff --git a/modules/linux/vmhgfs/tcp.c b/modules/linux/vmhgfs/tcp.c |
187 |
index c7070a6..31a40df 100644 |
188 |
--- a/modules/linux/vmhgfs/tcp.c |
189 |
+++ b/modules/linux/vmhgfs/tcp.c |
190 |
@@ -32,6 +32,7 @@ |
191 |
#include <linux/in.h> |
192 |
#include <linux/net.h> |
193 |
#include <linux/inet.h> |
194 |
+#include <linux/moduleparam.h> |
195 |
#include <linux/errno.h> |
196 |
#include <linux/kthread.h> |