<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/drivers/net/bonding, branch v3.7-rc2</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>vlan: fix bond/team enslave of vlan challenged slave/port</title>
<updated>2012-10-16T18:41:46+00:00</updated>
<author>
<name>Jiri Pirko</name>
<email>jiri@resnulli.us</email>
</author>
<published>2012-10-14T04:30:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=55462cf30ad9768fff6a6d36db21879146a39bdf'/>
<id>55462cf30ad9768fff6a6d36db21879146a39bdf</id>
<content type='text'>
In vlan_uses_dev() check for number of vlan devs rather than existence
of vlan_info. The reason is that vlan id 0 is there without appropriate
vlan dev on it by default which prevented from enslaving vlan challenged
dev.

Reported-by: Jon Stanley &lt;jstanley@rmrf.net&gt;
Signed-off-by: Jiri Pirko &lt;jiri@resnulli.us&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In vlan_uses_dev() check for number of vlan devs rather than existence
of vlan_info. The reason is that vlan id 0 is there without appropriate
vlan dev on it by default which prevented from enslaving vlan challenged
dev.

Reported-by: Jon Stanley &lt;jstanley@rmrf.net&gt;
Signed-off-by: Jiri Pirko &lt;jiri@resnulli.us&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>bonding: set qdisc_tx_busylock to avoid LOCKDEP splat</title>
<updated>2012-10-04T19:53:48+00:00</updated>
<author>
<name>Eric Dumazet</name>
<email>edumazet@google.com</email>
</author>
<published>2012-10-03T23:05:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=49ee49202b4ac4be95d05e4bf24a9ac8b54c5528'/>
<id>49ee49202b4ac4be95d05e4bf24a9ac8b54c5528</id>
<content type='text'>
If a qdisc is installed on a bonding device, its possible to get
following lockdep splat under stress :

 =============================================
 [ INFO: possible recursive locking detected ]
 3.6.0+ #211 Not tainted
 ---------------------------------------------
 ping/4876 is trying to acquire lock:
  (dev-&gt;qdisc_tx_busylock ?: &amp;qdisc_tx_busylock){+.-...}, at: [&lt;ffffffff8157a191&gt;] dev_queue_xmit+0xe1/0x830

 but task is already holding lock:
  (dev-&gt;qdisc_tx_busylock ?: &amp;qdisc_tx_busylock){+.-...}, at: [&lt;ffffffff8157a191&gt;] dev_queue_xmit+0xe1/0x830

 other info that might help us debug this:
  Possible unsafe locking scenario:

        CPU0
        ----
   lock(dev-&gt;qdisc_tx_busylock ?: &amp;qdisc_tx_busylock);
   lock(dev-&gt;qdisc_tx_busylock ?: &amp;qdisc_tx_busylock);

  *** DEADLOCK ***

  May be due to missing lock nesting notation

 6 locks held by ping/4876:
  #0:  (sk_lock-AF_INET){+.+.+.}, at: [&lt;ffffffff815e5030&gt;] raw_sendmsg+0x600/0xc30
  #1:  (rcu_read_lock_bh){.+....}, at: [&lt;ffffffff815ba4bd&gt;] ip_finish_output+0x12d/0x870
  #2:  (rcu_read_lock_bh){.+....}, at: [&lt;ffffffff8157a0b0&gt;] dev_queue_xmit+0x0/0x830
  #3:  (dev-&gt;qdisc_tx_busylock ?: &amp;qdisc_tx_busylock){+.-...}, at: [&lt;ffffffff8157a191&gt;] dev_queue_xmit+0xe1/0x830
  #4:  (&amp;bond-&gt;lock){++.?..}, at: [&lt;ffffffffa02128c1&gt;] bond_start_xmit+0x31/0x4b0 [bonding]
  #5:  (rcu_read_lock_bh){.+....}, at: [&lt;ffffffff8157a0b0&gt;] dev_queue_xmit+0x0/0x830

 stack backtrace:
 Pid: 4876, comm: ping Not tainted 3.6.0+ #211
 Call Trace:
  [&lt;ffffffff810a0145&gt;] __lock_acquire+0x715/0x1b80
  [&lt;ffffffff810a256b&gt;] ? mark_held_locks+0x9b/0x100
  [&lt;ffffffff810a1bf2&gt;] lock_acquire+0x92/0x1d0
  [&lt;ffffffff8157a191&gt;] ? dev_queue_xmit+0xe1/0x830
  [&lt;ffffffff81726b7c&gt;] _raw_spin_lock+0x3c/0x50
  [&lt;ffffffff8157a191&gt;] ? dev_queue_xmit+0xe1/0x830
  [&lt;ffffffff8106264d&gt;] ? rcu_read_lock_bh_held+0x5d/0x90
  [&lt;ffffffff8157a191&gt;] dev_queue_xmit+0xe1/0x830
  [&lt;ffffffff8157a0b0&gt;] ? netdev_pick_tx+0x570/0x570
  [&lt;ffffffffa0212a6a&gt;] bond_start_xmit+0x1da/0x4b0 [bonding]
  [&lt;ffffffff815796d0&gt;] dev_hard_start_xmit+0x240/0x6b0
  [&lt;ffffffff81597c6e&gt;] sch_direct_xmit+0xfe/0x2a0
  [&lt;ffffffff8157a249&gt;] dev_queue_xmit+0x199/0x830
  [&lt;ffffffff8157a0b0&gt;] ? netdev_pick_tx+0x570/0x570
  [&lt;ffffffff815ba96f&gt;] ip_finish_output+0x5df/0x870
  [&lt;ffffffff815ba4bd&gt;] ? ip_finish_output+0x12d/0x870
  [&lt;ffffffff815bb964&gt;] ip_output+0x54/0xf0
  [&lt;ffffffff815bad48&gt;] ip_local_out+0x28/0x90
  [&lt;ffffffff815bc444&gt;] ip_send_skb+0x14/0x50
  [&lt;ffffffff815bc4b2&gt;] ip_push_pending_frames+0x32/0x40
  [&lt;ffffffff815e536a&gt;] raw_sendmsg+0x93a/0xc30
  [&lt;ffffffff8128d570&gt;] ? selinux_file_send_sigiotask+0x1f0/0x1f0
  [&lt;ffffffff8109ddb4&gt;] ? __lock_is_held+0x54/0x80
  [&lt;ffffffff815f6730&gt;] ? inet_recvmsg+0x220/0x220
  [&lt;ffffffff8109ddb4&gt;] ? __lock_is_held+0x54/0x80
  [&lt;ffffffff815f6855&gt;] inet_sendmsg+0x125/0x240
  [&lt;ffffffff815f6730&gt;] ? inet_recvmsg+0x220/0x220
  [&lt;ffffffff8155cddb&gt;] sock_sendmsg+0xab/0xe0
  [&lt;ffffffff810a1650&gt;] ? lock_release_non_nested+0xa0/0x2e0
  [&lt;ffffffff810a1650&gt;] ? lock_release_non_nested+0xa0/0x2e0
  [&lt;ffffffff8155d18c&gt;] __sys_sendmsg+0x37c/0x390
  [&lt;ffffffff81195b2a&gt;] ? fsnotify+0x2ca/0x7e0
  [&lt;ffffffff811958e8&gt;] ? fsnotify+0x88/0x7e0
  [&lt;ffffffff81361f36&gt;] ? put_ldisc+0x56/0xd0
  [&lt;ffffffff8116f98a&gt;] ? fget_light+0x3da/0x510
  [&lt;ffffffff8155f6c4&gt;] sys_sendmsg+0x44/0x80
  [&lt;ffffffff8172fc22&gt;] system_call_fastpath+0x16/0x1b

Avoid this problem using a distinct lock_class_key for bonding
devices.

Signed-off-by: Eric Dumazet &lt;edumazet@google.com&gt;
Cc: Jay Vosburgh &lt;fubar@us.ibm.com&gt;
Cc: Andy Gospodarek &lt;andy@greyhouse.net&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If a qdisc is installed on a bonding device, its possible to get
following lockdep splat under stress :

 =============================================
 [ INFO: possible recursive locking detected ]
 3.6.0+ #211 Not tainted
 ---------------------------------------------
 ping/4876 is trying to acquire lock:
  (dev-&gt;qdisc_tx_busylock ?: &amp;qdisc_tx_busylock){+.-...}, at: [&lt;ffffffff8157a191&gt;] dev_queue_xmit+0xe1/0x830

 but task is already holding lock:
  (dev-&gt;qdisc_tx_busylock ?: &amp;qdisc_tx_busylock){+.-...}, at: [&lt;ffffffff8157a191&gt;] dev_queue_xmit+0xe1/0x830

 other info that might help us debug this:
  Possible unsafe locking scenario:

        CPU0
        ----
   lock(dev-&gt;qdisc_tx_busylock ?: &amp;qdisc_tx_busylock);
   lock(dev-&gt;qdisc_tx_busylock ?: &amp;qdisc_tx_busylock);

  *** DEADLOCK ***

  May be due to missing lock nesting notation

 6 locks held by ping/4876:
  #0:  (sk_lock-AF_INET){+.+.+.}, at: [&lt;ffffffff815e5030&gt;] raw_sendmsg+0x600/0xc30
  #1:  (rcu_read_lock_bh){.+....}, at: [&lt;ffffffff815ba4bd&gt;] ip_finish_output+0x12d/0x870
  #2:  (rcu_read_lock_bh){.+....}, at: [&lt;ffffffff8157a0b0&gt;] dev_queue_xmit+0x0/0x830
  #3:  (dev-&gt;qdisc_tx_busylock ?: &amp;qdisc_tx_busylock){+.-...}, at: [&lt;ffffffff8157a191&gt;] dev_queue_xmit+0xe1/0x830
  #4:  (&amp;bond-&gt;lock){++.?..}, at: [&lt;ffffffffa02128c1&gt;] bond_start_xmit+0x31/0x4b0 [bonding]
  #5:  (rcu_read_lock_bh){.+....}, at: [&lt;ffffffff8157a0b0&gt;] dev_queue_xmit+0x0/0x830

 stack backtrace:
 Pid: 4876, comm: ping Not tainted 3.6.0+ #211
 Call Trace:
  [&lt;ffffffff810a0145&gt;] __lock_acquire+0x715/0x1b80
  [&lt;ffffffff810a256b&gt;] ? mark_held_locks+0x9b/0x100
  [&lt;ffffffff810a1bf2&gt;] lock_acquire+0x92/0x1d0
  [&lt;ffffffff8157a191&gt;] ? dev_queue_xmit+0xe1/0x830
  [&lt;ffffffff81726b7c&gt;] _raw_spin_lock+0x3c/0x50
  [&lt;ffffffff8157a191&gt;] ? dev_queue_xmit+0xe1/0x830
  [&lt;ffffffff8106264d&gt;] ? rcu_read_lock_bh_held+0x5d/0x90
  [&lt;ffffffff8157a191&gt;] dev_queue_xmit+0xe1/0x830
  [&lt;ffffffff8157a0b0&gt;] ? netdev_pick_tx+0x570/0x570
  [&lt;ffffffffa0212a6a&gt;] bond_start_xmit+0x1da/0x4b0 [bonding]
  [&lt;ffffffff815796d0&gt;] dev_hard_start_xmit+0x240/0x6b0
  [&lt;ffffffff81597c6e&gt;] sch_direct_xmit+0xfe/0x2a0
  [&lt;ffffffff8157a249&gt;] dev_queue_xmit+0x199/0x830
  [&lt;ffffffff8157a0b0&gt;] ? netdev_pick_tx+0x570/0x570
  [&lt;ffffffff815ba96f&gt;] ip_finish_output+0x5df/0x870
  [&lt;ffffffff815ba4bd&gt;] ? ip_finish_output+0x12d/0x870
  [&lt;ffffffff815bb964&gt;] ip_output+0x54/0xf0
  [&lt;ffffffff815bad48&gt;] ip_local_out+0x28/0x90
  [&lt;ffffffff815bc444&gt;] ip_send_skb+0x14/0x50
  [&lt;ffffffff815bc4b2&gt;] ip_push_pending_frames+0x32/0x40
  [&lt;ffffffff815e536a&gt;] raw_sendmsg+0x93a/0xc30
  [&lt;ffffffff8128d570&gt;] ? selinux_file_send_sigiotask+0x1f0/0x1f0
  [&lt;ffffffff8109ddb4&gt;] ? __lock_is_held+0x54/0x80
  [&lt;ffffffff815f6730&gt;] ? inet_recvmsg+0x220/0x220
  [&lt;ffffffff8109ddb4&gt;] ? __lock_is_held+0x54/0x80
  [&lt;ffffffff815f6855&gt;] inet_sendmsg+0x125/0x240
  [&lt;ffffffff815f6730&gt;] ? inet_recvmsg+0x220/0x220
  [&lt;ffffffff8155cddb&gt;] sock_sendmsg+0xab/0xe0
  [&lt;ffffffff810a1650&gt;] ? lock_release_non_nested+0xa0/0x2e0
  [&lt;ffffffff810a1650&gt;] ? lock_release_non_nested+0xa0/0x2e0
  [&lt;ffffffff8155d18c&gt;] __sys_sendmsg+0x37c/0x390
  [&lt;ffffffff81195b2a&gt;] ? fsnotify+0x2ca/0x7e0
  [&lt;ffffffff811958e8&gt;] ? fsnotify+0x88/0x7e0
  [&lt;ffffffff81361f36&gt;] ? put_ldisc+0x56/0xd0
  [&lt;ffffffff8116f98a&gt;] ? fget_light+0x3da/0x510
  [&lt;ffffffff8155f6c4&gt;] sys_sendmsg+0x44/0x80
  [&lt;ffffffff8172fc22&gt;] system_call_fastpath+0x16/0x1b

Avoid this problem using a distinct lock_class_key for bonding
devices.

Signed-off-by: Eric Dumazet &lt;edumazet@google.com&gt;
Cc: Jay Vosburgh &lt;fubar@us.ibm.com&gt;
Cc: Andy Gospodarek &lt;andy@greyhouse.net&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>bonding: add some slack to arp monitoring time limits</title>
<updated>2012-08-31T20:37:12+00:00</updated>
<author>
<name>Jiri Bohac</name>
<email>jbohac@suse.cz</email>
</author>
<published>2012-08-30T12:02:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=da210f559019ba1cd4ebee2a28ad158bfb95bab2'/>
<id>da210f559019ba1cd4ebee2a28ad158bfb95bab2</id>
<content type='text'>
Currently, all the time limits in the bonding ARP monitor are in
multiples of arp_interval -- the time interval at which the ARP
monitor is periodically scheduled.

With a fast network round-trip and a little scheduling latency
of the ARP monitor work, a limit of n*delta_in_ticks may
effectively mean (n-1)*delta_in_ticks.

This is fatal in case of n==1  (the link will stay down
forever) and makes the behaviour non-deterministic in all the
other cases.

Add a delta_in_ticks/2 time slack to all the time limits.

Signed-off-by: Jiri Bohac &lt;jbohac@suse.cz&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Currently, all the time limits in the bonding ARP monitor are in
multiples of arp_interval -- the time interval at which the ARP
monitor is periodically scheduled.

With a fast network round-trip and a little scheduling latency
of the ARP monitor work, a limit of n*delta_in_ticks may
effectively mean (n-1)*delta_in_ticks.

This is fatal in case of n==1  (the link will stay down
forever) and makes the behaviour non-deterministic in all the
other cases.

Add a delta_in_ticks/2 time slack to all the time limits.

Signed-off-by: Jiri Bohac &lt;jbohac@suse.cz&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>bonding: support for IPv6 transmit hashing</title>
<updated>2012-08-23T05:49:30+00:00</updated>
<author>
<name>John Eaglesham</name>
<email>linux@8192.net</email>
</author>
<published>2012-08-21T20:43:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=6b923cb7188d46905f43fa84210c4c3e5f9cd8fb'/>
<id>6b923cb7188d46905f43fa84210c4c3e5f9cd8fb</id>
<content type='text'>
Currently the "bonding" driver does not support load balancing outgoing
traffic in LACP mode for IPv6 traffic. IPv4 (and TCP or UDP over IPv4)
are currently supported; this patch adds transmit hashing for IPv6 (and
TCP or UDP over IPv6), bringing IPv6 up to par with IPv4 support in the
bonding driver. In addition, bounds checking has been added to all
transmit hashing functions.

The algorithm chosen (xor'ing the bottom three quads of the source and
destination addresses together, then xor'ing each byte of that result into
the bottom byte, finally xor'ing with the last bytes of the MAC addresses)
was selected after testing almost 400,000 unique IPv6 addresses harvested
from server logs. This algorithm had the most even distribution for both
big- and little-endian architectures while still using few instructions. Its
behavior also attempts to closely match that of the IPv4 algorithm.

The IPv6 flow label was intentionally not included in the hash as it appears
to be unset in the vast majority of IPv6 traffic sampled, and the current
algorithm not using the flow label already offers a very even distribution.

Fragmented IPv6 packets are handled the same way as fragmented IPv4 packets,
ie, they are not balanced based on layer 4 information. Additionally,
IPv6 packets with intermediate headers are not balanced based on layer
4 information. In practice these intermediate headers are not common and
this should not cause any problems, and the alternative (a packet-parsing
loop and look-up table) seemed slow and complicated for little gain.

Tested-by: John Eaglesham &lt;linux@8192.net&gt;
Signed-off-by: John Eaglesham &lt;linux@8192.net&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Currently the "bonding" driver does not support load balancing outgoing
traffic in LACP mode for IPv6 traffic. IPv4 (and TCP or UDP over IPv4)
are currently supported; this patch adds transmit hashing for IPv6 (and
TCP or UDP over IPv6), bringing IPv6 up to par with IPv4 support in the
bonding driver. In addition, bounds checking has been added to all
transmit hashing functions.

The algorithm chosen (xor'ing the bottom three quads of the source and
destination addresses together, then xor'ing each byte of that result into
the bottom byte, finally xor'ing with the last bytes of the MAC addresses)
was selected after testing almost 400,000 unique IPv6 addresses harvested
from server logs. This algorithm had the most even distribution for both
big- and little-endian architectures while still using few instructions. Its
behavior also attempts to closely match that of the IPv4 algorithm.

The IPv6 flow label was intentionally not included in the hash as it appears
to be unset in the vast majority of IPv6 traffic sampled, and the current
algorithm not using the flow label already offers a very even distribution.

Fragmented IPv6 packets are handled the same way as fragmented IPv4 packets,
ie, they are not balanced based on layer 4 information. Additionally,
IPv6 packets with intermediate headers are not balanced based on layer
4 information. In practice these intermediate headers are not common and
this should not cause any problems, and the alternative (a packet-parsing
loop and look-up table) seemed slow and complicated for little gain.

Tested-by: John Eaglesham &lt;linux@8192.net&gt;
Signed-off-by: John Eaglesham &lt;linux@8192.net&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net</title>
<updated>2012-08-22T21:21:38+00:00</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2012-08-22T21:21:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=1304a7343b30fc4f16045412efdbb4179a3d9255'/>
<id>1304a7343b30fc4f16045412efdbb4179a3d9255</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>netpoll: check netpoll tx status on the right device</title>
<updated>2012-08-14T21:33:32+00:00</updated>
<author>
<name>Amerigo Wang</name>
<email>amwang@redhat.com</email>
</author>
<published>2012-08-10T01:24:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=e15c3c2294605f09f9b336b2f3b97086ab4b8145'/>
<id>e15c3c2294605f09f9b336b2f3b97086ab4b8145</id>
<content type='text'>
Although this doesn't matter actually, because netpoll_tx_running()
doesn't use the parameter, the code will be more readable.

For team_dev_queue_xmit() we have to move it down to avoid
compile errors.

Cc: David Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Jiri Pirko &lt;jiri@resnulli.us&gt;
Signed-off-by: Cong Wang &lt;amwang@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Although this doesn't matter actually, because netpoll_tx_running()
doesn't use the parameter, the code will be more readable.

For team_dev_queue_xmit() we have to move it down to avoid
compile errors.

Cc: David Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Jiri Pirko &lt;jiri@resnulli.us&gt;
Signed-off-by: Cong Wang &lt;amwang@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>netpoll: make __netpoll_cleanup non-block</title>
<updated>2012-08-14T21:33:30+00:00</updated>
<author>
<name>Amerigo Wang</name>
<email>amwang@redhat.com</email>
</author>
<published>2012-08-10T01:24:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=38e6bc185d9544dfad1774b3f8902a0b061aea25'/>
<id>38e6bc185d9544dfad1774b3f8902a0b061aea25</id>
<content type='text'>
Like the previous patch, slave_disable_netpoll() and __netpoll_cleanup()
may be called with read_lock() held too, so we should make them
non-block, by moving the cleanup and kfree() to call_rcu_bh() callbacks.

Cc: "David S. Miller" &lt;davem@davemloft.net&gt;
Signed-off-by: Cong Wang &lt;amwang@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Like the previous patch, slave_disable_netpoll() and __netpoll_cleanup()
may be called with read_lock() held too, so we should make them
non-block, by moving the cleanup and kfree() to call_rcu_bh() callbacks.

Cc: "David S. Miller" &lt;davem@davemloft.net&gt;
Signed-off-by: Cong Wang &lt;amwang@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>netpoll: use GFP_ATOMIC in slave_enable_netpoll() and __netpoll_setup()</title>
<updated>2012-08-14T21:33:30+00:00</updated>
<author>
<name>Amerigo Wang</name>
<email>amwang@redhat.com</email>
</author>
<published>2012-08-10T01:24:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=47be03a28cc6c80e3aa2b3e8ed6d960ff0c5c0af'/>
<id>47be03a28cc6c80e3aa2b3e8ed6d960ff0c5c0af</id>
<content type='text'>
slave_enable_netpoll() and __netpoll_setup() may be called
with read_lock() held, so should use GFP_ATOMIC to allocate
memory. Eric suggested to pass gfp flags to __netpoll_setup().

Cc: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Cc: "David S. Miller" &lt;davem@davemloft.net&gt;
Reported-by: Dan Carpenter &lt;dan.carpenter@oracle.com&gt;
Signed-off-by: Eric Dumazet &lt;edumazet@google.com&gt;
Signed-off-by: Cong Wang &lt;amwang@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
slave_enable_netpoll() and __netpoll_setup() may be called
with read_lock() held, so should use GFP_ATOMIC to allocate
memory. Eric suggested to pass gfp flags to __netpoll_setup().

Cc: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Cc: "David S. Miller" &lt;davem@davemloft.net&gt;
Reported-by: Dan Carpenter &lt;dan.carpenter@oracle.com&gt;
Signed-off-by: Eric Dumazet &lt;edumazet@google.com&gt;
Signed-off-by: Cong Wang &lt;amwang@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: remove netdev_bonding_change()</title>
<updated>2012-08-14T21:28:24+00:00</updated>
<author>
<name>Amerigo Wang</name>
<email>amwang@redhat.com</email>
</author>
<published>2012-08-09T22:14:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=b7bc2a5b5bd99b216c3e5fe68c7f45c684ab5745'/>
<id>b7bc2a5b5bd99b216c3e5fe68c7f45c684ab5745</id>
<content type='text'>
I don't see any benifits to use netdev_bonding_change() than
using call_netdevice_notifiers() directly.

Cc: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Cong Wang &lt;amwang@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
I don't see any benifits to use netdev_bonding_change() than
using call_netdevice_notifiers() directly.

Cc: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Cong Wang &lt;amwang@redhat.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>bond_sysfs: use real_num_tx_queues rather than params.tx_queue</title>
<updated>2012-07-20T18:07:00+00:00</updated>
<author>
<name>Jiri Pirko</name>
<email>jiri@resnulli.us</email>
</author>
<published>2012-07-20T02:28:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=8a540ff9e1d685b5feb0a9df5d2b74db1e0b4d39'/>
<id>8a540ff9e1d685b5feb0a9df5d2b74db1e0b4d39</id>
<content type='text'>
Since now number of tx queues can be specified during bond instance
creation and therefore it may differ from params.tx_queues, use rather
real_num_tx_queues for boundary check.

Signed-off-by: Jiri Pirko &lt;jiri@resnulli.us&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Since now number of tx queues can be specified during bond instance
creation and therefore it may differ from params.tx_queues, use rather
real_num_tx_queues for boundary check.

Signed-off-by: Jiri Pirko &lt;jiri@resnulli.us&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
</feed>
