2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-09-03 15:24:57 +03:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[MAC80211]: fix race conditions with keys
During receive processing, we select the key long before using it and
because there's no locking it is possible that we kfree() the key
after having selected it but before using it for crypto operations.
Obviously, this is bad.
Secondly, during transmit processing, there are two possible races: We
have a similar race between select_key() and using it for encryption,
but we also have a race here between select_key() and hardware
encryption (both when a key is removed.)
This patch solves these issues by using RCU: when a key is to be freed,
we first remove the pointer from the appropriate places (sdata->keys,
sdata->default_key, sta->key) using rcu_assign_pointer() and then
synchronize_rcu(). Then, we can safely kfree() the key and remove it
from the hardware. There's a window here where the hardware may still
be using it for decryption, but we can't work around that without having
two hardware callbacks, one to disable the key for RX and one to disable
it for TX; but the worst thing that will happen is that we receive a
packet decrypted that we don't find a key for any more and then drop it.
When we add a key, we first need to upload it to the hardware and then,
using rcu_assign_pointer() again, link it into our structures.
In the code using keys (TX/RX paths) we use rcu_dereference() to get the
key and enclose the whole tx/rx section in a rcu_read_lock() ...
rcu_read_unlock() block. Because we've uploaded the key to hardware
before linking it into internal structures, we can guarantee that it is
valid once get to into tx().
One possible race condition remains, however: when we have hardware
acceleration enabled and the driver shuts down the queues, we end up
queueing the frame. If now somebody removes the key, the key will be
removed from hwaccel and then then driver will be asked to encrypt the
frame with a key index that has been removed. Hence, drivers will need
to be aware that the hw_key_index they are passed might not be under
all circumstances. Most drivers will, however, simply ignore that
condition and encrypt the frame with the selected key anyway, this
only results in a frame being encrypted with a wrong key or dropped
(rightfully) because the key was not valid. There isn't much we can
do about it unless we want to walk the pending frame queue every time
a key is removed and remove all frames that used it.
This race condition, however, will most likely be solved once we add
multiqueue support to mac80211 because then frames will be queued
further up the stack instead of after being processed.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Acked-by: Michael Wu <flamingice@sourmilk.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2007-09-14 11:10:24 -04:00
|
|
|
|
2011-07-15 11:47:34 -04:00
|
|
|
|
2007-09-17 11:56:21 -07:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-04-23 18:52:52 +02:00
|
|
|
|
2008-04-08 15:14:40 -04:00
|
|
|
|
2008-02-23 15:17:10 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-04-08 15:14:40 -04:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-04-22 17:10:38 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-11-16 15:28:55 +01:00
|
|
|
|
|
|
|
|
|
2008-06-25 14:36:27 +03:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2013-07-08 16:55:53 +02:00
|
|
|
|
2008-05-15 12:55:27 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2008-01-24 19:38:38 +01:00
|
|
|
|
2008-07-15 18:44:13 -07:00
|
|
|
|
2011-11-16 15:28:55 +01:00
|
|
|
|
2013-07-08 16:55:53 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-10-21 12:40:02 +02:00
|
|
|
|
|
|
|
|
|
2014-11-21 23:29:14 +01:00
|
|
|
|
2008-10-21 12:40:02 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-04-22 16:14:41 +02:00
|
|
|
|
2008-10-21 12:40:02 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2012-07-23 15:12:51 +02:00
|
|
|
|
2013-04-22 16:14:41 +02:00
|
|
|
|
2008-01-24 19:38:38 +01:00
|
|
|
|
2008-10-21 12:40:02 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-11-16 15:28:55 +01:00
|
|
|
|
2008-07-15 18:44:13 -07:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2008-09-11 00:01:56 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-06-25 14:36:27 +03:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-01-24 19:38:38 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2013-07-08 16:55:53 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-10-11 01:51:51 +02:00
|
|
|
|
2013-07-08 16:55:53 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2008-01-24 19:38:38 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-07-02 09:32:32 +03:00
|
|
|
|
|
|
|
|
|
2008-01-24 19:38:38 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-07-08 16:55:53 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2011-11-21 21:34:30 +01:00
|
|
|
|
|
|
|
|
|
2012-05-28 13:06:25 +01:00
|
|
|
|
2011-11-21 21:34:30 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-04-11 08:47:56 +02:00
|
|
|
|
2013-07-08 16:55:51 +02:00
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-04-11 08:47:56 +02:00
|
|
|
|
2008-01-24 19:38:38 +01:00
|
|
|
|
2013-07-08 16:55:51 +02:00
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2008-06-25 14:36:27 +03:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-01-12 10:42:46 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mac80211: check uapsd state for dynamic power save
To make U-APSD client mode effective, we must not wake up from dynamic power
save when transmitting frames. So if dynamic power save is enabled, it needs
check the queue the transmitted packet is in and decide if we need to wake
up or not.
In a perfect world, where all packets would have correct QoS tags, U-APSD
enabled queues should not trigger wakeup from power save. But in the real
world, where very few packets have correct QoS tags, this won't work. For
example, if only voip class has U-APSD enabled and we send a packet in voip
class, but the packets we receive are in best effort class, we would receive
the packets with the legacy power save method. And that would increase
latencies too much from a voip application point of view.
The workaround is to enable U-APSD for all qeueus and still use dynamic ps
wakeup for all other queues except voip. That way we can still save power
with a voip application and not sacrifice latency. Normal traffic (in
background, best effort or video class) would still trigger wakeup from
dynamic power save.
Signed-off-by: Kalle Valo <kalle.valo@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-01-12 10:42:53 +02:00
|
|
|
|
2010-01-12 10:42:46 +02:00
|
|
|
|
|
|
|
|
|
2015-06-02 21:39:54 +02:00
|
|
|
|
2010-01-12 10:42:46 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-06-02 21:39:54 +02:00
|
|
|
|
2010-01-12 10:42:46 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mac80211: check uapsd state for dynamic power save
To make U-APSD client mode effective, we must not wake up from dynamic power
save when transmitting frames. So if dynamic power save is enabled, it needs
check the queue the transmitted packet is in and decide if we need to wake
up or not.
In a perfect world, where all packets would have correct QoS tags, U-APSD
enabled queues should not trigger wakeup from power save. But in the real
world, where very few packets have correct QoS tags, this won't work. For
example, if only voip class has U-APSD enabled and we send a packet in voip
class, but the packets we receive are in best effort class, we would receive
the packets with the legacy power save method. And that would increase
latencies too much from a voip application point of view.
The workaround is to enable U-APSD for all qeueus and still use dynamic ps
wakeup for all other queues except voip. That way we can still save power
with a voip application and not sacrifice latency. Normal traffic (in
background, best effort or video class) would still trigger wakeup from
dynamic power save.
Signed-off-by: Kalle Valo <kalle.valo@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-01-12 10:42:53 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-03-14 16:15:03 +02:00
|
|
|
|
mac80211: check uapsd state for dynamic power save
To make U-APSD client mode effective, we must not wake up from dynamic power
save when transmitting frames. So if dynamic power save is enabled, it needs
check the queue the transmitted packet is in and decide if we need to wake
up or not.
In a perfect world, where all packets would have correct QoS tags, U-APSD
enabled queues should not trigger wakeup from power save. But in the real
world, where very few packets have correct QoS tags, this won't work. For
example, if only voip class has U-APSD enabled and we send a packet in voip
class, but the packets we receive are in best effort class, we would receive
the packets with the legacy power save method. And that would increase
latencies too much from a voip application point of view.
The workaround is to enable U-APSD for all qeueus and still use dynamic ps
wakeup for all other queues except voip. That way we can still save power
with a voip application and not sacrifice latency. Normal traffic (in
background, best effort or video class) would still trigger wakeup from
dynamic power save.
Signed-off-by: Kalle Valo <kalle.valo@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-01-12 10:42:53 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-03-27 14:18:37 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mac80211: check uapsd state for dynamic power save
To make U-APSD client mode effective, we must not wake up from dynamic power
save when transmitting frames. So if dynamic power save is enabled, it needs
check the queue the transmitted packet is in and decide if we need to wake
up or not.
In a perfect world, where all packets would have correct QoS tags, U-APSD
enabled queues should not trigger wakeup from power save. But in the real
world, where very few packets have correct QoS tags, this won't work. For
example, if only voip class has U-APSD enabled and we send a packet in voip
class, but the packets we receive are in best effort class, we would receive
the packets with the legacy power save method. And that would increase
latencies too much from a voip application point of view.
The workaround is to enable U-APSD for all qeueus and still use dynamic ps
wakeup for all other queues except voip. That way we can still save power
with a voip application and not sacrifice latency. Normal traffic (in
background, best effort or video class) would still trigger wakeup from
dynamic power save.
Signed-off-by: Kalle Valo <kalle.valo@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-01-12 10:42:53 +02:00
|
|
|
|
|
|
|
|
|
2010-01-12 10:42:46 +02:00
|
|
|
|
|
|
|
|
|
2013-02-13 12:25:28 +01:00
|
|
|
|
2014-06-13 16:30:05 +03:00
|
|
|
|
|
|
|
|
|
2011-02-18 17:18:03 +05:30
|
|
|
|
2010-01-12 10:42:46 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-05-03 21:40:08 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-01-12 10:42:46 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2008-06-30 15:10:44 +02:00
|
|
|
|
2008-02-25 16:27:43 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2008-07-15 18:44:13 -07:00
|
|
|
|
2008-05-15 12:55:29 +02:00
|
|
|
|
|
|
|
|
|
2011-09-29 16:04:36 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2008-05-15 12:55:29 +02:00
|
|
|
|
2008-01-31 19:48:20 +01:00
|
|
|
|
2007-09-26 17:53:18 +02:00
|
|
|
|
mac80211: Optimize scans on current operating channel.
This should decrease un-necessary flushes, on/off channel work,
and channel changes in cases where the only scanned channel is
the current operating channel.
* Removes SCAN_OFF_CHANNEL flag, uses SDATA_STATE_OFFCHANNEL
and is-scanning flags instead.
* Add helper method to determine if we are currently configured
for the operating channel.
* Do no blindly go off/on channel in work.c Instead, only call
appropriate on/off code when we really need to change channels.
Always enable offchannel-ps mode when starting work,
and disable it when we are done.
* Consolidate ieee80211_offchannel_stop_station and
ieee80211_offchannel_stop_beaconing, call it
ieee80211_offchannel_stop_vifs instead.
* Accept non-beacon frames when scanning on operating channel.
* Scan state machine optimized to minimize on/off channel
transitions. Also, when going on-channel, go ahead and
re-enable beaconing. We're going to be there for 200ms,
so seems like some useful beaconing could happen.
Always enable offchannel-ps mode when starting software
scan, and disable it when we are done.
* Grab local->mtx earlier in __ieee80211_scan_completed_finish
so that we are protected when calling hw_config(), etc.
* Pass probe-responses up the stack if scanning on local
channel, so that mlme can take a look.
Signed-off-by: Ben Greear <greearb@candelatech.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2011-02-04 11:54:17 -08:00
|
|
|
|
|
|
|
|
|
2009-03-18 14:06:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-01-31 19:48:20 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2014-11-03 10:33:19 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-10-01 11:20:41 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-02-25 16:27:43 +01:00
|
|
|
|
2008-01-31 19:48:20 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2011-09-29 16:04:36 +02:00
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2008-02-25 16:27:43 +01:00
|
|
|
|
2011-09-29 16:04:36 +02:00
|
|
|
|
2008-07-15 18:44:13 -07:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2012-06-22 11:29:50 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2008-01-31 19:48:20 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2011-12-14 12:20:31 +01:00
|
|
|
|
|
|
|
|
|
2012-04-23 19:49:02 +02:00
|
|
|
|
2011-12-14 12:20:31 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2008-01-31 19:48:20 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-09-18 17:29:21 -04:00
|
|
|
|
2012-10-10 12:39:50 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-01-30 18:14:08 +01:00
|
|
|
|
|
|
|
|
|
2012-10-10 12:39:50 -07:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2012-10-10 12:39:50 -07:00
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-10 12:39:50 -07:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2011-09-29 16:04:29 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-02-25 16:27:46 +01:00
|
|
|
|
2011-09-29 16:04:29 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-08 14:39:33 +02:00
|
|
|
|
2011-09-29 16:04:29 +02:00
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2008-02-25 16:27:46 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2012-06-22 11:29:50 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2008-01-31 19:48:20 +01:00
|
|
|
|
2008-02-25 16:27:43 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2008-05-15 12:55:29 +02:00
|
|
|
|
2008-07-15 18:44:13 -07:00
|
|
|
|
2012-10-10 12:39:50 -07:00
|
|
|
|
2008-05-15 12:55:29 +02:00
|
|
|
|
2007-12-19 01:31:25 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-01-30 18:14:08 +01:00
|
|
|
|
2007-12-19 01:31:25 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-01-30 18:14:08 +01:00
|
|
|
|
2012-10-10 12:39:50 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-01-30 18:14:08 +01:00
|
|
|
|
|
|
|
|
|
2012-10-10 12:39:50 -07:00
|
|
|
|
mac80211: make master netdev handling sane
Currently, almost every interface type has a 'bss' pointer
pointing to BSS information. This BSS information, however,
is for a _local_ BSS, not for the BSS we joined, so having
it on a STA mode interface makes little sense, but now they
have it pointing to the master device, which is an AP mode
virtual interface. However, except for some bitrate control
data, this pointer is only used in AP/VLAN modes (for power
saving stations.)
Overall, it is not necessary to even have the master netdev
be a valid virtual interface, and it doesn't have to be on
the list of interfaces either.
This patch changes the master netdev to be special, it now
- no longer is on the list of virtual interfaces, which
lets me remove a lot of tests for that
- no longer has sub_if_data attached, since that isn't used
Additionally, this patch changes some vlan/ap mode handling
that is related to these 'bss' pointers described above (but
in the VLAN case they actually make sense because there they
point to the AP they belong to); it also adds some debugging
code to IEEE80211_DEV_TO_SUB_IF to validate it is not called
on the master netdev any more.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2008-07-09 14:40:34 +02:00
|
|
|
|
2012-10-10 12:39:50 -07:00
|
|
|
|
|
|
|
|
|
mac80211: make master netdev handling sane
Currently, almost every interface type has a 'bss' pointer
pointing to BSS information. This BSS information, however,
is for a _local_ BSS, not for the BSS we joined, so having
it on a STA mode interface makes little sense, but now they
have it pointing to the master device, which is an AP mode
virtual interface. However, except for some bitrate control
data, this pointer is only used in AP/VLAN modes (for power
saving stations.)
Overall, it is not necessary to even have the master netdev
be a valid virtual interface, and it doesn't have to be on
the list of interfaces either.
This patch changes the master netdev to be special, it now
- no longer is on the list of virtual interfaces, which
lets me remove a lot of tests for that
- no longer has sub_if_data attached, since that isn't used
Additionally, this patch changes some vlan/ap mode handling
that is related to these 'bss' pointers described above (but
in the VLAN case they actually make sense because there they
point to the AP they belong to); it also adds some debugging
code to IEEE80211_DEV_TO_SUB_IF to validate it is not called
on the master netdev any more.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2008-07-09 14:40:34 +02:00
|
|
|
|
|
|
|
|
|
2008-07-15 18:44:13 -07:00
|
|
|
|
2008-01-31 19:48:20 +01:00
|
|
|
|
2007-12-19 01:31:25 +01:00
|
|
|
|
2014-07-07 12:01:11 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-06-02 21:39:54 +02:00
|
|
|
|
2013-05-28 17:24:15 +02:00
|
|
|
|
|
|
|
|
|
2007-12-19 01:31:25 +01:00
|
|
|
|
2012-10-10 12:39:50 -07:00
|
|
|
|
2008-01-31 19:48:20 +01:00
|
|
|
|
2007-12-19 01:31:25 +01:00
|
|
|
|
2009-10-29 12:19:21 +01:00
|
|
|
|
2009-08-10 16:04:15 +02:00
|
|
|
|
2009-10-29 12:19:21 +01:00
|
|
|
|
2015-06-02 21:39:54 +02:00
|
|
|
|
2009-08-10 16:04:15 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2009-08-10 16:04:15 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-12-19 01:31:25 +01:00
|
|
|
|
2012-10-10 12:39:50 -07:00
|
|
|
|
2012-06-22 11:29:50 +02:00
|
|
|
|
|
|
|
|
|
2012-10-10 12:39:50 -07:00
|
|
|
|
2009-08-10 16:04:15 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-10 12:39:50 -07:00
|
|
|
|
2009-08-10 16:04:15 +02:00
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2009-01-08 13:32:00 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-09-29 16:04:36 +02:00
|
|
|
|
2009-01-08 13:32:00 +02:00
|
|
|
|
|
|
|
|
|
2014-01-23 16:20:29 +01:00
|
|
|
|
2009-01-08 13:32:00 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-01-31 19:48:20 +01:00
|
|
|
|
2008-02-25 16:27:43 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2008-05-15 12:55:29 +02:00
|
|
|
|
2014-07-07 12:01:11 +02:00
|
|
|
|
2010-04-19 10:12:52 +03:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2012-02-27 12:18:30 +01:00
|
|
|
|
2008-01-31 19:48:20 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2011-09-29 16:04:36 +02:00
|
|
|
|
mac80211: fix station/driver powersave race
It is currently possible to have a race due to the station PS
unblock work like this:
* station goes to sleep with frames buffered in the driver
* driver blocks wakeup
* station wakes up again
* driver flushes/returns frames, and unblocks, which schedules
the unblock work
* unblock work starts to run, and checks that the station is
awake (i.e. that the WLAN_STA_PS_STA flag isn't set)
* we process a received frame with PM=1, setting the flag again
* ieee80211_sta_ps_deliver_wakeup() runs, delivering all frames
to the driver, and then clearing the WLAN_STA_PS_DRIVER and
WLAN_STA_PS_STA flags
In this scenario, mac80211 will think that the station is awake,
while it really is asleep, and any TX'ed frames should be filtered
by the device (it will know that the station is sleeping) but then
passed to mac80211 again, which will not buffer it either as it
thinks the station is awake, and eventually the packets will be
dropped.
Fix this by moving the clearing of the flags to exactly where we
learn about the situation. This creates a problem of reordering,
so introduce another flag indicating that delivery is being done,
this new flag also queues frames and is cleared only while the
spinlock is held (which the queuing code also holds) so that any
concurrent delivery/TX is handled correctly.
Reported-by: Andrei Otcheretianski <andrei.otcheretianski@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
2014-05-27 16:32:27 +02:00
|
|
|
|
|
|
|
|
|
2012-02-27 12:18:30 +01:00
|
|
|
|
2011-09-29 16:04:29 +02:00
|
|
|
|
|
|
|
|
|
2014-07-07 12:01:11 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-06-22 11:29:50 +02:00
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
mac80211: fix AP powersave TX vs. wakeup race
There is a race between the TX path and the STA wakeup: while
a station is sleeping, mac80211 buffers frames until it wakes
up, then the frames are transmitted. However, the RX and TX
path are concurrent, so the packet indicating wakeup can be
processed while a packet is being transmitted.
This can lead to a situation where the buffered frames list
is emptied on the one side, while a frame is being added on
the other side, as the station is still seen as sleeping in
the TX path.
As a result, the newly added frame will not be send anytime
soon. It might be sent much later (and out of order) when the
station goes to sleep and wakes up the next time.
Additionally, it can lead to the crash below.
Fix all this by synchronising both paths with a new lock.
Both path are not fastpath since they handle PS situations.
In a later patch we'll remove the extra skb queue locks to
reduce locking overhead.
BUG: unable to handle kernel
NULL pointer dereference at 000000b0
IP: [<ff6f1791>] ieee80211_report_used_skb+0x11/0x3e0 [mac80211]
*pde = 00000000
Oops: 0000 [#1] SMP DEBUG_PAGEALLOC
EIP: 0060:[<ff6f1791>] EFLAGS: 00210282 CPU: 1
EIP is at ieee80211_report_used_skb+0x11/0x3e0 [mac80211]
EAX: e5900da0 EBX: 00000000 ECX: 00000001 EDX: 00000000
ESI: e41d00c0 EDI: e5900da0 EBP: ebe458e4 ESP: ebe458b0
DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
CR0: 8005003b CR2: 000000b0 CR3: 25a78000 CR4: 000407d0
DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
DR6: ffff0ff0 DR7: 00000400
Process iperf (pid: 3934, ti=ebe44000 task=e757c0b0 task.ti=ebe44000)
iwlwifi 0000:02:00.0: I iwl_pcie_enqueue_hcmd Sending command LQ_CMD (#4e), seq: 0x0903, 92 bytes at 3[3]:9
Stack:
e403b32c ebe458c4 00200002 00200286 e403b338 ebe458cc c10960bb e5900da0
ff76a6ec ebe458d8 00000000 e41d00c0 e5900da0 ebe458f0 ff6f1b75 e403b210
ebe4598c ff723dc1 00000000 ff76a6ec e597c978 e403b758 00000002 00000002
Call Trace:
[<ff6f1b75>] ieee80211_free_txskb+0x15/0x20 [mac80211]
[<ff723dc1>] invoke_tx_handlers+0x1661/0x1780 [mac80211]
[<ff7248a5>] ieee80211_tx+0x75/0x100 [mac80211]
[<ff7249bf>] ieee80211_xmit+0x8f/0xc0 [mac80211]
[<ff72550e>] ieee80211_subif_start_xmit+0x4fe/0xe20 [mac80211]
[<c149ef70>] dev_hard_start_xmit+0x450/0x950
[<c14b9aa9>] sch_direct_xmit+0xa9/0x250
[<c14b9c9b>] __qdisc_run+0x4b/0x150
[<c149f732>] dev_queue_xmit+0x2c2/0xca0
Cc: stable@vger.kernel.org
Reported-by: Yaara Rozenblum <yaara.rozenblum@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Reviewed-by: Stanislaw Gruszka <sgruszka@redhat.com>
[reword commit log, use a separate lock]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
2014-02-20 09:22:11 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mac80211: fix station/driver powersave race
It is currently possible to have a race due to the station PS
unblock work like this:
* station goes to sleep with frames buffered in the driver
* driver blocks wakeup
* station wakes up again
* driver flushes/returns frames, and unblocks, which schedules
the unblock work
* unblock work starts to run, and checks that the station is
awake (i.e. that the WLAN_STA_PS_STA flag isn't set)
* we process a received frame with PM=1, setting the flag again
* ieee80211_sta_ps_deliver_wakeup() runs, delivering all frames
to the driver, and then clearing the WLAN_STA_PS_DRIVER and
WLAN_STA_PS_STA flags
In this scenario, mac80211 will think that the station is awake,
while it really is asleep, and any TX'ed frames should be filtered
by the device (it will know that the station is sleeping) but then
passed to mac80211 again, which will not buffer it either as it
thinks the station is awake, and eventually the packets will be
dropped.
Fix this by moving the clearing of the flags to exactly where we
learn about the situation. This creates a problem of reordering,
so introduce another flag indicating that delivery is being done,
this new flag also queues frames and is cleared only while the
spinlock is held (which the queuing code also holds) so that any
concurrent delivery/TX is handled correctly.
Reported-by: Andrei Otcheretianski <andrei.otcheretianski@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
2014-05-27 16:32:27 +02:00
|
|
|
|
|
|
|
|
|
mac80211: fix AP powersave TX vs. wakeup race
There is a race between the TX path and the STA wakeup: while
a station is sleeping, mac80211 buffers frames until it wakes
up, then the frames are transmitted. However, the RX and TX
path are concurrent, so the packet indicating wakeup can be
processed while a packet is being transmitted.
This can lead to a situation where the buffered frames list
is emptied on the one side, while a frame is being added on
the other side, as the station is still seen as sleeping in
the TX path.
As a result, the newly added frame will not be send anytime
soon. It might be sent much later (and out of order) when the
station goes to sleep and wakes up the next time.
Additionally, it can lead to the crash below.
Fix all this by synchronising both paths with a new lock.
Both path are not fastpath since they handle PS situations.
In a later patch we'll remove the extra skb queue locks to
reduce locking overhead.
BUG: unable to handle kernel
NULL pointer dereference at 000000b0
IP: [<ff6f1791>] ieee80211_report_used_skb+0x11/0x3e0 [mac80211]
*pde = 00000000
Oops: 0000 [#1] SMP DEBUG_PAGEALLOC
EIP: 0060:[<ff6f1791>] EFLAGS: 00210282 CPU: 1
EIP is at ieee80211_report_used_skb+0x11/0x3e0 [mac80211]
EAX: e5900da0 EBX: 00000000 ECX: 00000001 EDX: 00000000
ESI: e41d00c0 EDI: e5900da0 EBP: ebe458e4 ESP: ebe458b0
DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
CR0: 8005003b CR2: 000000b0 CR3: 25a78000 CR4: 000407d0
DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
DR6: ffff0ff0 DR7: 00000400
Process iperf (pid: 3934, ti=ebe44000 task=e757c0b0 task.ti=ebe44000)
iwlwifi 0000:02:00.0: I iwl_pcie_enqueue_hcmd Sending command LQ_CMD (#4e), seq: 0x0903, 92 bytes at 3[3]:9
Stack:
e403b32c ebe458c4 00200002 00200286 e403b338 ebe458cc c10960bb e5900da0
ff76a6ec ebe458d8 00000000 e41d00c0 e5900da0 ebe458f0 ff6f1b75 e403b210
ebe4598c ff723dc1 00000000 ff76a6ec e597c978 e403b758 00000002 00000002
Call Trace:
[<ff6f1b75>] ieee80211_free_txskb+0x15/0x20 [mac80211]
[<ff723dc1>] invoke_tx_handlers+0x1661/0x1780 [mac80211]
[<ff7248a5>] ieee80211_tx+0x75/0x100 [mac80211]
[<ff7249bf>] ieee80211_xmit+0x8f/0xc0 [mac80211]
[<ff72550e>] ieee80211_subif_start_xmit+0x4fe/0xe20 [mac80211]
[<c149ef70>] dev_hard_start_xmit+0x450/0x950
[<c14b9aa9>] sch_direct_xmit+0xa9/0x250
[<c14b9c9b>] __qdisc_run+0x4b/0x150
[<c149f732>] dev_queue_xmit+0x2c2/0xca0
Cc: stable@vger.kernel.org
Reported-by: Yaara Rozenblum <yaara.rozenblum@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Reviewed-by: Stanislaw Gruszka <sgruszka@redhat.com>
[reword commit log, use a separate lock]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
2014-02-20 09:22:11 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-09-29 16:04:29 +02:00
|
|
|
|
|
|
|
|
|
2012-06-22 11:29:50 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-08 14:39:33 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2008-02-20 11:21:35 +01:00
|
|
|
|
2008-05-15 12:55:29 +02:00
|
|
|
|
2009-07-14 00:33:34 +02:00
|
|
|
|
2009-06-07 21:58:37 +02:00
|
|
|
|
2014-01-09 01:45:28 +01:00
|
|
|
|
2011-09-29 16:04:29 +02:00
|
|
|
|
mac80211: fix AP powersave TX vs. wakeup race
There is a race between the TX path and the STA wakeup: while
a station is sleeping, mac80211 buffers frames until it wakes
up, then the frames are transmitted. However, the RX and TX
path are concurrent, so the packet indicating wakeup can be
processed while a packet is being transmitted.
This can lead to a situation where the buffered frames list
is emptied on the one side, while a frame is being added on
the other side, as the station is still seen as sleeping in
the TX path.
As a result, the newly added frame will not be send anytime
soon. It might be sent much later (and out of order) when the
station goes to sleep and wakes up the next time.
Additionally, it can lead to the crash below.
Fix all this by synchronising both paths with a new lock.
Both path are not fastpath since they handle PS situations.
In a later patch we'll remove the extra skb queue locks to
reduce locking overhead.
BUG: unable to handle kernel
NULL pointer dereference at 000000b0
IP: [<ff6f1791>] ieee80211_report_used_skb+0x11/0x3e0 [mac80211]
*pde = 00000000
Oops: 0000 [#1] SMP DEBUG_PAGEALLOC
EIP: 0060:[<ff6f1791>] EFLAGS: 00210282 CPU: 1
EIP is at ieee80211_report_used_skb+0x11/0x3e0 [mac80211]
EAX: e5900da0 EBX: 00000000 ECX: 00000001 EDX: 00000000
ESI: e41d00c0 EDI: e5900da0 EBP: ebe458e4 ESP: ebe458b0
DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
CR0: 8005003b CR2: 000000b0 CR3: 25a78000 CR4: 000407d0
DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
DR6: ffff0ff0 DR7: 00000400
Process iperf (pid: 3934, ti=ebe44000 task=e757c0b0 task.ti=ebe44000)
iwlwifi 0000:02:00.0: I iwl_pcie_enqueue_hcmd Sending command LQ_CMD (#4e), seq: 0x0903, 92 bytes at 3[3]:9
Stack:
e403b32c ebe458c4 00200002 00200286 e403b338 ebe458cc c10960bb e5900da0
ff76a6ec ebe458d8 00000000 e41d00c0 e5900da0 ebe458f0 ff6f1b75 e403b210
ebe4598c ff723dc1 00000000 ff76a6ec e597c978 e403b758 00000002 00000002
Call Trace:
[<ff6f1b75>] ieee80211_free_txskb+0x15/0x20 [mac80211]
[<ff723dc1>] invoke_tx_handlers+0x1661/0x1780 [mac80211]
[<ff7248a5>] ieee80211_tx+0x75/0x100 [mac80211]
[<ff7249bf>] ieee80211_xmit+0x8f/0xc0 [mac80211]
[<ff72550e>] ieee80211_subif_start_xmit+0x4fe/0xe20 [mac80211]
[<c149ef70>] dev_hard_start_xmit+0x450/0x950
[<c14b9aa9>] sch_direct_xmit+0xa9/0x250
[<c14b9c9b>] __qdisc_run+0x4b/0x150
[<c149f732>] dev_queue_xmit+0x2c2/0xca0
Cc: stable@vger.kernel.org
Reported-by: Yaara Rozenblum <yaara.rozenblum@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Reviewed-by: Stanislaw Gruszka <sgruszka@redhat.com>
[reword commit log, use a separate lock]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
2014-02-20 09:22:11 +02:00
|
|
|
|
2010-04-19 10:12:52 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-09-29 16:04:27 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-01-31 19:48:20 +01:00
|
|
|
|
2012-06-22 11:29:50 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2008-01-31 19:48:20 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2008-06-30 15:10:44 +02:00
|
|
|
|
2008-02-25 16:27:43 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2008-02-25 16:27:43 +01:00
|
|
|
|
2008-01-31 19:48:20 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2008-02-25 16:27:43 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-08-27 14:26:54 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-07-02 18:09:12 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mac80211: Send EAPOL frames at lowest rate
The current minstrel_ht rate control behavior is somewhat optimistic in
trying to find optimum TX rate. While this is usually fine for normal
Data frames, there are cases where a more conservative set of retry
parameters would be beneficial to make the connection more robust.
EAPOL frames are critical to the authentication and especially the
EAPOL-Key message 4/4 (the last message in the 4-way handshake) is
important to get through to the AP. If that message is lost, the only
recovery mechanism in many cases is to reassociate with the AP and start
from scratch. This can often be avoided by trying to send the frame with
more conservative rate and/or with more link layer retries.
In most cases, minstrel_ht is currently using the initial EAPOL-Key
frames for probing higher rates and this results in only five link layer
transmission attempts (one at high(ish) MCS and four at MCS0). While
this works with most APs, it looks like there are some deployed APs that
may have issues with the EAPOL frames using HT MCS immediately after
association. Similarly, there may be issues in cases where the signal
strength or radio environment is not good enough to be able to get
frames through even at couple of MCS 0 tries.
The best approach for this would likely to be to reduce the TX rate for
the last rate (3rd rate parameter in the set) to a low basic rate (say,
6 Mbps on 5 GHz and 2 or 5.5 Mbps on 2.4 GHz), but doing that cleanly
requires some more effort. For now, we can start with a simple one-liner
that forces the minimum rate to be used for EAPOL frames similarly how
the TX rate is selected for the IEEE 802.11 Management frames. This does
result in a small extra latency added to the cases where the AP would be
able to receive the higher rate, but taken into account how small number
of EAPOL frames are used, this is likely to be insignificant. A future
optimization in the minstrel_ht design can also allow this patch to be
reverted to get back to the more optimized initial TX rate.
It should also be noted that many drivers that do not use minstrel as
the rate control algorithm are already doing similar workarounds by
forcing the lowest TX rate to be used for EAPOL frames.
Cc: stable@vger.kernel.org
Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
Tested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
2015-02-26 15:50:50 +02:00
|
|
|
|
2013-07-02 18:09:12 +02:00
|
|
|
|
2010-08-27 14:26:54 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-06-30 15:10:44 +02:00
|
|
|
|
2008-02-25 16:27:43 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2012-07-04 18:10:07 +02:00
|
|
|
|
2008-05-15 12:55:29 +02:00
|
|
|
|
2008-07-15 18:44:13 -07:00
|
|
|
|
[MAC80211]: fix race conditions with keys
During receive processing, we select the key long before using it and
because there's no locking it is possible that we kfree() the key
after having selected it but before using it for crypto operations.
Obviously, this is bad.
Secondly, during transmit processing, there are two possible races: We
have a similar race between select_key() and using it for encryption,
but we also have a race here between select_key() and hardware
encryption (both when a key is removed.)
This patch solves these issues by using RCU: when a key is to be freed,
we first remove the pointer from the appropriate places (sdata->keys,
sdata->default_key, sta->key) using rcu_assign_pointer() and then
synchronize_rcu(). Then, we can safely kfree() the key and remove it
from the hardware. There's a window here where the hardware may still
be using it for decryption, but we can't work around that without having
two hardware callbacks, one to disable the key for RX and one to disable
it for TX; but the worst thing that will happen is that we receive a
packet decrypted that we don't find a key for any more and then drop it.
When we add a key, we first need to upload it to the hardware and then,
using rcu_assign_pointer() again, link it into our structures.
In the code using keys (TX/RX paths) we use rcu_dereference() to get the
key and enclose the whole tx/rx section in a rcu_read_lock() ...
rcu_read_unlock() block. Because we've uploaded the key to hardware
before linking it into internal structures, we can guarantee that it is
valid once get to into tx().
One possible race condition remains, however: when we have hardware
acceleration enabled and the driver shuts down the queues, we end up
queueing the frame. If now somebody removes the key, the key will be
removed from hwaccel and then then driver will be asked to encrypt the
frame with a key index that has been removed. Hence, drivers will need
to be aware that the hw_key_index they are passed might not be under
all circumstances. Most drivers will, however, simply ignore that
condition and encrypt the frame with the selected key anyway, this
only results in a frame being encrypted with a wrong key or dropped
(rightfully) because the key was not valid. There isn't much we can
do about it unless we want to walk the pending frame queue every time
a key is removed and remove all frames that used it.
This race condition, however, will most likely be solved once we add
multiqueue support to mac80211 because then frames will be queued
further up the stack instead of after being processed.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Acked-by: Michael Wu <flamingice@sourmilk.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2007-09-14 11:10:24 -04:00
|
|
|
|
2009-06-17 17:43:56 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2013-03-24 14:23:27 +02:00
|
|
|
|
|
|
|
|
|
[MAC80211]: fix race conditions with keys
During receive processing, we select the key long before using it and
because there's no locking it is possible that we kfree() the key
after having selected it but before using it for crypto operations.
Obviously, this is bad.
Secondly, during transmit processing, there are two possible races: We
have a similar race between select_key() and using it for encryption,
but we also have a race here between select_key() and hardware
encryption (both when a key is removed.)
This patch solves these issues by using RCU: when a key is to be freed,
we first remove the pointer from the appropriate places (sdata->keys,
sdata->default_key, sta->key) using rcu_assign_pointer() and then
synchronize_rcu(). Then, we can safely kfree() the key and remove it
from the hardware. There's a window here where the hardware may still
be using it for decryption, but we can't work around that without having
two hardware callbacks, one to disable the key for RX and one to disable
it for TX; but the worst thing that will happen is that we receive a
packet decrypted that we don't find a key for any more and then drop it.
When we add a key, we first need to upload it to the hardware and then,
using rcu_assign_pointer() again, link it into our structures.
In the code using keys (TX/RX paths) we use rcu_dereference() to get the
key and enclose the whole tx/rx section in a rcu_read_lock() ...
rcu_read_unlock() block. Because we've uploaded the key to hardware
before linking it into internal structures, we can guarantee that it is
valid once get to into tx().
One possible race condition remains, however: when we have hardware
acceleration enabled and the driver shuts down the queues, we end up
queueing the frame. If now somebody removes the key, the key will be
removed from hwaccel and then then driver will be asked to encrypt the
frame with a key index that has been removed. Hence, drivers will need
to be aware that the hw_key_index they are passed might not be under
all circumstances. Most drivers will, however, simply ignore that
condition and encrypt the frame with the selected key anyway, this
only results in a frame being encrypted with a wrong key or dropped
(rightfully) because the key was not valid. There isn't much we can
do about it unless we want to walk the pending frame queue every time
a key is removed and remove all frames that used it.
This race condition, however, will most likely be solved once we add
multiqueue support to mac80211 because then frames will be queued
further up the stack instead of after being processed.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Acked-by: Michael Wu <flamingice@sourmilk.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2007-09-14 11:10:24 -04:00
|
|
|
|
2009-01-08 13:32:02 +02:00
|
|
|
|
2010-03-29 23:35:23 -07:00
|
|
|
|
2014-01-23 16:20:29 +01:00
|
|
|
|
2009-01-08 13:32:02 +02:00
|
|
|
|
|
|
|
|
|
2010-12-09 19:49:02 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[MAC80211]: fix race conditions with keys
During receive processing, we select the key long before using it and
because there's no locking it is possible that we kfree() the key
after having selected it but before using it for crypto operations.
Obviously, this is bad.
Secondly, during transmit processing, there are two possible races: We
have a similar race between select_key() and using it for encryption,
but we also have a race here between select_key() and hardware
encryption (both when a key is removed.)
This patch solves these issues by using RCU: when a key is to be freed,
we first remove the pointer from the appropriate places (sdata->keys,
sdata->default_key, sta->key) using rcu_assign_pointer() and then
synchronize_rcu(). Then, we can safely kfree() the key and remove it
from the hardware. There's a window here where the hardware may still
be using it for decryption, but we can't work around that without having
two hardware callbacks, one to disable the key for RX and one to disable
it for TX; but the worst thing that will happen is that we receive a
packet decrypted that we don't find a key for any more and then drop it.
When we add a key, we first need to upload it to the hardware and then,
using rcu_assign_pointer() again, link it into our structures.
In the code using keys (TX/RX paths) we use rcu_dereference() to get the
key and enclose the whole tx/rx section in a rcu_read_lock() ...
rcu_read_unlock() block. Because we've uploaded the key to hardware
before linking it into internal structures, we can guarantee that it is
valid once get to into tx().
One possible race condition remains, however: when we have hardware
acceleration enabled and the driver shuts down the queues, we end up
queueing the frame. If now somebody removes the key, the key will be
removed from hwaccel and then then driver will be asked to encrypt the
frame with a key index that has been removed. Hence, drivers will need
to be aware that the hw_key_index they are passed might not be under
all circumstances. Most drivers will, however, simply ignore that
condition and encrypt the frame with the selected key anyway, this
only results in a frame being encrypted with a wrong key or dropped
(rightfully) because the key was not valid. There isn't much we can
do about it unless we want to walk the pending frame queue every time
a key is removed and remove all frames that used it.
This race condition, however, will most likely be solved once we add
multiqueue support to mac80211 because then frames will be queued
further up the stack instead of after being processed.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Acked-by: Michael Wu <flamingice@sourmilk.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2007-09-14 11:10:24 -04:00
|
|
|
|
2015-03-20 11:37:36 +01:00
|
|
|
|
2012-07-04 18:10:07 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2010-01-17 01:47:58 +01:00
|
|
|
|
|
|
|
|
|
2007-09-17 01:29:25 -04:00
|
|
|
|
2007-12-18 15:27:47 +01:00
|
|
|
|
2010-08-10 09:46:38 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-07-15 18:44:13 -07:00
|
|
|
|
2007-12-18 15:27:47 +01:00
|
|
|
|
|
|
|
|
|
2010-08-10 09:46:38 +02:00
|
|
|
|
2015-01-24 19:52:07 +02:00
|
|
|
|
2015-01-24 19:52:06 +02:00
|
|
|
|
|
|
|
|
|
2009-01-08 13:32:00 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-01-23 20:27:14 +02:00
|
|
|
|
|
|
|
|
|
2012-09-04 17:08:23 +02:00
|
|
|
|
2010-01-23 20:27:14 +02:00
|
|
|
|
2009-01-08 13:32:00 +02:00
|
|
|
|
2010-08-10 09:46:38 +02:00
|
|
|
|
2015-01-24 19:52:08 +02:00
|
|
|
|
2015-01-24 19:52:09 +02:00
|
|
|
|
|
|
|
|
|
2009-01-08 13:32:02 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-12-18 15:27:47 +01:00
|
|
|
|
2010-01-17 01:47:58 +01:00
|
|
|
|
2013-01-29 11:41:38 +01:00
|
|
|
|
|
|
|
|
|
2011-07-12 12:30:59 +02:00
|
|
|
|
|
|
|
|
|
2010-01-22 22:07:59 +01:00
|
|
|
|
2010-01-25 11:36:16 +01:00
|
|
|
|
2010-01-17 01:47:58 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2008-01-31 19:48:20 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2008-06-30 15:10:44 +02:00
|
|
|
|
2008-02-25 16:27:43 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2008-05-15 12:55:29 +02:00
|
|
|
|
2008-10-21 12:40:02 +02:00
|
|
|
|
|
|
|
|
|
2010-04-27 11:15:12 -07:00
|
|
|
|
2008-10-21 12:40:02 +02:00
|
|
|
|
2013-04-22 16:14:41 +02:00
|
|
|
|
2011-09-29 16:04:36 +02:00
|
|
|
|
2008-10-21 12:40:02 +02:00
|
|
|
|
|
|
|
|
|
2008-01-24 19:38:38 +01:00
|
|
|
|
2012-07-23 15:12:51 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2010-04-27 11:15:12 -07:00
|
|
|
|
2009-04-20 18:39:05 +02:00
|
|
|
|
2007-09-26 17:53:18 +02:00
|
|
|
|
2008-10-21 12:40:02 +02:00
|
|
|
|
2012-02-26 11:24:35 +01:00
|
|
|
|
2008-10-21 12:40:02 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-07-23 15:12:51 +02:00
|
|
|
|
2010-01-06 13:09:08 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-04-16 13:38:42 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-11-11 15:07:23 +01:00
|
|
|
|
2011-11-24 17:15:20 -08:00
|
|
|
|
2015-08-05 16:02:28 +02:00
|
|
|
|
|
|
|
|
|
2007-09-26 17:53:18 +02:00
|
|
|
|
2008-10-21 12:40:02 +02:00
|
|
|
|
2009-04-20 18:39:05 +02:00
|
|
|
|
2013-04-22 16:14:41 +02:00
|
|
|
|
2008-10-21 12:40:02 +02:00
|
|
|
|
|
|
|
|
|
2013-04-22 16:14:41 +02:00
|
|
|
|
2013-04-16 13:38:43 +02:00
|
|
|
|
|
|
|
|
|
2008-10-21 12:40:02 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-09-29 16:04:36 +02:00
|
|
|
|
2013-04-22 16:14:41 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-10-21 12:40:02 +02:00
|
|
|
|
2011-09-29 16:04:36 +02:00
|
|
|
|
|
|
|
|
|
2008-10-21 12:40:02 +02:00
|
|
|
|
2009-07-16 10:15:09 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-09-29 16:04:36 +02:00
|
|
|
|
2009-07-16 10:15:09 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-11-25 17:46:19 +01:00
|
|
|
|
2012-07-23 15:12:51 +02:00
|
|
|
|
2009-07-16 10:15:09 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-10-21 12:40:02 +02:00
|
|
|
|
|
|
|
|
|
2013-04-22 16:14:41 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-10-21 12:40:02 +02:00
|
|
|
|
2010-12-01 16:34:45 +01:00
|
|
|
|
2013-04-22 16:14:41 +02:00
|
|
|
|
2010-12-01 16:34:45 +01:00
|
|
|
|
2015-10-16 17:54:47 +02:00
|
|
|
|
2010-12-01 16:34:45 +01:00
|
|
|
|
2015-10-16 17:54:47 +02:00
|
|
|
|
2008-10-21 12:40:02 +02:00
|
|
|
|
2013-04-22 16:14:41 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-10-21 12:40:02 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-04-23 19:36:14 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-01-31 19:48:20 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2015-03-27 21:30:37 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-07-10 11:21:26 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-09-12 22:52:47 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-07-14 00:33:34 +02:00
|
|
|
|
2008-09-12 22:52:47 +02:00
|
|
|
|
|
|
|
|
|
2008-07-10 11:21:26 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-09-29 16:04:41 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-10-10 13:21:59 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-08-23 09:35:38 -04:00
|
|
|
|
|
|
|
|
|
2008-10-10 13:21:59 +02:00
|
|
|
|
2013-08-23 09:35:38 -04:00
|
|
|
|
|
|
|
|
|
2008-10-10 13:21:59 +02:00
|
|
|
|
2008-07-10 11:21:26 +02:00
|
|
|
|
2008-10-10 13:21:59 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-11-21 14:26:31 +01:00
|
|
|
|
2015-10-16 17:54:47 +02:00
|
|
|
|
2008-07-10 11:21:26 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-10-16 17:54:47 +02:00
|
|
|
|
2008-07-10 11:21:26 +02:00
|
|
|
|
2015-03-27 21:30:37 +01:00
|
|
|
|
|
|
|
|
|
2008-07-10 11:21:26 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-11-16 15:28:55 +01:00
|
|
|
|
2009-03-23 17:28:35 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-11-16 15:28:55 +01:00
|
|
|
|
2011-11-16 15:28:56 +01:00
|
|
|
|
2011-11-16 15:28:55 +01:00
|
|
|
|
2009-03-23 17:28:35 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-11-16 15:28:55 +01:00
|
|
|
|
|
|
|
|
|
2009-03-23 17:28:35 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-03-24 14:23:27 +02:00
|
|
|
|
2009-03-23 17:28:35 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-11-16 15:28:55 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-03-24 14:23:27 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-03-23 17:28:35 +01:00
|
|
|
|
|
|
|
|
|
2011-11-16 15:28:56 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-03-23 17:28:35 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-11-16 15:28:55 +01:00
|
|
|
|
2014-02-01 00:16:23 +01:00
|
|
|
|
2009-03-23 17:28:35 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-06-30 15:10:44 +02:00
|
|
|
|
2008-05-15 12:55:28 +02:00
|
|
|
|
|
|
|
|
|
2009-03-23 17:28:35 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-04-20 18:39:05 +02:00
|
|
|
|
2009-03-23 17:28:35 +01:00
|
|
|
|
|
|
|
|
|
2008-05-15 12:55:28 +02:00
|
|
|
|
2011-11-16 15:28:55 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-10-07 14:01:25 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-05-15 12:55:28 +02:00
|
|
|
|
|
|
|
|
|
2008-05-17 00:57:13 +02:00
|
|
|
|
|
|
|
|
|
2009-06-17 17:43:56 +02:00
|
|
|
|
2008-06-12 15:42:29 +03:00
|
|
|
|
2008-05-17 00:57:13 +02:00
|
|
|
|
2008-10-24 09:55:27 +05:30
|
|
|
|
2008-05-17 00:57:13 +02:00
|
|
|
|
|
|
|
|
|
2008-06-22 16:45:27 -07:00
|
|
|
|
2008-05-15 12:55:28 +02:00
|
|
|
|
2011-10-07 14:01:25 +02:00
|
|
|
|
2009-04-29 23:35:56 +02:00
|
|
|
|
2009-03-23 17:28:35 +01:00
|
|
|
|
2008-05-15 12:55:28 +02:00
|
|
|
|
2009-03-23 17:28:35 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-11-16 15:28:55 +01:00
|
|
|
|
2009-03-23 17:28:35 +01:00
|
|
|
|
2008-05-15 12:55:28 +02:00
|
|
|
|
2009-03-23 17:28:35 +01:00
|
|
|
|
|
|
|
|
|
2011-11-16 15:28:55 +01:00
|
|
|
|
|
|
|
|
|
2009-03-23 17:28:35 +01:00
|
|
|
|
2008-05-15 12:55:28 +02:00
|
|
|
|
2009-03-23 17:28:35 +01:00
|
|
|
|
|
|
|
|
|
2008-10-21 12:40:02 +02:00
|
|
|
|
2011-11-16 15:28:55 +01:00
|
|
|
|
2009-03-23 17:28:35 +01:00
|
|
|
|
2008-10-21 12:40:02 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-07-02 19:46:16 +02:00
|
|
|
|
2008-10-21 12:40:02 +02:00
|
|
|
|
2009-03-23 17:28:35 +01:00
|
|
|
|
|
|
|
|
|
2008-10-21 12:40:02 +02:00
|
|
|
|
2009-03-23 17:28:35 +01:00
|
|
|
|
|
|
|
|
|
2011-11-16 15:28:55 +01:00
|
|
|
|
2008-05-15 12:55:28 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-08-10 16:01:54 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-11-16 15:28:55 +01:00
|
|
|
|
2013-02-05 10:55:21 +01:00
|
|
|
|
2009-08-10 16:01:54 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-11-16 15:28:55 +01:00
|
|
|
|
2013-02-05 10:55:21 +01:00
|
|
|
|
2015-10-16 17:54:47 +02:00
|
|
|
|
2011-11-16 15:28:55 +01:00
|
|
|
|
2013-02-05 10:55:21 +01:00
|
|
|
|
2015-10-16 17:54:47 +02:00
|
|
|
|
2009-08-10 16:01:54 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-06-30 15:10:44 +02:00
|
|
|
|
2008-05-15 12:55:28 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-08-10 09:46:38 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-05-15 12:55:28 +02:00
|
|
|
|
2010-08-10 09:46:38 +02:00
|
|
|
|
2008-05-15 12:55:28 +02:00
|
|
|
|
2010-08-10 09:46:38 +02:00
|
|
|
|
2015-01-24 19:52:07 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-08-10 09:46:38 +02:00
|
|
|
|
2009-01-08 13:32:02 +02:00
|
|
|
|
2015-01-24 19:52:08 +02:00
|
|
|
|
|
|
|
|
|
2015-01-24 19:52:09 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-24 19:52:06 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-08-27 14:26:52 +03:00
|
|
|
|
2012-01-16 15:18:59 +02:00
|
|
|
|
2008-05-15 12:55:28 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-06-30 15:10:44 +02:00
|
|
|
|
2008-06-25 14:36:27 +03:00
|
|
|
|
|
|
|
|
|
2011-11-16 15:28:55 +01:00
|
|
|
|
2009-03-23 17:28:35 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-06-25 14:36:27 +03:00
|
|
|
|
2011-11-16 15:28:55 +01:00
|
|
|
|
2009-03-23 17:28:35 +01:00
|
|
|
|
2009-05-19 19:25:58 +03:00
|
|
|
|
|
|
|
|
|
2011-11-16 15:28:55 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-03-23 17:28:35 +01:00
|
|
|
|
2008-06-25 14:36:27 +03:00
|
|
|
|
2009-03-23 17:28:35 +01:00
|
|
|
|
2011-11-16 15:28:55 +01:00
|
|
|
|
|
|
|
|
|
2008-06-25 14:36:27 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2010-06-10 10:21:39 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-11-22 21:50:28 -05:00
|
|
|
|
2012-03-07 17:20:30 +01:00
|
|
|
|
2010-06-10 10:21:39 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-11-22 21:50:28 -05:00
|
|
|
|
2010-06-10 10:21:42 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-03-27 21:30:37 +01:00
|
|
|
|
2010-06-10 10:21:39 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-05-13 14:15:49 +02:00
|
|
|
|
2010-06-10 10:21:39 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-11-22 21:50:28 -05:00
|
|
|
|
2010-06-10 10:21:39 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-07-02 09:59:56 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-06-10 10:21:39 +02:00
|
|
|
|
2012-03-07 17:20:30 +01:00
|
|
|
|
|
|
|
|
|
2010-06-10 10:21:39 +02:00
|
|
|
|
|
|
|
|
|
2012-03-07 17:20:30 +01:00
|
|
|
|
|
|
|
|
|
2012-10-08 14:39:33 +02:00
|
|
|
|
2010-06-10 10:21:39 +02:00
|
|
|
|
|
|
|
|
|
2011-11-22 21:50:28 -05:00
|
|
|
|
|
|
|
|
|
2012-03-18 22:58:06 +01:00
|
|
|
|
2011-11-22 21:50:28 -05:00
|
|
|
|
2010-06-10 10:21:39 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-09-26 17:53:18 +02:00
|
|
|
|
|
|
|
|
|
2015-03-20 14:18:27 +01:00
|
|
|
|
|
|
|
|
|
2007-09-26 17:53:18 +02:00
|
|
|
|
2008-01-31 19:48:20 +01:00
|
|
|
|
2009-06-17 17:43:56 +02:00
|
|
|
|
|
|
|
|
|
2015-03-20 14:18:27 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2009-06-17 17:43:56 +02:00
|
|
|
|
2007-09-26 17:53:18 +02:00
|
|
|
|
2008-05-15 12:55:29 +02:00
|
|
|
|
2011-10-07 14:01:24 +02:00
|
|
|
|
2010-06-10 10:21:39 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-06-17 17:43:56 +02:00
|
|
|
|
2011-11-16 15:28:55 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2009-03-23 17:28:41 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-09-26 17:53:18 +02:00
|
|
|
|
|
|
|
|
|
2015-03-20 14:18:27 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-01-08 18:15:13 +01:00
|
|
|
|
2007-09-26 17:53:18 +02:00
|
|
|
|
2009-03-23 17:28:41 +01:00
|
|
|
|
2011-09-29 16:04:41 +02:00
|
|
|
|
2015-06-02 21:39:54 +02:00
|
|
|
|
|
|
|
|
|
2009-03-23 17:28:41 +01:00
|
|
|
|
|
|
|
|
|
2008-10-24 09:55:27 +05:30
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-06-10 10:21:39 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-03-23 17:28:41 +01:00
|
|
|
|
2010-06-10 10:21:39 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-10-24 09:55:27 +05:30
|
|
|
|
|
|
|
|
|
2007-08-28 17:01:54 -04:00
|
|
|
|
2008-02-25 16:27:43 +01:00
|
|
|
|
2008-05-15 12:55:29 +02:00
|
|
|
|
2011-11-18 14:20:42 +01:00
|
|
|
|
2008-02-25 16:27:43 +01:00
|
|
|
|
2007-09-26 17:53:18 +02:00
|
|
|
|
2011-10-07 14:01:25 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-09-26 17:53:18 +02:00
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2008-05-15 12:55:29 +02:00
|
|
|
|
2015-09-24 14:59:49 +02:00
|
|
|
|
2008-05-15 12:55:29 +02:00
|
|
|
|
2015-09-24 14:59:49 +02:00
|
|
|
|
|
|
|
|
|
2007-09-26 17:53:18 +02:00
|
|
|
|
2008-05-15 12:55:29 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2008-01-31 19:48:20 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2015-03-27 21:30:37 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-11-16 16:02:47 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2011-11-16 15:28:55 +01:00
|
|
|
|
2009-06-17 17:43:56 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2011-11-16 15:28:55 +01:00
|
|
|
|
2012-04-03 16:28:50 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-08 14:39:33 +02:00
|
|
|
|
2012-04-03 16:28:50 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-06-17 17:43:56 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-02-24 14:42:06 +01:00
|
|
|
|
2013-02-11 11:21:07 -06:00
|
|
|
|
2013-02-25 14:58:05 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-02-11 11:21:07 -06:00
|
|
|
|
2013-02-25 14:58:05 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-02-11 11:21:07 -06:00
|
|
|
|
2013-02-25 14:58:05 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-02-11 11:21:07 -06:00
|
|
|
|
2011-02-24 14:42:06 +01:00
|
|
|
|
2009-06-17 17:43:56 +02:00
|
|
|
|
2008-07-24 18:46:44 +03:00
|
|
|
|
2011-11-16 16:02:47 +01:00
|
|
|
|
2010-07-22 17:11:28 +02:00
|
|
|
|
2011-11-16 15:28:55 +01:00
|
|
|
|
2015-03-27 21:30:37 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2009-03-23 17:28:35 +01:00
|
|
|
|
2011-11-16 16:02:47 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-07-14 23:39:20 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-04-03 14:35:57 +02:00
|
|
|
|
2012-04-03 16:28:50 +02:00
|
|
|
|
2012-04-03 14:35:57 +02:00
|
|
|
|
2012-04-03 16:28:50 +02:00
|
|
|
|
|
|
|
|
|
2015-06-02 21:39:54 +02:00
|
|
|
|
2012-04-03 16:28:50 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-04-03 14:35:57 +02:00
|
|
|
|
2011-11-16 16:02:47 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-07-02 15:40:18 +02:00
|
|
|
|
|
|
|
|
|
2011-11-16 16:02:47 +01:00
|
|
|
|
2011-11-16 15:28:57 +01:00
|
|
|
|
|
|
|
|
|
2011-11-24 14:47:36 +01:00
|
|
|
|
2011-11-16 15:28:55 +01:00
|
|
|
|
2011-11-16 16:02:47 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2008-06-20 01:22:30 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-11-16 15:28:55 +01:00
|
|
|
|
2008-06-20 01:22:30 +02:00
|
|
|
|
|
|
|
|
|
2009-10-29 08:43:48 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-06-20 01:22:30 +02:00
|
|
|
|
2010-01-12 10:42:46 +02:00
|
|
|
|
2009-10-29 08:43:48 +01:00
|
|
|
|
|
|
|
|
|
2010-08-27 14:26:54 +03:00
|
|
|
|
2009-10-29 08:43:48 +01:00
|
|
|
|
2015-06-02 21:39:54 +02:00
|
|
|
|
2009-11-17 18:18:36 +01:00
|
|
|
|
2010-01-17 01:47:59 +01:00
|
|
|
|
2011-12-02 22:08:52 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-01-17 01:47:59 +01:00
|
|
|
|
2011-12-02 22:08:52 +01:00
|
|
|
|
2010-01-17 01:47:59 +01:00
|
|
|
|
|
|
|
|
|
2009-10-29 08:43:48 +01:00
|
|
|
|
|
|
|
|
|
2008-06-30 15:10:44 +02:00
|
|
|
|
2009-10-29 08:43:48 +01:00
|
|
|
|
|
|
|
|
|
2015-06-02 21:39:54 +02:00
|
|
|
|
2011-01-31 22:29:12 +02:00
|
|
|
|
2008-06-30 15:10:44 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-06-20 01:22:30 +02:00
|
|
|
|
2008-06-28 03:15:03 +03:00
|
|
|
|
2011-11-16 15:28:55 +01:00
|
|
|
|
2012-10-08 14:39:33 +02:00
|
|
|
|
2011-11-16 15:28:55 +01:00
|
|
|
|
2012-11-10 03:44:14 +01:00
|
|
|
|
2008-06-20 01:22:30 +02:00
|
|
|
|
|
|
|
|
|
2008-06-28 03:15:03 +03:00
|
|
|
|
2008-06-20 01:22:30 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-10-14 18:01:00 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-03-01 09:10:12 +02:00
|
|
|
|
2013-10-14 18:01:00 +02:00
|
|
|
|
2015-03-20 14:18:27 +01:00
|
|
|
|
2013-10-14 18:01:00 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-03-01 09:10:12 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-10-14 18:01:00 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-02-24 14:42:06 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-03-20 14:18:27 +01:00
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2009-06-17 17:43:56 +02:00
|
|
|
|
2008-02-25 16:27:43 +01:00
|
|
|
|
2008-06-20 01:22:30 +02:00
|
|
|
|
2008-05-15 12:55:29 +02:00
|
|
|
|
2011-02-24 14:42:06 +01:00
|
|
|
|
2011-11-16 15:28:57 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-02-24 14:42:06 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2007-09-26 17:53:18 +02:00
|
|
|
|
2011-11-16 15:28:57 +01:00
|
|
|
|
2015-03-20 14:18:27 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2009-03-23 17:28:41 +01:00
|
|
|
|
2012-10-08 14:39:33 +02:00
|
|
|
|
2012-07-26 17:24:39 +02:00
|
|
|
|
2009-03-23 17:28:41 +01:00
|
|
|
|
2012-07-26 17:24:39 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2012-04-03 16:28:50 +02:00
|
|
|
|
|
|
|
|
|
2015-06-02 21:39:54 +02:00
|
|
|
|
2012-04-03 16:28:50 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-02-24 14:42:06 +01:00
|
|
|
|
2011-11-16 15:28:57 +01:00
|
|
|
|
|
|
|
|
|
2012-07-26 17:24:39 +02:00
|
|
|
|
2011-02-24 14:42:06 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-06-28 18:41:37 +05:30
|
|
|
|
2008-05-29 10:38:53 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-06-28 18:41:37 +05:30
|
|
|
|
2008-05-29 10:38:53 +02:00
|
|
|
|
|
|
|
|
|
2011-06-28 18:41:37 +05:30
|
|
|
|
2008-05-29 10:38:53 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-07-29 15:39:14 +03:00
|
|
|
|
2015-06-02 21:39:54 +02:00
|
|
|
|
2014-07-29 15:39:14 +03:00
|
|
|
|
2015-03-21 15:25:43 +01:00
|
|
|
|
2008-05-29 10:38:53 +02:00
|
|
|
|
2010-12-18 19:30:49 +01:00
|
|
|
|
2008-05-29 10:38:53 +02:00
|
|
|
|
2010-12-18 19:30:49 +01:00
|
|
|
|
|
|
|
|
|
2008-05-29 10:38:53 +02:00
|
|
|
|
|
|
|
|
|
2010-08-20 16:25:38 -07:00
|
|
|
|
|
|
|
|
|
2008-05-29 10:38:53 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-03-20 14:18:27 +01:00
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2009-06-17 17:43:56 +02:00
|
|
|
|
2008-05-15 12:55:29 +02:00
|
|
|
|
2008-08-05 19:34:52 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2008-05-29 10:38:53 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2009-06-17 17:43:56 +02:00
|
|
|
|
2008-05-29 10:38:53 +02:00
|
|
|
|
2009-06-17 17:43:56 +02:00
|
|
|
|
2008-05-29 10:38:53 +02:00
|
|
|
|
2013-03-24 14:23:27 +02:00
|
|
|
|
2008-05-29 10:38:53 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-06-28 18:41:37 +05:30
|
|
|
|
2012-10-08 14:39:33 +02:00
|
|
|
|
2009-06-17 17:43:56 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2010-09-11 20:01:31 -07:00
|
|
|
|
2009-07-14 00:33:34 +02:00
|
|
|
|
2009-03-23 17:28:41 +01:00
|
|
|
|
2013-01-30 18:14:08 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-02-15 14:40:31 +01:00
|
|
|
|
2013-01-30 18:14:08 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-03-27 14:18:36 +02:00
|
|
|
|
2009-08-10 17:29:29 -07:00
|
|
|
|
2011-09-07 17:49:53 -07:00
|
|
|
|
2015-03-20 14:18:27 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2011-10-07 14:01:26 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-08-31 19:50:57 +00:00
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2012-07-26 17:24:39 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2009-06-17 17:43:56 +02:00
|
|
|
|
2011-08-01 11:32:52 +02:00
|
|
|
|
2011-10-07 14:01:23 +02:00
|
|
|
|
2014-06-05 08:12:57 +02:00
|
|
|
|
2007-07-27 15:43:24 +02:00
|
|
|
|
2011-10-07 14:01:23 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2007-07-27 15:43:24 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:24 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2007-07-27 15:43:24 +02:00
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2007-07-27 15:43:24 +02:00
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2011-10-07 14:01:23 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-08-01 11:32:52 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-10-07 14:01:23 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mac80211: Convert compare_ether_addr to ether_addr_equal
Use the new bool function ether_addr_equal to add
some clarity and reduce the likelihood for misuse
of compare_ether_addr for sorting.
Done via cocci script:
$ cat compare_ether_addr.cocci
@@
expression a,b;
@@
- !compare_ether_addr(a, b)
+ ether_addr_equal(a, b)
@@
expression a,b;
@@
- compare_ether_addr(a, b)
+ !ether_addr_equal(a, b)
@@
expression a,b;
@@
- !ether_addr_equal(a, b) == 0
+ ether_addr_equal(a, b)
@@
expression a,b;
@@
- !ether_addr_equal(a, b) != 0
+ !ether_addr_equal(a, b)
@@
expression a,b;
@@
- ether_addr_equal(a, b) == 0
+ !ether_addr_equal(a, b)
@@
expression a,b;
@@
- ether_addr_equal(a, b) != 0
+ ether_addr_equal(a, b)
@@
expression a,b;
@@
- !!ether_addr_equal(a, b)
+ ether_addr_equal(a, b)
Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2012-05-08 18:56:52 +00:00
|
|
|
|
2011-10-07 14:01:23 +02:00
|
|
|
|
|
|
|
|
|
2011-08-01 11:32:52 +02:00
|
|
|
|
|
|
|
|
|
2009-06-17 17:43:56 +02:00
|
|
|
|
|
|
|
|
|
2011-10-07 14:01:23 +02:00
|
|
|
|
2011-10-07 14:01:26 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-10-07 14:01:23 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mac80211: Convert compare_ether_addr to ether_addr_equal
Use the new bool function ether_addr_equal to add
some clarity and reduce the likelihood for misuse
of compare_ether_addr for sorting.
Done via cocci script:
$ cat compare_ether_addr.cocci
@@
expression a,b;
@@
- !compare_ether_addr(a, b)
+ ether_addr_equal(a, b)
@@
expression a,b;
@@
- compare_ether_addr(a, b)
+ !ether_addr_equal(a, b)
@@
expression a,b;
@@
- !ether_addr_equal(a, b) == 0
+ ether_addr_equal(a, b)
@@
expression a,b;
@@
- !ether_addr_equal(a, b) != 0
+ !ether_addr_equal(a, b)
@@
expression a,b;
@@
- ether_addr_equal(a, b) == 0
+ !ether_addr_equal(a, b)
@@
expression a,b;
@@
- ether_addr_equal(a, b) != 0
+ ether_addr_equal(a, b)
@@
expression a,b;
@@
- !!ether_addr_equal(a, b)
+ ether_addr_equal(a, b)
Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2012-05-08 18:56:52 +00:00
|
|
|
|
2011-10-07 14:01:23 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-11-19 01:08:30 +01:00
|
|
|
|
2012-07-26 17:24:39 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-01-13 23:10:26 +01:00
|
|
|
|
2014-06-05 08:12:57 +02:00
|
|
|
|
2013-01-13 23:10:26 +01:00
|
|
|
|
2014-06-05 08:12:57 +02:00
|
|
|
|
2013-01-13 23:10:26 +01:00
|
|
|
|
|
|
|
|
|
2012-07-26 17:24:39 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-06-05 08:12:57 +02:00
|
|
|
|
|
|
|
|
|
2012-07-26 17:24:39 +02:00
|
|
|
|
|
|
|
|
|
2014-11-09 18:50:09 +02:00
|
|
|
|
2015-03-20 14:18:27 +01:00
|
|
|
|
2011-10-07 14:01:23 +02:00
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2007-07-27 15:43:24 +02:00
|
|
|
|
2012-07-26 17:24:39 +02:00
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:24 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2015-03-21 09:13:45 +01:00
|
|
|
|
2013-11-18 19:06:45 +02:00
|
|
|
|
2015-03-21 09:13:45 +01:00
|
|
|
|
2013-11-18 19:06:45 +02:00
|
|
|
|
2015-03-21 09:13:45 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-11-18 19:06:45 +02:00
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2014-11-09 18:50:10 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-11-09 18:50:07 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2014-11-09 18:50:10 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2014-11-09 18:50:10 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2014-11-09 18:50:10 +02:00
|
|
|
|
2015-03-20 14:18:27 +01:00
|
|
|
|
2015-03-21 09:13:45 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2008-09-16 14:18:59 +02:00
|
|
|
|
2010-12-18 19:30:48 +01:00
|
|
|
|
2012-07-30 15:11:56 +02:00
|
|
|
|
2008-06-22 16:45:27 -07:00
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2010-08-21 07:23:29 -07:00
|
|
|
|
2012-05-30 09:30:41 +08:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2007-08-28 17:01:54 -04:00
|
|
|
|
2015-03-21 09:13:45 +01:00
|
|
|
|
|
|
|
|
|
2011-11-06 14:13:34 +01:00
|
|
|
|
|
|
|
|
|
2012-07-26 17:24:39 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-11-09 18:50:10 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2015-03-21 09:13:45 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-06-22 16:45:27 -07:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2007-12-19 01:31:27 +01:00
|
|
|
|
2008-09-11 00:01:58 +02:00
|
|
|
|
2015-03-21 09:13:45 +01:00
|
|
|
|
2009-11-10 20:10:05 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-11-25 17:46:19 +01:00
|
|
|
|
2009-11-10 20:10:05 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-09-29 16:04:36 +02:00
|
|
|
|
2014-07-22 14:50:47 +02:00
|
|
|
|
2009-11-10 20:10:05 +01:00
|
|
|
|
2012-07-26 17:24:39 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-11-09 18:50:10 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-11-09 11:39:59 +01:00
|
|
|
|
2015-03-21 09:13:45 +01:00
|
|
|
|
2009-11-10 20:10:05 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-01-25 14:14:33 +00:00
|
|
|
|
|
|
|
|
|
2014-11-09 18:50:10 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-06-22 16:45:27 -07:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2009-11-25 17:46:19 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2012-11-09 11:39:59 +01:00
|
|
|
|
2007-08-28 17:01:54 -04:00
|
|
|
|
2008-09-11 00:01:58 +02:00
|
|
|
|
2008-06-22 16:45:27 -07:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2009-11-25 17:46:19 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-07-26 17:24:39 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-03-25 16:26:57 +01:00
|
|
|
|
2007-08-28 17:01:54 -04:00
|
|
|
|
2008-02-23 15:17:10 +01:00
|
|
|
|
2008-09-11 00:01:58 +02:00
|
|
|
|
2012-05-30 09:30:41 +08:00
|
|
|
|
2013-02-19 10:04:50 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-02-15 14:40:31 +01:00
|
|
|
|
2013-02-19 10:04:50 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-02-15 14:40:31 +01:00
|
|
|
|
2013-02-19 10:04:50 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-05-30 09:30:41 +08:00
|
|
|
|
2008-09-22 13:30:32 +08:00
|
|
|
|
2010-12-28 19:28:11 -06:00
|
|
|
|
2011-01-10 00:44:23 -06:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-12-28 19:28:11 -06:00
|
|
|
|
mac80211: Convert compare_ether_addr to ether_addr_equal
Use the new bool function ether_addr_equal to add
some clarity and reduce the likelihood for misuse
of compare_ether_addr for sorting.
Done via cocci script:
$ cat compare_ether_addr.cocci
@@
expression a,b;
@@
- !compare_ether_addr(a, b)
+ ether_addr_equal(a, b)
@@
expression a,b;
@@
- compare_ether_addr(a, b)
+ !ether_addr_equal(a, b)
@@
expression a,b;
@@
- !ether_addr_equal(a, b) == 0
+ ether_addr_equal(a, b)
@@
expression a,b;
@@
- !ether_addr_equal(a, b) != 0
+ !ether_addr_equal(a, b)
@@
expression a,b;
@@
- ether_addr_equal(a, b) == 0
+ !ether_addr_equal(a, b)
@@
expression a,b;
@@
- ether_addr_equal(a, b) != 0
+ ether_addr_equal(a, b)
@@
expression a,b;
@@
- !!ether_addr_equal(a, b)
+ ether_addr_equal(a, b)
Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2012-05-08 18:56:52 +00:00
|
|
|
|
|
|
|
|
|
2009-08-10 12:15:48 -07:00
|
|
|
|
|
|
|
|
|
2013-02-15 14:40:31 +01:00
|
|
|
|
|
|
|
|
|
2008-09-22 13:30:32 +08:00
|
|
|
|
2012-08-20 11:28:25 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-09-22 13:30:32 +08:00
|
|
|
|
2009-08-10 12:15:48 -07:00
|
|
|
|
2009-11-25 17:46:19 +01:00
|
|
|
|
2012-08-20 11:28:25 -07:00
|
|
|
|
|
|
|
|
|
2013-02-15 14:40:31 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-08-10 12:15:48 -07:00
|
|
|
|
2012-08-20 11:28:25 -07:00
|
|
|
|
2013-02-15 14:40:31 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-09-22 13:30:32 +08:00
|
|
|
|
|
|
|
|
|
2012-07-26 17:24:39 +02:00
|
|
|
|
2014-11-09 18:50:10 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-11-09 11:39:59 +01:00
|
|
|
|
2008-02-23 15:17:10 +01:00
|
|
|
|
|
|
|
|
|
2008-09-11 00:01:58 +02:00
|
|
|
|
2015-03-21 09:13:45 +01:00
|
|
|
|
|
|
|
|
|
2011-09-28 14:12:54 +03:00
|
|
|
|
2015-03-21 09:13:45 +01:00
|
|
|
|
2011-09-28 14:12:54 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-11-10 20:10:05 +01:00
|
|
|
|
2011-09-28 14:12:54 +03:00
|
|
|
|
2009-11-25 17:46:19 +01:00
|
|
|
|
2009-11-10 20:10:05 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-09-28 14:12:54 +03:00
|
|
|
|
2009-11-10 20:10:05 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-07-26 17:24:39 +02:00
|
|
|
|
2014-11-09 18:50:10 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-11-09 11:39:59 +01:00
|
|
|
|
2007-08-28 17:01:54 -04:00
|
|
|
|
2014-11-03 10:33:19 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-11-09 18:50:10 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-11-03 10:33:19 +01:00
|
|
|
|
|
|
|
|
|
2008-09-11 00:01:58 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-02-15 12:44:28 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2012-07-26 17:24:39 +02:00
|
|
|
|
2014-11-09 18:50:10 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-11-09 11:39:59 +01:00
|
|
|
|
2007-08-28 17:01:54 -04:00
|
|
|
|
|
|
|
|
|
2014-11-09 18:50:10 +02:00
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2011-11-06 14:13:34 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2015-03-21 09:13:45 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-09-29 16:04:36 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2015-03-21 08:09:55 +01:00
|
|
|
|
|
|
|
|
|
2008-06-22 16:45:27 -07:00
|
|
|
|
2007-12-19 01:31:22 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-01-28 17:19:37 +01:00
|
|
|
|
|
|
|
|
|
2007-12-19 01:31:22 +01:00
|
|
|
|
2011-10-12 17:28:21 +02:00
|
|
|
|
2014-11-03 10:33:19 +01:00
|
|
|
|
2013-08-30 01:35:09 +04:00
|
|
|
|
2011-10-12 17:28:21 +02:00
|
|
|
|
mac80211: Convert compare_ether_addr to ether_addr_equal
Use the new bool function ether_addr_equal to add
some clarity and reduce the likelihood for misuse
of compare_ether_addr for sorting.
Done via cocci script:
$ cat compare_ether_addr.cocci
@@
expression a,b;
@@
- !compare_ether_addr(a, b)
+ ether_addr_equal(a, b)
@@
expression a,b;
@@
- compare_ether_addr(a, b)
+ !ether_addr_equal(a, b)
@@
expression a,b;
@@
- !ether_addr_equal(a, b) == 0
+ ether_addr_equal(a, b)
@@
expression a,b;
@@
- !ether_addr_equal(a, b) != 0
+ !ether_addr_equal(a, b)
@@
expression a,b;
@@
- ether_addr_equal(a, b) == 0
+ !ether_addr_equal(a, b)
@@
expression a,b;
@@
- ether_addr_equal(a, b) != 0
+ ether_addr_equal(a, b)
@@
expression a,b;
@@
- !!ether_addr_equal(a, b)
+ ether_addr_equal(a, b)
Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2012-05-08 18:56:52 +00:00
|
|
|
|
2007-12-19 01:31:22 +01:00
|
|
|
|
2012-06-22 11:29:50 +02:00
|
|
|
|
2014-11-09 18:50:10 +02:00
|
|
|
|
2007-12-19 01:31:22 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-11-09 18:50:10 +02:00
|
|
|
|
|
|
|
|
|
2007-12-19 01:31:22 +01:00
|
|
|
|
|
|
|
|
|
2011-11-06 14:13:34 +01:00
|
|
|
|
|
|
|
|
|
2014-09-10 18:05:42 -04:00
|
|
|
|
2011-11-06 14:13:34 +01:00
|
|
|
|
2014-09-10 18:05:42 -04:00
|
|
|
|
2011-11-06 14:13:34 +01:00
|
|
|
|
2013-02-27 17:04:59 -08:00
|
|
|
|
2011-11-06 14:13:34 +01:00
|
|
|
|
|
|
|
|
|
2014-09-10 18:05:42 -04:00
|
|
|
|
2013-02-27 17:04:59 -08:00
|
|
|
|
2011-11-06 14:13:34 +01:00
|
|
|
|
|
|
|
|
|
2013-02-27 17:04:59 -08:00
|
|
|
|
2011-11-06 14:13:34 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-09-10 18:05:42 -04:00
|
|
|
|
2011-11-06 14:13:34 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-12-02 18:44:09 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-11-06 14:13:34 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-12-18 19:30:50 +01:00
|
|
|
|
2010-12-02 18:44:09 +01:00
|
|
|
|
|
|
|
|
|
2014-11-09 18:50:10 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-12-02 18:44:09 +01:00
|
|
|
|
|
|
|
|
|
2008-06-22 16:45:27 -07:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-03-28 13:38:25 +09:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-12-02 18:44:09 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-05-29 10:38:53 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2008-05-29 10:38:53 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2008-06-18 01:19:51 -07:00
|
|
|
|
2013-03-24 14:23:27 +02:00
|
|
|
|
2008-05-29 10:38:53 +02:00
|
|
|
|
|
|
|
|
|
2012-10-08 14:39:33 +02:00
|
|
|
|
|
|
|
|
|
2012-11-07 14:02:30 +01:00
|
|
|
|
2014-11-09 18:50:10 +02:00
|
|
|
|
2012-10-08 14:39:33 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-09-14 11:10:24 -04:00
|
|
|
|
2010-06-29 15:08:06 +04:00
|
|
|
|
2008-02-23 15:17:10 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-06-29 15:08:06 +04:00
|
|
|
|
2008-02-23 15:17:10 +01:00
|
|
|
|
2008-06-22 16:45:27 -07:00
|
|
|
|
2007-09-14 11:10:24 -04:00
|
|
|
|
|
|
|
|
|
2013-12-18 15:44:16 +08:00
|
|
|
|
2007-09-14 11:10:24 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-12-18 19:30:48 +01:00
|
|
|
|
2009-06-17 17:43:56 +02:00
|
|
|
|
|
|
|
|
|
2011-11-06 14:13:34 +01:00
|
|
|
|
|
|
|
|
|
2014-11-09 18:50:09 +02:00
|
|
|
|
2011-11-06 14:13:34 +01:00
|
|
|
|
2014-11-09 18:50:10 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2015-03-21 15:25:43 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-06-02 21:39:54 +02:00
|
|
|
|
2015-03-21 15:25:43 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-06-02 21:39:54 +02:00
|
|
|
|
|
|
|
|
|
2015-03-21 15:25:43 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-09-24 14:59:49 +02:00
|
|
|
|
|
|
|
|
|
2015-03-21 15:25:43 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-04-10 14:02:08 +02:00
|
|
|
|
|
|
|
|
|
2015-03-21 15:25:43 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-04-14 10:28:37 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-03-21 15:25:43 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-04-10 14:03:17 +02:00
|
|
|
|
2015-03-21 15:25:43 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-04-10 14:03:17 +02:00
|
|
|
|
2015-03-21 15:25:43 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-04-10 14:03:17 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-03-21 15:25:43 +01:00
|
|
|
|
2015-04-10 14:03:17 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-03-21 15:25:43 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-06-09 16:45:08 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-03-21 15:25:43 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-04-22 17:10:38 +02:00
|
|
|
|
2015-03-21 15:25:43 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-09-24 14:59:48 +02:00
|
|
|
|
|
|
|
|
|
2015-03-21 15:25:43 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-06-23 11:50:52 +02:00
|
|
|
|
2015-10-16 17:54:47 +02:00
|
|
|
|
2015-06-23 11:50:52 +02:00
|
|
|
|
|
|
|
|
|
2015-10-16 17:54:47 +02:00
|
|
|
|
2015-03-21 15:25:43 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-06-02 21:39:54 +02:00
|
|
|
|
2015-03-21 15:25:43 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-10-16 17:54:47 +02:00
|
|
|
|
|
|
|
|
|
2015-03-21 15:25:43 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-06-01 15:36:51 +02:00
|
|
|
|
2015-03-21 15:25:43 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-11-09 18:50:10 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-03-21 09:13:45 +01:00
|
|
|
|
2015-04-14 14:50:41 +02:00
|
|
|
|
2014-11-09 18:50:10 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-04-10 14:10:10 +02:00
|
|
|
|
|
|
|
|
|
2014-11-09 18:50:10 +02:00
|
|
|
|
2015-03-21 15:25:43 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-04-14 14:50:41 +02:00
|
|
|
|
|
|
|
|
|
2015-04-13 16:58:25 +02:00
|
|
|
|
2015-04-14 14:50:41 +02:00
|
|
|
|
|
|
|
|
|
2015-04-10 14:10:10 +02:00
|
|
|
|
2015-04-14 14:50:41 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-05-05 15:25:33 +02:00
|
|
|
|
|
|
|
|
|
2015-04-14 14:50:41 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-04-10 14:10:10 +02:00
|
|
|
|
|
|
|
|
|
2015-04-14 14:50:41 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-11-09 18:50:10 +02:00
|
|
|
|
2015-04-14 14:50:41 +02:00
|
|
|
|
|
|
|
|
|
2014-11-09 18:50:10 +02:00
|
|
|
|
2015-04-14 14:50:41 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-04-22 17:10:38 +02:00
|
|
|
|
2015-04-14 14:50:41 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-04-10 14:10:10 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-11-09 18:50:10 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-11-09 18:50:07 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2014-11-09 18:50:11 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-03-21 09:13:45 +01:00
|
|
|
|
2014-11-09 18:50:11 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-03-21 09:13:45 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-11-09 18:50:11 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-05-17 00:57:14 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2012-11-10 03:44:14 +01:00
|
|
|
|
2009-03-23 17:28:35 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2012-11-10 03:44:14 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2011-02-24 14:42:06 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-03-23 17:28:41 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-02-24 14:42:06 +01:00
|
|
|
|
2012-07-26 17:24:39 +02:00
|
|
|
|
2009-03-23 17:28:41 +01:00
|
|
|
|
2009-07-14 00:33:34 +02:00
|
|
|
|
2009-03-23 17:28:41 +01:00
|
|
|
|
|
|
|
|
|
2012-07-26 17:24:39 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-11-09 18:50:09 +02:00
|
|
|
|
2015-03-20 14:18:27 +01:00
|
|
|
|
2009-03-23 17:28:41 +01:00
|
|
|
|
2011-11-16 15:28:55 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-03-23 17:28:41 +01:00
|
|
|
|
2009-11-25 17:46:18 +01:00
|
|
|
|
2009-03-23 17:28:41 +01:00
|
|
|
|
2011-11-16 15:28:57 +01:00
|
|
|
|
2009-03-23 17:28:41 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-05-17 00:57:14 +02:00
|
|
|
|
2009-06-17 17:43:56 +02:00
|
|
|
|
2008-05-17 00:57:14 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-03-23 17:28:37 +01:00
|
|
|
|
2009-03-23 17:28:41 +01:00
|
|
|
|
2009-06-17 17:43:56 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2009-03-23 17:28:36 +01:00
|
|
|
|
2009-03-23 17:28:37 +01:00
|
|
|
|
2009-06-17 17:43:56 +02:00
|
|
|
|
2009-03-12 23:49:28 +01:00
|
|
|
|
2009-03-23 17:28:37 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-06-17 17:43:56 +02:00
|
|
|
|
2009-03-23 17:28:37 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2008-05-17 00:57:14 +02:00
|
|
|
|
2009-03-23 17:28:37 +01:00
|
|
|
|
2009-06-17 17:43:56 +02:00
|
|
|
|
2009-07-14 00:33:34 +02:00
|
|
|
|
|
|
|
|
|
2009-07-27 10:33:31 +02:00
|
|
|
|
2012-10-08 14:39:33 +02:00
|
|
|
|
2009-07-27 10:33:31 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-06-17 17:43:56 +02:00
|
|
|
|
|
|
|
|
|
2009-03-23 17:28:37 +01:00
|
|
|
|
2009-06-17 17:43:56 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-03-23 17:28:37 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2010-03-22 13:42:43 -07:00
|
|
|
|
|
|
|
|
|
2012-04-03 16:28:50 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2009-06-17 17:43:56 +02:00
|
|
|
|
2009-03-23 17:28:37 +01:00
|
|
|
|
2009-03-23 17:28:36 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-01-07 16:04:50 +01:00
|
|
|
|
2014-05-09 14:11:49 +03:00
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-10 12:39:50 -07:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2013-12-18 15:44:16 +08:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2014-05-09 14:11:49 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-10 12:39:50 -07:00
|
|
|
|
2012-02-13 15:17:18 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2012-10-10 12:39:50 -07:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2012-10-10 12:39:50 -07:00
|
|
|
|
2011-01-31 20:48:44 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-10 12:39:50 -07:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-10-10 12:39:50 -07:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-11-24 16:50:00 +02:00
|
|
|
|
2012-10-10 12:39:50 -07:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-01-07 16:04:50 +01:00
|
|
|
|
2014-05-09 14:11:49 +03:00
|
|
|
|
|
|
|
|
|
2013-01-07 16:04:50 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-05-09 14:11:49 +03:00
|
|
|
|
2013-01-07 16:04:50 +01:00
|
|
|
|
2013-02-22 12:55:01 +01:00
|
|
|
|
2014-05-09 14:11:49 +03:00
|
|
|
|
2013-02-22 12:55:01 +01:00
|
|
|
|
2013-01-07 16:04:50 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-05-09 14:11:50 +03:00
|
|
|
|
|
|
|
|
|
2013-07-11 16:09:06 +02:00
|
|
|
|
|
|
|
|
|
2013-08-28 13:41:31 +02:00
|
|
|
|
|
|
|
|
|
2014-05-09 14:11:47 +03:00
|
|
|
|
2014-06-05 14:21:36 +02:00
|
|
|
|
2013-07-11 16:09:06 +02:00
|
|
|
|
2013-08-28 13:41:31 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-10-17 15:55:02 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-08-28 13:41:31 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-07-11 16:09:06 +02:00
|
|
|
|
2014-06-05 14:21:36 +02:00
|
|
|
|
2014-05-09 14:11:47 +03:00
|
|
|
|
2014-06-05 14:21:36 +02:00
|
|
|
|
2014-05-09 14:11:47 +03:00
|
|
|
|
2014-06-05 14:21:36 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-05-09 14:11:47 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-06-05 14:21:36 +02:00
|
|
|
|
|
|
|
|
|
2014-05-09 14:11:47 +03:00
|
|
|
|
2014-06-05 14:21:36 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-05-09 14:11:47 +03:00
|
|
|
|
2014-06-05 14:21:36 +02:00
|
|
|
|
2014-05-09 14:11:50 +03:00
|
|
|
|
|
|
|
|
|
2015-06-10 13:06:53 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-05-09 14:11:50 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-06-05 14:21:36 +02:00
|
|
|
|
|
|
|
|
|
2013-07-11 16:09:06 +02:00
|
|
|
|
2014-06-05 14:21:36 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-06-10 13:06:53 +02:00
|
|
|
|
2014-05-09 14:11:50 +03:00
|
|
|
|
2014-06-05 14:21:36 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-07-11 16:09:06 +02:00
|
|
|
|
2014-05-09 14:11:50 +03:00
|
|
|
|
2013-07-11 16:09:06 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-08-28 13:41:31 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-10-17 15:55:02 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-08-28 13:41:31 +02:00
|
|
|
|
|
|
|
|
|
2013-07-11 16:09:06 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-06-05 14:21:37 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-06-05 14:21:36 +02:00
|
|
|
|
2013-07-11 16:09:06 +02:00
|
|
|
|
|
|
|
|
|
2014-06-05 14:21:36 +02:00
|
|
|
|
2013-07-11 16:09:06 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-05-09 14:11:49 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2014-06-05 14:21:36 +02:00
|
|
|
|
2008-07-09 14:40:37 +02:00
|
|
|
|
2008-05-15 12:55:29 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2012-07-26 17:24:39 +02:00
|
|
|
|
2009-12-29 12:59:19 +02:00
|
|
|
|
2012-07-26 17:24:39 +02:00
|
|
|
|
2014-05-09 14:11:50 +03:00
|
|
|
|
2008-01-24 19:38:38 +01:00
|
|
|
|
2007-12-19 02:03:33 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2007-12-19 01:31:26 +01:00
|
|
|
|
2012-07-26 17:24:39 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2012-07-26 17:24:39 +02:00
|
|
|
|
2011-01-24 19:28:49 +01:00
|
|
|
|
|
|
|
|
|
2014-05-09 14:11:49 +03:00
|
|
|
|
|
|
|
|
|
2009-10-29 08:30:35 +01:00
|
|
|
|
2008-09-11 00:01:58 +02:00
|
|
|
|
2012-10-10 12:39:50 -07:00
|
|
|
|
|
|
|
|
|
2014-06-05 14:21:36 +02:00
|
|
|
|
2011-02-07 22:03:35 +03:00
|
|
|
|
2014-06-05 14:21:37 +02:00
|
|
|
|
2014-05-09 14:11:50 +03:00
|
|
|
|
2015-06-10 13:06:53 +02:00
|
|
|
|
2014-05-09 14:11:50 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-07-11 16:09:06 +02:00
|
|
|
|
2008-02-23 15:17:19 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-12-14 13:54:53 +01:00
|
|
|
|
|
|
|
|
|
2008-02-23 15:17:19 +01:00
|
|
|
|
|
|
|
|
|
2007-12-19 02:03:33 +01:00
|
|
|
|
2008-02-23 15:17:19 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-05-09 14:11:49 +03:00
|
|
|
|
|
|
|
|
|
2008-02-23 15:17:19 +01:00
|
|
|
|
2014-05-09 14:11:49 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-05-09 14:11:50 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-05-09 14:11:49 +03:00
|
|
|
|
2009-10-29 08:30:35 +01:00
|
|
|
|
2008-02-23 15:17:19 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-07-09 14:40:37 +02:00
|
|
|
|
|
|
|
|
|
2008-09-11 00:01:58 +02:00
|
|
|
|
2009-02-15 12:44:28 +01:00
|
|
|
|
2008-07-09 14:40:37 +02:00
|
|
|
|
2008-02-23 15:17:19 +01:00
|
|
|
|
2014-06-05 14:21:36 +02:00
|
|
|
|
|
|
|
|
|
2008-07-09 14:40:37 +02:00
|
|
|
|
|
|
|
|
|
2014-06-05 14:21:37 +02:00
|
|
|
|
2014-05-09 14:11:50 +03:00
|
|
|
|
2015-06-10 13:06:53 +02:00
|
|
|
|
2013-08-28 13:41:31 +02:00
|
|
|
|
2014-06-05 14:21:36 +02:00
|
|
|
|
2014-05-09 14:11:50 +03:00
|
|
|
|
2013-08-28 13:41:31 +02:00
|
|
|
|
2014-06-05 14:21:36 +02:00
|
|
|
|
2013-12-14 13:54:53 +01:00
|
|
|
|
2008-07-09 14:40:37 +02:00
|
|
|
|
|
|
|
|
|
2013-03-07 20:54:29 +01:00
|
|
|
|
2014-06-05 14:21:36 +02:00
|
|
|
|
|
|
|
|
|
2008-07-09 14:40:37 +02:00
|
|
|
|
|
|
|
|
|
2008-07-15 18:44:13 -07:00
|
|
|
|
|
|
|
|
|
2008-02-23 15:17:19 +01:00
|
|
|
|
2012-03-31 11:31:32 -07:00
|
|
|
|
2008-09-11 00:01:49 +02:00
|
|
|
|
2014-06-05 14:21:36 +02:00
|
|
|
|
|
|
|
|
|
2011-01-18 13:45:32 +01:00
|
|
|
|
|
|
|
|
|
2014-06-05 14:21:37 +02:00
|
|
|
|
2014-05-09 14:11:50 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-06-10 13:06:53 +02:00
|
|
|
|
2014-05-09 14:11:50 +03:00
|
|
|
|
2014-06-05 14:21:36 +02:00
|
|
|
|
2014-05-09 14:11:50 +03:00
|
|
|
|
2013-10-17 15:55:02 -07:00
|
|
|
|
2012-03-31 11:31:32 -07:00
|
|
|
|
2014-06-05 14:21:36 +02:00
|
|
|
|
2012-03-31 11:31:32 -07:00
|
|
|
|
2011-10-26 14:47:25 -07:00
|
|
|
|
2014-06-05 14:21:36 +02:00
|
|
|
|
2013-01-30 18:14:08 +01:00
|
|
|
|
2014-06-05 14:21:36 +02:00
|
|
|
|
2013-12-14 13:54:53 +01:00
|
|
|
|
2008-02-23 15:17:10 +01:00
|
|
|
|
|
|
|
|
|
2013-02-14 11:20:13 -08:00
|
|
|
|
2014-06-05 14:21:36 +02:00
|
|
|
|
|
|
|
|
|
2014-05-09 14:11:49 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-06-05 14:21:36 +02:00
|
|
|
|
|
|
|
|
|
2014-05-09 14:11:49 +03:00
|
|
|
|
|
|
|
|
|
2014-06-05 14:21:36 +02:00
|
|
|
|
|
|
|
|
|
2008-07-09 14:40:37 +02:00
|
|
|
|
|
|
|
|
|
2007-12-19 02:03:33 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2014-05-09 14:11:50 +03:00
|
|
|
|
2014-06-05 14:21:36 +02:00
|
|
|
|
2014-05-09 14:11:50 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-06-05 14:21:36 +02:00
|
|
|
|
2014-05-09 14:11:50 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-11-09 11:39:59 +01:00
|
|
|
|
2012-07-26 17:24:39 +02:00
|
|
|
|
2008-05-15 12:55:29 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2009-06-17 17:43:56 +02:00
|
|
|
|
2009-12-29 12:59:19 +02:00
|
|
|
|
2008-05-15 12:55:29 +02:00
|
|
|
|
2009-12-29 12:59:19 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-07-26 14:07:46 +02:00
|
|
|
|
2009-12-29 12:59:19 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-01-06 13:09:08 +02:00
|
|
|
|
2012-07-26 14:07:46 +02:00
|
|
|
|
2010-01-06 13:09:08 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-11-11 15:07:23 +01:00
|
|
|
|
2009-12-29 12:59:19 +02:00
|
|
|
|
2008-05-15 12:55:29 +02:00
|
|
|
|
|
|
|
|
|
2008-07-10 11:21:26 +02:00
|
|
|
|
2010-05-06 14:45:17 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-10-21 12:40:02 +02:00
|
|
|
|
2007-12-19 02:03:33 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2014-05-09 14:11:49 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-09-09 09:46:32 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-05-09 14:11:49 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-09-09 09:46:32 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-05-09 14:11:49 +03:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2009-10-29 08:30:35 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2011-11-10 11:28:57 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-08-06 14:26:16 +03:00
|
|
|
|
|
|
|
|
|
2011-11-10 11:28:57 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-08-06 14:26:16 +03:00
|
|
|
|
2011-11-10 11:28:57 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-08-06 14:26:16 +03:00
|
|
|
|
|
|
|
|
|
2011-11-10 11:28:57 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-01-05 20:16:19 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-08-29 14:17:31 -07:00
|
|
|
|
2010-01-05 20:16:19 +02:00
|
|
|
|
2011-08-29 14:17:31 -07:00
|
|
|
|
2010-01-05 20:16:19 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-08-29 14:17:31 -07:00
|
|
|
|
2010-01-05 20:16:19 +02:00
|
|
|
|
2011-08-29 14:17:31 -07:00
|
|
|
|
2010-01-05 20:16:19 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-01-05 20:16:38 +02:00
|
|
|
|
2014-06-12 22:24:31 +02:00
|
|
|
|
2010-01-05 20:16:38 +02:00
|
|
|
|
2012-11-29 13:00:10 +01:00
|
|
|
|
2010-01-05 20:16:38 +02:00
|
|
|
|
2014-06-12 22:24:31 +02:00
|
|
|
|
2010-01-05 20:16:38 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-11-29 13:00:10 +01:00
|
|
|
|
2011-08-29 14:17:31 -07:00
|
|
|
|
2010-01-05 20:16:38 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-07-13 16:23:07 +02:00
|
|
|
|
2014-06-12 22:24:31 +02:00
|
|
|
|
2012-07-13 16:23:07 +02:00
|
|
|
|
2010-01-05 20:16:38 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-03-29 16:30:41 +02:00
|
|
|
|
2010-01-05 20:16:38 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-12-19 01:31:26 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2008-05-15 12:55:29 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-06-22 16:45:27 -07:00
|
|
|
|
|
|
|
|
|
2007-12-19 01:31:26 +01:00
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-12-19 01:31:26 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2008-05-15 12:55:29 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-06-22 16:45:27 -07:00
|
|
|
|
|
|
|
|
|
2007-12-19 01:31:26 +01:00
|
|
|
|
|
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2007-12-19 01:31:26 +01:00
|
|
|
|
2008-05-15 12:55:29 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2008-05-27 17:50:51 +03:00
|
|
|
|
2008-02-25 16:27:43 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2012-10-10 12:39:50 -07:00
|
|
|
|
2008-05-15 12:55:29 +02:00
|
|
|
|
2012-07-26 17:24:39 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2007-12-19 01:31:26 +01:00
|
|
|
|
2007-12-19 02:03:33 +01:00
|
|
|
|
|
|
|
|
|
2012-07-26 17:24:39 +02:00
|
|
|
|
2007-12-19 02:03:33 +01:00
|
|
|
|
2012-10-10 12:39:50 -07:00
|
|
|
|
2008-05-27 17:50:51 +03:00
|
|
|
|
2007-12-19 02:03:33 +01:00
|
|
|
|
2012-10-10 12:39:50 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2013-01-30 18:14:08 +01:00
|
|
|
|
|
|
|
|
|
2012-10-10 12:39:50 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-05-27 17:50:51 +03:00
|
|
|
|
2008-05-15 12:55:29 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2012-10-10 12:39:50 -07:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2008-05-27 17:50:51 +03:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
2012-10-10 12:39:50 -07:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-03-06 15:08:43 +01:00
|
|
|
|
2013-03-01 16:01:18 +01:00
|
|
|
|
2015-03-20 14:18:27 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-05-15 12:55:29 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-02-25 16:27:43 +01:00
|
|
|
|
2012-11-09 11:39:59 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2008-06-20 01:22:30 +02:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
2008-06-20 01:22:30 +02:00
|
|
|
|
2008-02-25 16:27:46 +01:00
|
|
|
|
2007-07-27 15:43:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-06-17 17:43:56 +02:00
|
|
|
|
2014-11-19 13:47:38 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-06-02 21:39:54 +02:00
|
|
|
|
2014-11-19 13:47:38 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-01-07 15:42:39 +02:00
|
|
|
|
2014-11-19 13:47:38 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2015-06-02 21:39:54 +02:00
|
|
|
|
2014-11-19 13:47:38 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-07-26 17:24:39 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-06-17 17:43:56 +02:00
|
|
|
|
2012-07-07 15:07:13 +02:00
|
|
|
|
2012-04-03 16:28:50 +02:00
|
|
|
|
2009-06-17 17:43:56 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2012-04-03 16:28:50 +02:00
|
|
|
|
2011-12-15 10:18:34 +01:00
|
|
|
|
2010-01-05 18:00:58 +01:00
|
|
|
|
2013-02-13 15:39:57 +01:00
|
|
|
|
|
|
|
|
|
2009-06-18 17:25:11 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-11-09 18:50:09 +02:00
|
|
|
|
2015-03-20 14:18:27 +01:00
|
|
|
|
2009-06-18 17:25:11 +02:00
|
|
|
|
2009-06-17 17:43:56 +02:00
|
|
|
|