diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-04 14:47:58 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-04 14:47:58 -0400 |
commit | 6ba74014c1ab0e37af7de6f64b4eccbbae3cb9e7 (patch) | |
tree | 8f3892fc44f1e403675a6d7e88fda5c70e56ee4c /Documentation | |
parent | 5abd9ccced7a726c817dd6b5b96bc933859138d1 (diff) | |
parent | 3ff1c25927e3af61c6bf0e4ed959504058ae4565 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1443 commits)
phy/marvell: add 88ec048 support
igb: Program MDICNFG register prior to PHY init
e1000e: correct MAC-PHY interconnect register offset for 82579
hso: Add new product ID
can: Add driver for esd CAN-USB/2 device
l2tp: fix export of header file for userspace
can-raw: Fix skb_orphan_try handling
Revert "net: remove zap_completion_queue"
net: cleanup inclusion
phy/marvell: add 88e1121 interface mode support
u32: negative offset fix
net: Fix a typo from "dev" to "ndev"
igb: Use irq_synchronize per vector when using MSI-X
ixgbevf: fix null pointer dereference due to filter being set for VLAN 0
e1000e: Fix irq_synchronize in MSI-X case
e1000e: register pm_qos request on hardware activation
ip_fragment: fix subtracting PPPOE_SES_HLEN from mtu twice
net: Add getsockopt support for TCP thin-streams
cxgb4: update driver version
cxgb4: add new PCI IDs
...
Manually fix up conflicts in:
- drivers/net/e1000e/netdev.c: due to pm_qos registration
infrastructure changes
- drivers/net/phy/marvell.c: conflict between adding 88ec048 support
and cleaning up the IDs
- drivers/net/wireless/ipw2x00/ipw2100.c: trivial ipw2100_pm_qos_req
conflict (registration change vs marking it static)
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/feature-removal-schedule.txt | 9 | ||||
-rw-r--r-- | Documentation/filesystems/nfs/nfsroot.txt | 2 | ||||
-rw-r--r-- | Documentation/isdn/INTERFACE.CAPI | 8 | ||||
-rw-r--r-- | Documentation/isdn/README.gigaset | 117 | ||||
-rw-r--r-- | Documentation/kernel-parameters.txt | 3 | ||||
-rw-r--r-- | Documentation/networking/README.ipw2200 | 2 | ||||
-rw-r--r-- | Documentation/networking/bonding.txt | 84 | ||||
-rw-r--r-- | Documentation/networking/caif/spi_porting.txt | 208 | ||||
-rw-r--r-- | Documentation/networking/ip-sysctl.txt | 2 | ||||
-rw-r--r-- | Documentation/networking/packet_mmap.txt | 26 | ||||
-rw-r--r-- | Documentation/networking/pktgen.txt | 5 |
11 files changed, 401 insertions, 65 deletions
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt index 9699157c25c..2f1e5b621d0 100644 --- a/Documentation/feature-removal-schedule.txt +++ b/Documentation/feature-removal-schedule.txt | |||
@@ -303,15 +303,6 @@ Who: Johannes Berg <johannes@sipsolutions.net> | |||
303 | 303 | ||
304 | --------------------------- | 304 | --------------------------- |
305 | 305 | ||
306 | What: CONFIG_NF_CT_ACCT | ||
307 | When: 2.6.29 | ||
308 | Why: Accounting can now be enabled/disabled without kernel recompilation. | ||
309 | Currently used only to set a default value for a feature that is also | ||
310 | controlled by a kernel/module/sysfs/sysctl parameter. | ||
311 | Who: Krzysztof Piotr Oledzki <ole@ans.pl> | ||
312 | |||
313 | --------------------------- | ||
314 | |||
315 | What: sysfs ui for changing p4-clockmod parameters | 306 | What: sysfs ui for changing p4-clockmod parameters |
316 | When: September 2009 | 307 | When: September 2009 |
317 | Why: See commits 129f8ae9b1b5be94517da76009ea956e89104ce8 and | 308 | Why: See commits 129f8ae9b1b5be94517da76009ea956e89104ce8 and |
diff --git a/Documentation/filesystems/nfs/nfsroot.txt b/Documentation/filesystems/nfs/nfsroot.txt index 3ba0b945aaf..f2430a7974e 100644 --- a/Documentation/filesystems/nfs/nfsroot.txt +++ b/Documentation/filesystems/nfs/nfsroot.txt | |||
@@ -124,6 +124,8 @@ ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf> | |||
124 | 124 | ||
125 | <hostname> Name of the client. May be supplied by autoconfiguration, | 125 | <hostname> Name of the client. May be supplied by autoconfiguration, |
126 | but its absence will not trigger autoconfiguration. | 126 | but its absence will not trigger autoconfiguration. |
127 | If specified and DHCP is used, the user provided hostname will | ||
128 | be carried in the DHCP request to hopefully update DNS record. | ||
127 | 129 | ||
128 | Default: Client IP address is used in ASCII notation. | 130 | Default: Client IP address is used in ASCII notation. |
129 | 131 | ||
diff --git a/Documentation/isdn/INTERFACE.CAPI b/Documentation/isdn/INTERFACE.CAPI index f172091fb7c..309eb5ed942 100644 --- a/Documentation/isdn/INTERFACE.CAPI +++ b/Documentation/isdn/INTERFACE.CAPI | |||
@@ -113,12 +113,16 @@ char *driver_name | |||
113 | int (*load_firmware)(struct capi_ctr *ctrlr, capiloaddata *ldata) | 113 | int (*load_firmware)(struct capi_ctr *ctrlr, capiloaddata *ldata) |
114 | (optional) pointer to a callback function for sending firmware and | 114 | (optional) pointer to a callback function for sending firmware and |
115 | configuration data to the device | 115 | configuration data to the device |
116 | The function may return before the operation has completed. | ||
117 | Completion must be signalled by a call to capi_ctr_ready(). | ||
116 | Return value: 0 on success, error code on error | 118 | Return value: 0 on success, error code on error |
117 | Called in process context. | 119 | Called in process context. |
118 | 120 | ||
119 | void (*reset_ctr)(struct capi_ctr *ctrlr) | 121 | void (*reset_ctr)(struct capi_ctr *ctrlr) |
120 | (optional) pointer to a callback function for performing a reset on | 122 | (optional) pointer to a callback function for stopping the device, |
121 | the device, releasing all registered applications | 123 | releasing all registered applications |
124 | The function may return before the operation has completed. | ||
125 | Completion must be signalled by a call to capi_ctr_down(). | ||
122 | Called in process context. | 126 | Called in process context. |
123 | 127 | ||
124 | void (*register_appl)(struct capi_ctr *ctrlr, u16 applid, | 128 | void (*register_appl)(struct capi_ctr *ctrlr, u16 applid, |
diff --git a/Documentation/isdn/README.gigaset b/Documentation/isdn/README.gigaset index e472df84232..ef3343eaa00 100644 --- a/Documentation/isdn/README.gigaset +++ b/Documentation/isdn/README.gigaset | |||
@@ -47,9 +47,9 @@ GigaSet 307x Device Driver | |||
47 | 47 | ||
48 | 1.2. Software | 48 | 1.2. Software |
49 | -------- | 49 | -------- |
50 | The driver works with ISDN4linux and so can be used with any software | 50 | The driver works with the Kernel CAPI subsystem as well as the old |
51 | which is able to use ISDN4linux for ISDN connections (voice or data). | 51 | ISDN4Linux subsystem, so it can be used with any software which is able |
52 | Experimental Kernel CAPI support is available as a compilation option. | 52 | to use CAPI 2.0 or ISDN4Linux for ISDN connections (voice or data). |
53 | 53 | ||
54 | There are some user space tools available at | 54 | There are some user space tools available at |
55 | http://sourceforge.net/projects/gigaset307x/ | 55 | http://sourceforge.net/projects/gigaset307x/ |
@@ -152,61 +152,42 @@ GigaSet 307x Device Driver | |||
152 | - GIGVER_FWBASE: retrieve the firmware version of the base | 152 | - GIGVER_FWBASE: retrieve the firmware version of the base |
153 | Upon return, version[] is filled with the requested version information. | 153 | Upon return, version[] is filled with the requested version information. |
154 | 154 | ||
155 | 2.3. ISDN4linux | 155 | 2.3. CAPI |
156 | ---------- | ||
157 | This is the "normal" mode of operation. After loading the module you can | ||
158 | set up the ISDN system just as you'd do with any ISDN card supported by | ||
159 | the ISDN4Linux subsystem. Most distributions provide some configuration | ||
160 | utility. If not, you can use some HOWTOs like | ||
161 | http://www.linuxhaven.de/dlhp/HOWTO/DE-ISDN-HOWTO-5.html | ||
162 | If this doesn't work, because you have some device like SX100 where | ||
163 | debug output (see section 3.2.) shows something like this when dialing | ||
164 | CMD Received: ERROR | ||
165 | Available Params: 0 | ||
166 | Connection State: 0, Response: -1 | ||
167 | gigaset_process_response: resp_code -1 in ConState 0 ! | ||
168 | Timeout occurred | ||
169 | you probably need to use unimodem mode. (see section 2.5.) | ||
170 | |||
171 | 2.4. CAPI | ||
172 | ---- | 156 | ---- |
173 | If the driver is compiled with CAPI support (kernel configuration option | 157 | If the driver is compiled with CAPI support (kernel configuration option |
174 | GIGASET_CAPI, experimental) it can also be used with CAPI 2.0 kernel and | 158 | GIGASET_CAPI) the devices will show up as CAPI controllers as soon as the |
175 | user space applications. For user space access, the module capi.ko must | 159 | corresponding driver module is loaded, and can then be used with CAPI 2.0 |
176 | be loaded. The capiinit command (included in the capi4k-utils package) | 160 | kernel and user space applications. For user space access, the module |
177 | does this for you. | 161 | capi.ko must be loaded. |
178 | 162 | ||
179 | The CAPI variant of the driver supports legacy ISDN4Linux applications | 163 | Legacy ISDN4Linux applications are supported via the capidrv |
180 | via the capidrv compatibility driver. The kernel module capidrv.ko must | 164 | compatibility driver. The kernel module capidrv.ko must be loaded |
181 | be loaded explicitly with the command | 165 | explicitly with the command |
182 | modprobe capidrv | 166 | modprobe capidrv |
183 | if needed, and cannot be unloaded again without unloading the driver | 167 | if needed, and cannot be unloaded again without unloading the driver |
184 | first. (These are limitations of capidrv.) | 168 | first. (These are limitations of capidrv.) |
185 | 169 | ||
186 | The note about unimodem mode in the preceding section applies here, too. | 170 | Most distributions handle loading and unloading of the various CAPI |
187 | 171 | modules automatically via the command capiinit(1) from the capi4k-utils | |
188 | 2.5. Unimodem mode | 172 | package or a similar mechanism. Note that capiinit(1) cannot unload the |
189 | ------------- | 173 | Gigaset drivers because it doesn't support more than one module per |
190 | This is needed for some devices [e.g. SX100] as they have problems with | 174 | driver. |
191 | the "normal" commands. | ||
192 | 175 | ||
193 | If you have installed the command line tool gigacontr, you can enter | 176 | 2.4. ISDN4Linux |
194 | unimodem mode using | 177 | ---------- |
195 | gigacontr --mode unimodem | 178 | If the driver is compiled without CAPI support (native ISDN4Linux |
196 | You can switch back using | 179 | variant), it registers the device with the legacy ISDN4Linux subsystem |
197 | gigacontr --mode isdn | 180 | after loading the module. It can then be used with ISDN4Linux |
181 | applications only. Most distributions provide some configuration utility | ||
182 | for setting up that subsystem. Otherwise you can use some HOWTOs like | ||
183 | http://www.linuxhaven.de/dlhp/HOWTO/DE-ISDN-HOWTO-5.html | ||
198 | 184 | ||
199 | You can also put the driver directly into Unimodem mode when it's loaded, | ||
200 | by passing the module parameter startmode=0 to the hardware specific | ||
201 | module, e.g. | ||
202 | modprobe usb_gigaset startmode=0 | ||
203 | or by adding a line like | ||
204 | options usb_gigaset startmode=0 | ||
205 | to an appropriate module configuration file, like /etc/modprobe.d/gigaset | ||
206 | or /etc/modprobe.conf.local. | ||
207 | 185 | ||
186 | 2.5. Unimodem mode | ||
187 | ------------- | ||
208 | In this mode the device works like a modem connected to a serial port | 188 | In this mode the device works like a modem connected to a serial port |
209 | (the /dev/ttyGU0, ... mentioned above) which understands the commands | 189 | (the /dev/ttyGU0, ... mentioned above) which understands the commands |
190 | |||
210 | ATZ init, reset | 191 | ATZ init, reset |
211 | => OK or ERROR | 192 | => OK or ERROR |
212 | ATD | 193 | ATD |
@@ -234,6 +215,31 @@ GigaSet 307x Device Driver | |||
234 | to an appropriate module configuration file, like /etc/modprobe.d/gigaset | 215 | to an appropriate module configuration file, like /etc/modprobe.d/gigaset |
235 | or /etc/modprobe.conf.local. | 216 | or /etc/modprobe.conf.local. |
236 | 217 | ||
218 | Unimodem mode is needed for making some devices [e.g. SX100] work which | ||
219 | do not support the regular Gigaset command set. If debug output (see | ||
220 | section 3.2.) shows something like this when dialing: | ||
221 | CMD Received: ERROR | ||
222 | Available Params: 0 | ||
223 | Connection State: 0, Response: -1 | ||
224 | gigaset_process_response: resp_code -1 in ConState 0 ! | ||
225 | Timeout occurred | ||
226 | then switching to unimodem mode may help. | ||
227 | |||
228 | If you have installed the command line tool gigacontr, you can enter | ||
229 | unimodem mode using | ||
230 | gigacontr --mode unimodem | ||
231 | You can switch back using | ||
232 | gigacontr --mode isdn | ||
233 | |||
234 | You can also put the driver directly into Unimodem mode when it's loaded, | ||
235 | by passing the module parameter startmode=0 to the hardware specific | ||
236 | module, e.g. | ||
237 | modprobe usb_gigaset startmode=0 | ||
238 | or by adding a line like | ||
239 | options usb_gigaset startmode=0 | ||
240 | to an appropriate module configuration file, like /etc/modprobe.d/gigaset | ||
241 | or /etc/modprobe.conf.local. | ||
242 | |||
237 | 2.6. Call-ID (CID) mode | 243 | 2.6. Call-ID (CID) mode |
238 | ------------------ | 244 | ------------------ |
239 | Call-IDs are numbers used to tag commands to, and responses from, the | 245 | Call-IDs are numbers used to tag commands to, and responses from, the |
@@ -263,7 +269,22 @@ GigaSet 307x Device Driver | |||
263 | change its CID mode while the driver is loaded, eg. | 269 | change its CID mode while the driver is loaded, eg. |
264 | echo 0 > /sys/class/tty/ttyGU0/cidmode | 270 | echo 0 > /sys/class/tty/ttyGU0/cidmode |
265 | 271 | ||
266 | 2.7. Unregistered Wireless Devices (M101/M105) | 272 | 2.7. Dialing Numbers |
273 | --------------- | ||
274 | The called party number provided by an application for dialing out must | ||
275 | be a public network number according to the local dialing plan, without | ||
276 | any dial prefix for getting an outside line. | ||
277 | |||
278 | Internal calls can be made by providing an internal extension number | ||
279 | prefixed with "**" (two asterisks) as the called party number. So to dial | ||
280 | eg. the first registered DECT handset, give "**11" as the called party | ||
281 | number. Dialing "***" (three asterisks) calls all extensions | ||
282 | simultaneously (global call). | ||
283 | |||
284 | This holds for both CAPI 2.0 and ISDN4Linux applications. Unimodem mode | ||
285 | does not support internal calls. | ||
286 | |||
287 | 2.8. Unregistered Wireless Devices (M101/M105) | ||
267 | ----------------------------------------- | 288 | ----------------------------------------- |
268 | The main purpose of the ser_gigaset and usb_gigaset drivers is to allow | 289 | The main purpose of the ser_gigaset and usb_gigaset drivers is to allow |
269 | the M101 and M105 wireless devices to be used as ISDN devices for ISDN | 290 | the M101 and M105 wireless devices to be used as ISDN devices for ISDN |
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index b61f89fa01c..d9239d5f3ad 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -1598,8 +1598,7 @@ and is between 256 and 4096 characters. It is defined in the file | |||
1598 | [NETFILTER] Enable connection tracking flow accounting | 1598 | [NETFILTER] Enable connection tracking flow accounting |
1599 | 0 to disable accounting | 1599 | 0 to disable accounting |
1600 | 1 to enable accounting | 1600 | 1 to enable accounting |
1601 | Default value depends on CONFIG_NF_CT_ACCT that is | 1601 | Default value is 0. |
1602 | going to be removed in 2.6.29. | ||
1603 | 1602 | ||
1604 | nfsaddrs= [NFS] | 1603 | nfsaddrs= [NFS] |
1605 | See Documentation/filesystems/nfs/nfsroot.txt. | 1604 | See Documentation/filesystems/nfs/nfsroot.txt. |
diff --git a/Documentation/networking/README.ipw2200 b/Documentation/networking/README.ipw2200 index 80c728522c4..e4d3267071e 100644 --- a/Documentation/networking/README.ipw2200 +++ b/Documentation/networking/README.ipw2200 | |||
@@ -171,7 +171,7 @@ Where the supported parameter are: | |||
171 | 171 | ||
172 | led | 172 | led |
173 | Can be used to turn on experimental LED code. | 173 | Can be used to turn on experimental LED code. |
174 | 0 = Off, 1 = On. Default is 0. | 174 | 0 = Off, 1 = On. Default is 1. |
175 | 175 | ||
176 | mode | 176 | mode |
177 | Can be used to set the default mode of the adapter. | 177 | Can be used to set the default mode of the adapter. |
diff --git a/Documentation/networking/bonding.txt b/Documentation/networking/bonding.txt index 61f516b135b..d0914781830 100644 --- a/Documentation/networking/bonding.txt +++ b/Documentation/networking/bonding.txt | |||
@@ -49,6 +49,7 @@ Table of Contents | |||
49 | 3.3 Configuring Bonding Manually with Ifenslave | 49 | 3.3 Configuring Bonding Manually with Ifenslave |
50 | 3.3.1 Configuring Multiple Bonds Manually | 50 | 3.3.1 Configuring Multiple Bonds Manually |
51 | 3.4 Configuring Bonding Manually via Sysfs | 51 | 3.4 Configuring Bonding Manually via Sysfs |
52 | 3.5 Overriding Configuration for Special Cases | ||
52 | 53 | ||
53 | 4. Querying Bonding Configuration | 54 | 4. Querying Bonding Configuration |
54 | 4.1 Bonding Configuration | 55 | 4.1 Bonding Configuration |
@@ -1318,8 +1319,87 @@ echo 2000 > /sys/class/net/bond1/bonding/arp_interval | |||
1318 | echo +eth2 > /sys/class/net/bond1/bonding/slaves | 1319 | echo +eth2 > /sys/class/net/bond1/bonding/slaves |
1319 | echo +eth3 > /sys/class/net/bond1/bonding/slaves | 1320 | echo +eth3 > /sys/class/net/bond1/bonding/slaves |
1320 | 1321 | ||
1321 | 1322 | 3.5 Overriding Configuration for Special Cases | |
1322 | 4. Querying Bonding Configuration | 1323 | ---------------------------------------------- |
1324 | When using the bonding driver, the physical port which transmits a frame is | ||
1325 | typically selected by the bonding driver, and is not relevant to the user or | ||
1326 | system administrator. The output port is simply selected using the policies of | ||
1327 | the selected bonding mode. On occasion however, it is helpful to direct certain | ||
1328 | classes of traffic to certain physical interfaces on output to implement | ||
1329 | slightly more complex policies. For example, to reach a web server over a | ||
1330 | bonded interface in which eth0 connects to a private network, while eth1 | ||
1331 | connects via a public network, it may be desirous to bias the bond to send said | ||
1332 | traffic over eth0 first, using eth1 only as a fall back, while all other traffic | ||
1333 | can safely be sent over either interface. Such configurations may be achieved | ||
1334 | using the traffic control utilities inherent in linux. | ||
1335 | |||
1336 | By default the bonding driver is multiqueue aware and 16 queues are created | ||
1337 | when the driver initializes (see Documentation/networking/multiqueue.txt | ||
1338 | for details). If more or less queues are desired the module parameter | ||
1339 | tx_queues can be used to change this value. There is no sysfs parameter | ||
1340 | available as the allocation is done at module init time. | ||
1341 | |||
1342 | The output of the file /proc/net/bonding/bondX has changed so the output Queue | ||
1343 | ID is now printed for each slave: | ||
1344 | |||
1345 | Bonding Mode: fault-tolerance (active-backup) | ||
1346 | Primary Slave: None | ||
1347 | Currently Active Slave: eth0 | ||
1348 | MII Status: up | ||
1349 | MII Polling Interval (ms): 0 | ||
1350 | Up Delay (ms): 0 | ||
1351 | Down Delay (ms): 0 | ||
1352 | |||
1353 | Slave Interface: eth0 | ||
1354 | MII Status: up | ||
1355 | Link Failure Count: 0 | ||
1356 | Permanent HW addr: 00:1a:a0:12:8f:cb | ||
1357 | Slave queue ID: 0 | ||
1358 | |||
1359 | Slave Interface: eth1 | ||
1360 | MII Status: up | ||
1361 | Link Failure Count: 0 | ||
1362 | Permanent HW addr: 00:1a:a0:12:8f:cc | ||
1363 | Slave queue ID: 2 | ||
1364 | |||
1365 | The queue_id for a slave can be set using the command: | ||
1366 | |||
1367 | # echo "eth1:2" > /sys/class/net/bond0/bonding/queue_id | ||
1368 | |||
1369 | Any interface that needs a queue_id set should set it with multiple calls | ||
1370 | like the one above until proper priorities are set for all interfaces. On | ||
1371 | distributions that allow configuration via initscripts, multiple 'queue_id' | ||
1372 | arguments can be added to BONDING_OPTS to set all needed slave queues. | ||
1373 | |||
1374 | These queue id's can be used in conjunction with the tc utility to configure | ||
1375 | a multiqueue qdisc and filters to bias certain traffic to transmit on certain | ||
1376 | slave devices. For instance, say we wanted, in the above configuration to | ||
1377 | force all traffic bound to 192.168.1.100 to use eth1 in the bond as its output | ||
1378 | device. The following commands would accomplish this: | ||
1379 | |||
1380 | # tc qdisc add dev bond0 handle 1 root multiq | ||
1381 | |||
1382 | # tc filter add dev bond0 protocol ip parent 1: prio 1 u32 match ip dst \ | ||
1383 | 192.168.1.100 action skbedit queue_mapping 2 | ||
1384 | |||
1385 | These commands tell the kernel to attach a multiqueue queue discipline to the | ||
1386 | bond0 interface and filter traffic enqueued to it, such that packets with a dst | ||
1387 | ip of 192.168.1.100 have their output queue mapping value overwritten to 2. | ||
1388 | This value is then passed into the driver, causing the normal output path | ||
1389 | selection policy to be overridden, selecting instead qid 2, which maps to eth1. | ||
1390 | |||
1391 | Note that qid values begin at 1. Qid 0 is reserved to initiate to the driver | ||
1392 | that normal output policy selection should take place. One benefit to simply | ||
1393 | leaving the qid for a slave to 0 is the multiqueue awareness in the bonding | ||
1394 | driver that is now present. This awareness allows tc filters to be placed on | ||
1395 | slave devices as well as bond devices and the bonding driver will simply act as | ||
1396 | a pass-through for selecting output queues on the slave device rather than | ||
1397 | output port selection. | ||
1398 | |||
1399 | This feature first appeared in bonding driver version 3.7.0 and support for | ||
1400 | output slave selection was limited to round-robin and active-backup modes. | ||
1401 | |||
1402 | 4 Querying Bonding Configuration | ||
1323 | ================================= | 1403 | ================================= |
1324 | 1404 | ||
1325 | 4.1 Bonding Configuration | 1405 | 4.1 Bonding Configuration |
diff --git a/Documentation/networking/caif/spi_porting.txt b/Documentation/networking/caif/spi_porting.txt new file mode 100644 index 00000000000..61d7c924745 --- /dev/null +++ b/Documentation/networking/caif/spi_porting.txt | |||
@@ -0,0 +1,208 @@ | |||
1 | - CAIF SPI porting - | ||
2 | |||
3 | - CAIF SPI basics: | ||
4 | |||
5 | Running CAIF over SPI needs some extra setup, owing to the nature of SPI. | ||
6 | Two extra GPIOs have been added in order to negotiate the transfers | ||
7 | between the master and the slave. The minimum requirement for running | ||
8 | CAIF over SPI is a SPI slave chip and two GPIOs (more details below). | ||
9 | Please note that running as a slave implies that you need to keep up | ||
10 | with the master clock. An overrun or underrun event is fatal. | ||
11 | |||
12 | - CAIF SPI framework: | ||
13 | |||
14 | To make porting as easy as possible, the CAIF SPI has been divided in | ||
15 | two parts. The first part (called the interface part) deals with all | ||
16 | generic functionality such as length framing, SPI frame negotiation | ||
17 | and SPI frame delivery and transmission. The other part is the CAIF | ||
18 | SPI slave device part, which is the module that you have to write if | ||
19 | you want to run SPI CAIF on a new hardware. This part takes care of | ||
20 | the physical hardware, both with regard to SPI and to GPIOs. | ||
21 | |||
22 | - Implementing a CAIF SPI device: | ||
23 | |||
24 | - Functionality provided by the CAIF SPI slave device: | ||
25 | |||
26 | In order to implement a SPI device you will, as a minimum, | ||
27 | need to implement the following | ||
28 | functions: | ||
29 | |||
30 | int (*init_xfer) (struct cfspi_xfer * xfer, struct cfspi_dev *dev): | ||
31 | |||
32 | This function is called by the CAIF SPI interface to give | ||
33 | you a chance to set up your hardware to be ready to receive | ||
34 | a stream of data from the master. The xfer structure contains | ||
35 | both physical and logical adresses, as well as the total length | ||
36 | of the transfer in both directions.The dev parameter can be used | ||
37 | to map to different CAIF SPI slave devices. | ||
38 | |||
39 | void (*sig_xfer) (bool xfer, struct cfspi_dev *dev): | ||
40 | |||
41 | This function is called by the CAIF SPI interface when the output | ||
42 | (SPI_INT) GPIO needs to change state. The boolean value of the xfer | ||
43 | variable indicates whether the GPIO should be asserted (HIGH) or | ||
44 | deasserted (LOW). The dev parameter can be used to map to different CAIF | ||
45 | SPI slave devices. | ||
46 | |||
47 | - Functionality provided by the CAIF SPI interface: | ||
48 | |||
49 | void (*ss_cb) (bool assert, struct cfspi_ifc *ifc); | ||
50 | |||
51 | This function is called by the CAIF SPI slave device in order to | ||
52 | signal a change of state of the input GPIO (SS) to the interface. | ||
53 | Only active edges are mandatory to be reported. | ||
54 | This function can be called from IRQ context (recommended in order | ||
55 | not to introduce latency). The ifc parameter should be the pointer | ||
56 | returned from the platform probe function in the SPI device structure. | ||
57 | |||
58 | void (*xfer_done_cb) (struct cfspi_ifc *ifc); | ||
59 | |||
60 | This function is called by the CAIF SPI slave device in order to | ||
61 | report that a transfer is completed. This function should only be | ||
62 | called once both the transmission and the reception are completed. | ||
63 | This function can be called from IRQ context (recommended in order | ||
64 | not to introduce latency). The ifc parameter should be the pointer | ||
65 | returned from the platform probe function in the SPI device structure. | ||
66 | |||
67 | - Connecting the bits and pieces: | ||
68 | |||
69 | - Filling in the SPI slave device structure: | ||
70 | |||
71 | Connect the necessary callback functions. | ||
72 | Indicate clock speed (used to calculate toggle delays). | ||
73 | Chose a suitable name (helps debugging if you use several CAIF | ||
74 | SPI slave devices). | ||
75 | Assign your private data (can be used to map to your structure). | ||
76 | |||
77 | - Filling in the SPI slave platform device structure: | ||
78 | Add name of driver to connect to ("cfspi_sspi"). | ||
79 | Assign the SPI slave device structure as platform data. | ||
80 | |||
81 | - Padding: | ||
82 | |||
83 | In order to optimize throughput, a number of SPI padding options are provided. | ||
84 | Padding can be enabled independently for uplink and downlink transfers. | ||
85 | Padding can be enabled for the head, the tail and for the total frame size. | ||
86 | The padding needs to be correctly configured on both sides of the link. | ||
87 | The padding can be changed via module parameters in cfspi_sspi.c or via | ||
88 | the sysfs directory of the cfspi_sspi driver (before device registration). | ||
89 | |||
90 | - CAIF SPI device template: | ||
91 | |||
92 | /* | ||
93 | * Copyright (C) ST-Ericsson AB 2010 | ||
94 | * Author: Daniel Martensson / Daniel.Martensson@stericsson.com | ||
95 | * License terms: GNU General Public License (GPL), version 2. | ||
96 | * | ||
97 | */ | ||
98 | |||
99 | #include <linux/init.h> | ||
100 | #include <linux/module.h> | ||
101 | #include <linux/device.h> | ||
102 | #include <linux/wait.h> | ||
103 | #include <linux/interrupt.h> | ||
104 | #include <linux/dma-mapping.h> | ||
105 | #include <net/caif/caif_spi.h> | ||
106 | |||
107 | MODULE_LICENSE("GPL"); | ||
108 | |||
109 | struct sspi_struct { | ||
110 | struct cfspi_dev sdev; | ||
111 | struct cfspi_xfer *xfer; | ||
112 | }; | ||
113 | |||
114 | static struct sspi_struct slave; | ||
115 | static struct platform_device slave_device; | ||
116 | |||
117 | static irqreturn_t sspi_irq(int irq, void *arg) | ||
118 | { | ||
119 | /* You only need to trigger on an edge to the active state of the | ||
120 | * SS signal. Once a edge is detected, the ss_cb() function should be | ||
121 | * called with the parameter assert set to true. It is OK | ||
122 | * (and even advised) to call the ss_cb() function in IRQ context in | ||
123 | * order not to add any delay. */ | ||
124 | |||
125 | return IRQ_HANDLED; | ||
126 | } | ||
127 | |||
128 | static void sspi_complete(void *context) | ||
129 | { | ||
130 | /* Normally the DMA or the SPI framework will call you back | ||
131 | * in something similar to this. The only thing you need to | ||
132 | * do is to call the xfer_done_cb() function, providing the pointer | ||
133 | * to the CAIF SPI interface. It is OK to call this function | ||
134 | * from IRQ context. */ | ||
135 | } | ||
136 | |||
137 | static int sspi_init_xfer(struct cfspi_xfer *xfer, struct cfspi_dev *dev) | ||
138 | { | ||
139 | /* Store transfer info. For a normal implementation you should | ||
140 | * set up your DMA here and make sure that you are ready to | ||
141 | * receive the data from the master SPI. */ | ||
142 | |||
143 | struct sspi_struct *sspi = (struct sspi_struct *)dev->priv; | ||
144 | |||
145 | sspi->xfer = xfer; | ||
146 | |||
147 | return 0; | ||
148 | } | ||
149 | |||
150 | void sspi_sig_xfer(bool xfer, struct cfspi_dev *dev) | ||
151 | { | ||
152 | /* If xfer is true then you should assert the SPI_INT to indicate to | ||
153 | * the master that you are ready to recieve the data from the master | ||
154 | * SPI. If xfer is false then you should de-assert SPI_INT to indicate | ||
155 | * that the transfer is done. | ||
156 | */ | ||
157 | |||
158 | struct sspi_struct *sspi = (struct sspi_struct *)dev->priv; | ||
159 | } | ||
160 | |||
161 | static void sspi_release(struct device *dev) | ||
162 | { | ||
163 | /* | ||
164 | * Here you should release your SPI device resources. | ||
165 | */ | ||
166 | } | ||
167 | |||
168 | static int __init sspi_init(void) | ||
169 | { | ||
170 | /* Here you should initialize your SPI device by providing the | ||
171 | * necessary functions, clock speed, name and private data. Once | ||
172 | * done, you can register your device with the | ||
173 | * platform_device_register() function. This function will return | ||
174 | * with the CAIF SPI interface initialized. This is probably also | ||
175 | * the place where you should set up your GPIOs, interrupts and SPI | ||
176 | * resources. */ | ||
177 | |||
178 | int res = 0; | ||
179 | |||
180 | /* Initialize slave device. */ | ||
181 | slave.sdev.init_xfer = sspi_init_xfer; | ||
182 | slave.sdev.sig_xfer = sspi_sig_xfer; | ||
183 | slave.sdev.clk_mhz = 13; | ||
184 | slave.sdev.priv = &slave; | ||
185 | slave.sdev.name = "spi_sspi"; | ||
186 | slave_device.dev.release = sspi_release; | ||
187 | |||
188 | /* Initialize platform device. */ | ||
189 | slave_device.name = "cfspi_sspi"; | ||
190 | slave_device.dev.platform_data = &slave.sdev; | ||
191 | |||
192 | /* Register platform device. */ | ||
193 | res = platform_device_register(&slave_device); | ||
194 | if (res) { | ||
195 | printk(KERN_WARNING "sspi_init: failed to register dev.\n"); | ||
196 | return -ENODEV; | ||
197 | } | ||
198 | |||
199 | return res; | ||
200 | } | ||
201 | |||
202 | static void __exit sspi_exit(void) | ||
203 | { | ||
204 | platform_device_del(&slave_device); | ||
205 | } | ||
206 | |||
207 | module_init(sspi_init); | ||
208 | module_exit(sspi_exit); | ||
diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt index d0536b5a4e0..f350c69b2bb 100644 --- a/Documentation/networking/ip-sysctl.txt +++ b/Documentation/networking/ip-sysctl.txt | |||
@@ -903,7 +903,7 @@ arp_ignore - INTEGER | |||
903 | arp_notify - BOOLEAN | 903 | arp_notify - BOOLEAN |
904 | Define mode for notification of address and device changes. | 904 | Define mode for notification of address and device changes. |
905 | 0 - (default): do nothing | 905 | 0 - (default): do nothing |
906 | 1 - Generate gratuitous arp replies when device is brought up | 906 | 1 - Generate gratuitous arp requests when device is brought up |
907 | or hardware address changes. | 907 | or hardware address changes. |
908 | 908 | ||
909 | arp_accept - BOOLEAN | 909 | arp_accept - BOOLEAN |
diff --git a/Documentation/networking/packet_mmap.txt b/Documentation/networking/packet_mmap.txt index 98f71a5cef0..2546aa4dc23 100644 --- a/Documentation/networking/packet_mmap.txt +++ b/Documentation/networking/packet_mmap.txt | |||
@@ -493,6 +493,32 @@ The user can also use poll() to check if a buffer is available: | |||
493 | pfd.events = POLLOUT; | 493 | pfd.events = POLLOUT; |
494 | retval = poll(&pfd, 1, timeout); | 494 | retval = poll(&pfd, 1, timeout); |
495 | 495 | ||
496 | ------------------------------------------------------------------------------- | ||
497 | + PACKET_TIMESTAMP | ||
498 | ------------------------------------------------------------------------------- | ||
499 | |||
500 | The PACKET_TIMESTAMP setting determines the source of the timestamp in | ||
501 | the packet meta information. If your NIC is capable of timestamping | ||
502 | packets in hardware, you can request those hardware timestamps to used. | ||
503 | Note: you may need to enable the generation of hardware timestamps with | ||
504 | SIOCSHWTSTAMP. | ||
505 | |||
506 | PACKET_TIMESTAMP accepts the same integer bit field as | ||
507 | SO_TIMESTAMPING. However, only the SOF_TIMESTAMPING_SYS_HARDWARE | ||
508 | and SOF_TIMESTAMPING_RAW_HARDWARE values are recognized by | ||
509 | PACKET_TIMESTAMP. SOF_TIMESTAMPING_SYS_HARDWARE takes precedence over | ||
510 | SOF_TIMESTAMPING_RAW_HARDWARE if both bits are set. | ||
511 | |||
512 | int req = 0; | ||
513 | req |= SOF_TIMESTAMPING_SYS_HARDWARE; | ||
514 | setsockopt(fd, SOL_PACKET, PACKET_TIMESTAMP, (void *) &req, sizeof(req)) | ||
515 | |||
516 | If PACKET_TIMESTAMP is not set, a software timestamp generated inside | ||
517 | the networking stack is used (the behavior before this setting was added). | ||
518 | |||
519 | See include/linux/net_tstamp.h and Documentation/networking/timestamping | ||
520 | for more information on hardware timestamps. | ||
521 | |||
496 | -------------------------------------------------------------------------------- | 522 | -------------------------------------------------------------------------------- |
497 | + THANKS | 523 | + THANKS |
498 | -------------------------------------------------------------------------------- | 524 | -------------------------------------------------------------------------------- |
diff --git a/Documentation/networking/pktgen.txt b/Documentation/networking/pktgen.txt index 61bb645d50e..75e4fd708cc 100644 --- a/Documentation/networking/pktgen.txt +++ b/Documentation/networking/pktgen.txt | |||
@@ -151,6 +151,8 @@ Examples: | |||
151 | 151 | ||
152 | pgset stop aborts injection. Also, ^C aborts generator. | 152 | pgset stop aborts injection. Also, ^C aborts generator. |
153 | 153 | ||
154 | pgset "rate 300M" set rate to 300 Mb/s | ||
155 | pgset "ratep 1000000" set rate to 1Mpps | ||
154 | 156 | ||
155 | Example scripts | 157 | Example scripts |
156 | =============== | 158 | =============== |
@@ -241,6 +243,9 @@ src6 | |||
241 | flows | 243 | flows |
242 | flowlen | 244 | flowlen |
243 | 245 | ||
246 | rate | ||
247 | ratep | ||
248 | |||
244 | References: | 249 | References: |
245 | ftp://robur.slu.se/pub/Linux/net-development/pktgen-testing/ | 250 | ftp://robur.slu.se/pub/Linux/net-development/pktgen-testing/ |
246 | ftp://robur.slu.se/pub/Linux/net-development/pktgen-testing/examples/ | 251 | ftp://robur.slu.se/pub/Linux/net-development/pktgen-testing/examples/ |