Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
118 commits
Select commit Hold shift + click to select a range
24c32c3
Enable Swap partition support
Snuzzo Jan 12, 2013
16080cf
Added ZRam and snappy comrpression.
RumpleNJ Aug 31, 2012
3a12c26
Enable zRAM
shrike1978 Jan 12, 2013
abf392b
Add Force Fast Charge V2 - Coolexe.
RumpleNJ Aug 31, 2012
b71d4b4
Enable fast charge
shrike1978 Jan 13, 2013
2a0b91e
mpdecision updates
shrike1978 Jan 14, 2013
a366e0c
mach-msm: mpdecision: don't turn off cpu1 if freq > idle
showp1984 Jun 28, 2012
3ba5c40
mach-msm: mpdecision: fixup: move idle block to mpdecision()
showp1984 Jun 28, 2012
4a841d6
mpdecision: don't turn on cpu1 when cpu0 is below idle_freq
showp1984 Jan 15, 2013
3ef159f
SVS sysfs interface
Chad0989 Jan 19, 2012
7549db7
Lower minimum and maximum voltages for undervolting
shrike1978 Jan 14, 2013
c8e92f9
Update version
shrike1978 Jan 14, 2013
dda39c0
Fix config oops
shrike1978 Jan 14, 2013
8243ce4
mpdecision: modify idle_freq decision points to improve efficiency
shrike1978 Jan 15, 2013
b0c630a
block: Adding ROW scheduling algorithm
Dec 11, 2012
50291df
row-iosched.c: Fix build errors
Dec 25, 2012
f5cd07b
Enable ROW scheduler
shrike1978 Jan 15, 2013
d5cc63b
Make ROW scheduler default
shrike1978 Jan 15, 2013
7679c2e
Remove interactiveX2 governor
shrike1978 Jan 16, 2013
e9a16e0
Set lionheart governor as default
shrike1978 Jan 16, 2013
2a9e8d0
Update version
shrike1978 Jan 16, 2013
3555677
drivers: cpufreq: address issue where cpus forget their clock speeds
showp1984 Mar 19, 2012
bab5511
Increase bandwith limit at lower cpu/l2 clocks
Snuzzo Dec 9, 2012
0a059bb
fs/dyn_sync_cntrl: dynamic sync control The dynamic sync
Snuzzo Jan 14, 2013
016fd74
Set Dynamic Fsync:Added missing driver to git
Snuzzo Jan 14, 2013
462b2d0
O3_FIX: git rid of a unneeded warning (TODO: return_address should us…
MikeC84 Sep 26, 2012
8c28bee
staging;android;lowmemorykiller.c from faux123
Snuzzo Dec 11, 2012
2d054fb
netfilter: xt_log.h: fix warning: value computed is not used
MikeC84 Sep 1, 2012
37be738
Add intellidemand governor by faux123
shrike1978 Jan 22, 2013
50b7b78
Add wheatley governor by Ezekeel
shrike1978 Jan 22, 2013
f05e78f
Linaro & -02 Fix
Sep 30, 2012
a2ef59c
ARM: net: JIT compiler for packet filters
Mar 20, 2012
e044976
Make RNG read/write wakeup threshold configurable
Snuzzo Jan 17, 2013
17524d6
Increase RNG thresholds
shrike1978 Jan 22, 2013
05b50db
Update version
shrike1978 Jan 22, 2013
dde9055
[PATCH] ARM: makefile: work around toolchain bug in recent versions o…
Snuzzo Jan 21, 2013
263e610
Netfilter Socket fix Courtesy of Coolexe
Snuzzo Jan 21, 2013
3736579
Disable CFQ
shrike1978 Jan 24, 2013
6b45729
Add SIO scheduler
shrike1978 Jan 25, 2013
7489239
Update version
shrike1978 Jan 25, 2013
8af76d2
Add Zen IO Scheduler
bbedward Jan 28, 2013
c57c43f
Remove powersave governor
shrike1978 Jan 28, 2013
ad17cf8
Added optimized CRC32 algorithm.
Jan 5, 2012
309663f
lowmemorykiller: Compact memory when killing processes
hyperb1iss Sep 11, 2012
e4ce74e
lowmemorykiller: Use asynchronous compaction
hyperb1iss Sep 11, 2012
ead27f5
Tweak RNG thresholds
shrike1978 Jan 28, 2013
c224d13
Added frontswap_by_Dan
akshaykarle Feb 22, 2012
3783dfb
Linux 3.0.54
shrike1978 Jan 29, 2013
5f5cbb2
Linux 3.0.55
shrike1978 Jan 29, 2013
bc2eb5c
Linux 3.0.56
shrike1978 Jan 29, 2013
ff29920
Linux 3.0.57
shrike1978 Jan 29, 2013
b6da56c
Linux 3.0.58
shrike1978 Jan 29, 2013
c380d12
Linux 3.0.59
shrike1978 Jan 29, 2013
6d46956
Linux 3.0.60
shrike1978 Jan 29, 2013
e142387
Linux 3.0.61
shrike1978 Jan 29, 2013
3cbb39b
Update version
shrike1978 Jan 29, 2013
4d17f53
lib/memcopy: use glibc version
Mar 20, 2012
29631e9
lib/string: use glibc version
Mar 20, 2012
2b7d4f7
[patch] iosched: prevent aliased requests from starving other I/O
JeffMoyer Apr 13, 2012
7ec58c1
Optimized Async I/O
kleikamp Jan 12, 2013
db5f157
Lower VFS cache pressure
shrike1978 Feb 4, 2013
ec4591c
Increase dirty ratio
shrike1978 Feb 4, 2013
530703a
Reduce swappiness
shrike1978 Feb 4, 2013
fd08dbf
Compile with neon
Snuzzo Dec 30, 2012
b8a4b65
Added optimized ARM RWSEM algorithm
Snuzzo Jan 4, 2013
fc429fb
Update version
shrike1978 Feb 5, 2013
fefff13
Linux 3.0.62
shrike1978 Feb 12, 2013
fa6b803
Linux 3.0.63
shrike1978 Feb 12, 2013
182f765
Use the git implementation of SHA-1. From MikeC84.
RumpleNJ Sep 6, 2012
6e8bde3
Remove ARM sha1 routines
manabian Dec 18, 2011
9b7e286
Added Fugeswap.
RumpleNJ Sep 21, 2012
78b4160
Increase default SD readahead
shrike1978 Feb 12, 2013
09855c9
Disable GENTLE_FAIR_SLEEPERS
shrike1978 Feb 12, 2013
079a8ac
Reduce CPU transition latency
shrike1978 Feb 12, 2013
a5de03e
mm: optimize SLUB
RumpleNJ Sep 1, 2012
786892e
Add dynamic writeback feature from 3.1
franciscofranco Dec 8, 2011
c9f518a
Makefile: add special arch flags
franciscofranco Jun 14, 2012
50626c0
Makefile: add -ffast-math cflag
franciscofranco Jun 26, 2012
c3665d9
ARM: clean up idle handlers
Sep 3, 2012
8100b43
optimize checksum routines
ktoonsez Sep 3, 2012
1e22134
msm: idle-v7: Power collapse Krait with caches enabled
Jan 29, 2012
6d21558
msm: idle-v7: Remove redundant cache clean
Feb 14, 2012
260878a
mm: compaction: make compact_control order signed
Sep 10, 2012
7e57d94
Fixed prox sensor initialization due to linaro changes.
vinylfreak89 Oct 6, 2012
52861f6
Update version
shrike1978 Feb 12, 2013
9bacc8b
Add topology.c
shrike1978 Feb 13, 2013
678a80b
[PATCH] ARM Topology by Linaro team
Snuzzo Feb 5, 2013
f2fbe80
Enable ARM topology
shrike1978 Feb 13, 2013
8300616
Revert "Added Fugeswap."
shrike1978 Feb 13, 2013
b8d7b5c
Update to qdsp6 version 3
Flyhalf205 Apr 29, 2013
0638c19
GPU: update genlock to jb-chocolote
Albinoman887 Apr 16, 2013
d3fe2ea
GPU: Correctly update Adreno/KGSL drivers to jb-chocolote.
Albinoman887 Apr 14, 2013
ac9bb01
Kbuild: copy msm headers
Flyhalf205 May 6, 2013
2be9114
msm: kgsl: Add support for Android's sync point
Oct 19, 2012
79408c6
include/linux/sync.h - added
Mar 1, 2013
ca7acf4
vigor: enable sync
Flyhalf205 May 7, 2013
635b8f5
pmem: add support for reusable pmem
labbott Dec 14, 2011
5a08fb5
Include: linux/fmem.h
Flyhalf205 May 8, 2013
354765e
msm_fb: hdmi: Resolution modes on HDMI
Flyhalf205 May 10, 2013
7df8be7
Added USB OTG and USB Headphone support
Flyhalf205 May 13, 2013
bce3958
msm_fb: Clean up the fix for error in y-offset check in FB driver
xiaomi-sm7435 Mar 16, 2012
c1fd6a1
Merge branch 'jellybean' of github.com:shrike1978/ermahgerd_kernel_vi…
shrike1978 May 30, 2013
4826634
msm_fb: Make buffers aligned to 4K page boundary
xiaomi-sm7435 Apr 12, 2012
b435079
msm_fb: Clean up of frame buffer 4KB alignment changes
xiaomi-sm7435 Feb 21, 2012
7cf1c41
msm_fb: display: Fix invalid x offset programming for YUV444 fmt
May 22, 2012
014245f
video: msm: Load correct default values to QSEED at init
Mar 28, 2012
1e603da
msm_fb: display: Assign proper destination rectangles to mdp blit
Apr 2, 2012
2440619
msm_fb: Fix error in y-offset check logic in FB driver
xiaomi-sm7435 Mar 9, 2012
43f4354
msm_fb: Clean up the fix for error in y-offset check in FB driver
xiaomi-sm7435 Mar 16, 2012
47ef0e2
vigor: audio changes/enable back mic
Flyhalf205 May 25, 2013
91c1dd2
usb: Add network bridge host driver for dun and rmnet
Nov 3, 2011
963887b
USB: OTG: Take wakelock when VBUS present
h8rift Nov 27, 2012
6b27a15
vigor: update defconfig
Flyhalf205 May 25, 2013
b65ff1f
board-vigor: add missing MHL GPIOs
Flyhalf205 May 26, 2013
3320c37
Update board-vigor.c
Flyhalf205 May 26, 2013
1e375c6
USB: gadget: use CAF android gadget at M8260AAABQNLZA30170
intervigilium Nov 22, 2012
9bd85f6
msm: vigor: bulk update USB gadget CAF
Flyhalf205 May 29, 2013
30e3849
bluetooth: updating bluetooth driver to caf
Flyhalf205 May 29, 2013
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions Documentation/00-INDEX
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,8 @@ cpuidle/
- info on CPU_IDLE, CPU idle state management subsystem.
cputopology.txt
- documentation on how CPU topology info is exported via sysfs.
crc32.txt
- brief tutorial on CRC computation
cris/
- directory with info about Linux on CRIS architecture.
crypto/
Expand Down
11 changes: 0 additions & 11 deletions Documentation/ABI/testing/sysfs-kernel-mm-cleancache
Original file line number Diff line number Diff line change
@@ -1,11 +0,0 @@
What: /sys/kernel/mm/cleancache/
Date: April 2011
Contact: Dan Magenheimer <dan.magenheimer@oracle.com>
Description:
/sys/kernel/mm/cleancache/ contains a number of files which
record a count of various cleancache operations
(sum across all filesystems):
succ_gets
failed_gets
puts
flushes
134 changes: 134 additions & 0 deletions Documentation/block/row-iosched.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
Introduction
============

The ROW scheduling algorithm will be used in mobile devices as default
block layer IO scheduling algorithm. ROW stands for "READ Over WRITE"
which is the main requests dispatch policy of this algorithm.

The ROW IO scheduler was developed with the mobile devices needs in
mind. In mobile devices we favor user experience upon everything else,
thus we want to give READ IO requests as much priority as possible.
The main idea of the ROW scheduling policy is just that:
- If there are READ requests in pipe - dispatch them, while write
starvation is considered.

Software description
====================
The elevator defines a registering mechanism for different IO scheduler
to implement. This makes implementing a new algorithm quite straight
forward and requires almost no changes to block/elevator framework. A
new IO scheduler just has to implement a set of callback functions
defined by the elevator.
These callbacks cover all the required IO operations such as
adding/removing request to/from the scheduler, merging two requests,
dispatching a request etc.

Design
======

The requests are kept in queues according to their priority. The
dispatching of requests is done in a Round Robin manner with a
different slice for each queue. The dispatch quantum for a specific
queue is set according to the queues priority. READ queues are
given bigger dispatch quantum than the WRITE queues, within a dispatch
cycle.

At the moment there are 6 types of queues the requests are
distributed to:
- High priority READ queue
- High priority Synchronous WRITE queue
- Regular priority READ queue
- Regular priority Synchronous WRITE queue
- Regular priority WRITE queue
- Low priority READ queue

The marking of request as high/low priority will be done by the
application adding the request and not the scheduler. See TODO section.
If the request is not marked in any way (high/low) the scheduler
assigns it to one of the regular priority queues:
read/write/sync write.

If in a certain dispatch cycle one of the queues was empty and didn't
use its quantum that queue will be marked as "un-served". If we're in
a middle of a dispatch cycle dispatching from queue Y and a request
arrives for queue X that was un-served in the previous cycle, if X's
priority is higher than Y's, queue X will be preempted in the favor of
queue Y.

For READ request queues ROW IO scheduler allows idling within a
dispatch quantum in order to give the application a chance to insert
more requests. Idling means adding some extra time for serving a
certain queue even if the queue is empty. The idling is enabled if
the ROW IO scheduler identifies the application is inserting requests
in a high frequency.
Not all queues can idle. ROW scheduler exposes an enablement struct
for idling.
For idling on READ queues, the ROW IO scheduler uses timer mechanism.
When the timer expires we schedule a delayed work that will signal the
device driver to fetch another request for dispatch.

ROW scheduler will support additional services for block devices that
supports Urgent Requests. That is, the scheduler may inform the
device driver upon urgent requests using a newly defined callback.
In addition it will support rescheduling of requests that were
interrupted. For example if the device driver issues a long write
request and a sudden urgent request is received by the scheduler.
The scheduler will inform the device driver about the urgent request,
so the device driver can stop the current write request and serve the
urgent request. In such a case the device driver may also insert back
to the scheduler the remainder of the interrupted write request, such
that the scheduler may continue sending urgent requests without the
need to interrupt the ongoing write again and again. The write
remainder will be sent later on according to the scheduler policy.

SMP/multi-core
==============
At the moment the code is accessed from 2 contexts:
- Application context (from block/elevator layer): adding the requests.
- device driver thread: dispatching the requests and notifying on
completion.

One lock is used to synchronize between the two. This lock is provided
by the block device driver along with the dispatch queue.

Config options
==============
1. hp_read_quantum: dispatch quantum for the high priority READ queue
(default is 100 requests)
2. rp_read_quantum: dispatch quantum for the regular priority READ
queue (default is 100 requests)
3. hp_swrite_quantum: dispatch quantum for the high priority
Synchronous WRITE queue (default is 2 requests)
4. rp_swrite_quantum: dispatch quantum for the regular priority
Synchronous WRITE queue (default is 1 requests)
5. rp_write_quantum: dispatch quantum for the regular priority WRITE
queue (default is 1 requests)
6. lp_read_quantum: dispatch quantum for the low priority READ queue
(default is 1 requests)
7. lp_swrite_quantum: dispatch quantum for the low priority Synchronous
WRITE queue (default is 1 requests)
8. read_idle: how long to idle on read queue in Msec (in case idling
is enabled on that queue). (default is 5 Msec)
9. read_idle_freq: frequency of inserting READ requests that will
trigger idling. This is the time in Msec between inserting two READ
requests. (default is 8 Msec)

Note: Dispatch quantum is number of requests that will be dispatched
from a certain queue in a dispatch cycle.

To do
=====
The ROW algorithm takes the scheduling policy one step further, making
it a bit more "user-needs oriented", by allowing the application to
hint on the urgency of its requests. For example: even among the READ
requests several requests may be more urgent for completion than other.
The former will go to the High priority READ queue, that is given the
bigger dispatch quantum than any other queue.

Still need to design the way applications will "hint" on the urgency of
their requests. May be done by ioctl(). We need to look into concrete
use-cases in order to determine the best solution for this.
This will be implemented as a second phase.

Design and implement additional services for block devices that
supports High Priority Requests.
183 changes: 183 additions & 0 deletions Documentation/crc32.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,183 @@
A brief CRC tutorial.

A CRC is a long-division remainder. You add the CRC to the message,
and the whole thing (message+CRC) is a multiple of the given
CRC polynomial. To check the CRC, you can either check that the
CRC matches the recomputed value, *or* you can check that the
remainder computed on the message+CRC is 0. This latter approach
is used by a lot of hardware implementations, and is why so many
protocols put the end-of-frame flag after the CRC.

It's actually the same long division you learned in school, except that
- We're working in binary, so the digits are only 0 and 1, and
- When dividing polynomials, there are no carries. Rather than add and
subtract, we just xor. Thus, we tend to get a bit sloppy about
the difference between adding and subtracting.

Like all division, the remainder is always smaller than the divisor.
To produce a 32-bit CRC, the divisor is actually a 33-bit CRC polynomial.
Since it's 33 bits long, bit 32 is always going to be set, so usually the
CRC is written in hex with the most significant bit omitted. (If you're
familiar with the IEEE 754 floating-point format, it's the same idea.)

Note that a CRC is computed over a string of *bits*, so you have
to decide on the endianness of the bits within each byte. To get
the best error-detecting properties, this should correspond to the
order they're actually sent. For example, standard RS-232 serial is
little-endian; the most significant bit (sometimes used for parity)
is sent last. And when appending a CRC word to a message, you should
do it in the right order, matching the endianness.

Just like with ordinary division, you proceed one digit (bit) at a time.
Each step of the division, division, you take one more digit (bit) of the
dividend and append it to the current remainder. Then you figure out the
appropriate multiple of the divisor to subtract to being the remainder
back into range. In binary, this is easy - it has to be either 0 or 1,
and to make the XOR cancel, it's just a copy of bit 32 of the remainder.

When computing a CRC, we don't care about the quotient, so we can
throw the quotient bit away, but subtract the appropriate multiple of
the polynomial from the remainder and we're back to where we started,
ready to process the next bit.

A big-endian CRC written this way would be coded like:
for (i = 0; i < input_bits; i++) {
multiple = remainder & 0x80000000 ? CRCPOLY : 0;
remainder = (remainder << 1 | next_input_bit()) ^ multiple;
}

Notice how, to get at bit 32 of the shifted remainder, we look
at bit 31 of the remainder *before* shifting it.

But also notice how the next_input_bit() bits we're shifting into
the remainder don't actually affect any decision-making until
32 bits later. Thus, the first 32 cycles of this are pretty boring.
Also, to add the CRC to a message, we need a 32-bit-long hole for it at
the end, so we have to add 32 extra cycles shifting in zeros at the
end of every message,

These details lead to a standard trick: rearrange merging in the
next_input_bit() until the moment it's needed. Then the first 32 cycles
can be precomputed, and merging in the final 32 zero bits to make room
for the CRC can be skipped entirely. This changes the code to:

for (i = 0; i < input_bits; i++) {
remainder ^= next_input_bit() << 31;
multiple = (remainder & 0x80000000) ? CRCPOLY : 0;
remainder = (remainder << 1) ^ multiple;
}

With this optimization, the little-endian code is particularly simple:
for (i = 0; i < input_bits; i++) {
remainder ^= next_input_bit();
multiple = (remainder & 1) ? CRCPOLY : 0;
remainder = (remainder >> 1) ^ multiple;
}

The most significant coefficient of the remainder polynomial is stored
in the least significant bit of the binary "remainder" variable.
The other details of endianness have been hidden in CRCPOLY (which must
be bit-reversed) and next_input_bit().

As long as next_input_bit is returning the bits in a sensible order, we don't
*have* to wait until the last possible moment to merge in additional bits.
We can do it 8 bits at a time rather than 1 bit at a time:
for (i = 0; i < input_bytes; i++) {
remainder ^= next_input_byte() << 24;
for (j = 0; j < 8; j++) {
multiple = (remainder & 0x80000000) ? CRCPOLY : 0;
remainder = (remainder << 1) ^ multiple;
}
}

Or in little-endian:
for (i = 0; i < input_bytes; i++) {
remainder ^= next_input_byte();
for (j = 0; j < 8; j++) {
multiple = (remainder & 1) ? CRCPOLY : 0;
remainder = (remainder >> 1) ^ multiple;
}
}

If the input is a multiple of 32 bits, you can even XOR in a 32-bit
word at a time and increase the inner loop count to 32.

You can also mix and match the two loop styles, for example doing the
bulk of a message byte-at-a-time and adding bit-at-a-time processing
for any fractional bytes at the end.

To reduce the number of conditional branches, software commonly uses
the byte-at-a-time table method, popularized by Dilip V. Sarwate,
"Computation of Cyclic Redundancy Checks via Table Look-Up", Comm. ACM
v.31 no.8 (August 1998) p. 1008-1013.

Here, rather than just shifting one bit of the remainder to decide
in the correct multiple to subtract, we can shift a byte at a time.
This produces a 40-bit (rather than a 33-bit) intermediate remainder,
and the correct multiple of the polynomial to subtract is found using
a 256-entry lookup table indexed by the high 8 bits.

(The table entries are simply the CRC-32 of the given one-byte messages.)

When space is more constrained, smaller tables can be used, e.g. two
4-bit shifts followed by a lookup in a 16-entry table.

It is not practical to process much more than 8 bits at a time using this
technique, because tables larger than 256 entries use too much memory and,
more importantly, too much of the L1 cache.

To get higher software performance, a "slicing" technique can be used.
See "High Octane CRC Generation with the Intel Slicing-by-8 Algorithm",
ftp://download.intel.com/technology/comms/perfnet/download/slicing-by-8.pdf

This does not change the number of table lookups, but does increase
the parallelism. With the classic Sarwate algorithm, each table lookup
must be completed before the index of the next can be computed.

A "slicing by 2" technique would shift the remainder 16 bits at a time,
producing a 48-bit intermediate remainder. Rather than doing a single
lookup in a 65536-entry table, the two high bytes are looked up in
two different 256-entry tables. Each contains the remainder required
to cancel out the corresponding byte. The tables are different because the
polynomials to cancel are different. One has non-zero coefficients from
x^32 to x^39, while the other goes from x^40 to x^47.

Since modern processors can handle many parallel memory operations, this
takes barely longer than a single table look-up and thus performs almost
twice as fast as the basic Sarwate algorithm.

This can be extended to "slicing by 4" using 4 256-entry tables.
Each step, 32 bits of data is fetched, XORed with the CRC, and the result
broken into bytes and looked up in the tables. Because the 32-bit shift
leaves the low-order bits of the intermediate remainder zero, the
final CRC is simply the XOR of the 4 table look-ups.

But this still enforces sequential execution: a second group of table
look-ups cannot begin until the previous groups 4 table look-ups have all
been completed. Thus, the processor's load/store unit is sometimes idle.

To make maximum use of the processor, "slicing by 8" performs 8 look-ups
in parallel. Each step, the 32-bit CRC is shifted 64 bits and XORed
with 64 bits of input data. What is important to note is that 4 of
those 8 bytes are simply copies of the input data; they do not depend
on the previous CRC at all. Thus, those 4 table look-ups may commence
immediately, without waiting for the previous loop iteration.

By always having 4 loads in flight, a modern superscalar processor can
be kept busy and make full use of its L1 cache.

Two more details about CRC implementation in the real world:

Normally, appending zero bits to a message which is already a multiple
of a polynomial produces a larger multiple of that polynomial. Thus,
a basic CRC will not detect appended zero bits (or bytes). To enable
a CRC to detect this condition, it's common to invert the CRC before
appending it. This makes the remainder of the message+crc come out not
as zero, but some fixed non-zero value. (The CRC of the inversion
pattern, 0xffffffff.)

The same problem applies to zero bits prepended to the message, and a
similar solution is used. Instead of starting the CRC computation with
a remainder of 0, an initial remainder of all ones is used. As long as
you start the same way on decoding, it doesn't make a difference.

2 changes: 1 addition & 1 deletion Documentation/dvb/get_dvb_firmware
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ sub tda10045 {

sub tda10046 {
my $sourcefile = "TT_PCI_2.19h_28_11_2006.zip";
my $url = "http://www.tt-download.com/download/updates/219/$sourcefile";
my $url = "http://technotrend.com.ua/download/software/219/$sourcefile";
my $hash = "6a7e1e2f2644b162ff0502367553c72d";
my $outfile = "dvb-fe-tda10046.fw";
my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
Expand Down
2 changes: 2 additions & 0 deletions Documentation/networking/ifenslave.c
Original file line number Diff line number Diff line change
Expand Up @@ -539,12 +539,14 @@ static int if_getconfig(char *ifname)
metric = 0;
} else
metric = ifr.ifr_metric;
printf("The result of SIOCGIFMETRIC is %d\n", metric);

strcpy(ifr.ifr_name, ifname);
if (ioctl(skfd, SIOCGIFMTU, &ifr) < 0)
mtu = 0;
else
mtu = ifr.ifr_mtu;
printf("The result of SIOCGIFMTU is %d\n", mtu);

strcpy(ifr.ifr_name, ifname);
if (ioctl(skfd, SIOCGIFDSTADDR, &ifr) < 0) {
Expand Down
5 changes: 5 additions & 0 deletions Documentation/networking/ip-sysctl.txt
Original file line number Diff line number Diff line change
Expand Up @@ -534,6 +534,11 @@ tcp_thin_dupack - BOOLEAN
Documentation/networking/tcp-thin.txt
Default: 0

tcp_challenge_ack_limit - INTEGER
Limits number of Challenge ACK sent per second, as recommended
in RFC 5961 (Improving TCP's Robustness to Blind In-Window Attacks)
Default: 100

UDP variables:

udp_mem - vector of 3 INTEGERs: min, pressure, max
Expand Down
Loading