aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Kehrer <paul.l.kehrer@gmail.com>2015-03-10 11:04:58 -0500
committerPaul Kehrer <paul.l.kehrer@gmail.com>2015-03-10 11:04:58 -0500
commita66cb11b6abdd5a77f09c7bf8adbd424c701bb2b (patch)
tree84f534b4b8000c859b9213da61c431a739b71f5c
parentd0109a59993ba568bb81a67a062dcfb460692447 (diff)
parentfcadda6a89095fc92e6fe2e248e93b642ce8580b (diff)
downloadcryptography-a66cb11b6abdd5a77f09c7bf8adbd424c701bb2b.tar.gz
cryptography-a66cb11b6abdd5a77f09c7bf8adbd424c701bb2b.tar.bz2
cryptography-a66cb11b6abdd5a77f09c7bf8adbd424c701bb2b.zip
Merge pull request #1742 from alex/fixed-deprecations
Fixed the deprecation warnings being triggered by the tests
-rw-r--r--tests/hazmat/primitives/test_dsa.py4
-rw-r--r--tests/hazmat/primitives/test_ec.py2
-rw-r--r--tests/hazmat/primitives/test_rsa.py2
-rw-r--r--tests/hazmat/primitives/test_serialization.py12
-rw-r--r--tests/test_x509.py4
5 files changed, 12 insertions, 12 deletions
diff --git a/tests/hazmat/primitives/test_dsa.py b/tests/hazmat/primitives/test_dsa.py
index 112818f4..bbafbc6c 100644
--- a/tests/hazmat/primitives/test_dsa.py
+++ b/tests/hazmat/primitives/test_dsa.py
@@ -75,7 +75,7 @@ class TestDSA(object):
g=vector['g']
).parameters(backend)
skey = parameters.generate_private_key()
- if isinstance(skey, dsa.DSAPrivateKeyWithNumbers):
+ if isinstance(skey, dsa.DSAPrivateKeyWithSerialization):
numbers = skey.private_numbers()
skey_parameters = numbers.public_numbers.parameter_numbers
pkey = skey.public_key()
@@ -98,7 +98,7 @@ class TestDSA(object):
def test_generate_dsa_private_key_and_parameters(self, backend):
skey = dsa.generate_private_key(1024, backend)
assert skey
- if isinstance(skey, dsa.DSAPrivateKeyWithNumbers)
Subject: NET: skip GRO for foreign MAC addresses

For network drivers using napi_gro_receive, packets are run through GRO,
even when the destination MAC address does not match, and they're supposed
to be delivered to another host behind a different bridge port.

This can be very expensive, because for drivers without TSO or scatter-
gather, this can only be undone by copying the skb and checksumming it
again.

To be able to track foreign MAC addresses in an inexpensive way, create
a mask of changed bits in MAC addresses of upper devices. This allows
handling VLANs and bridge devices with different addresses (as long as
they are not too different).

Signed-off-by: Felix Fietkau <nbd@openwrt.org>

--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -4007,6 +4007,9 @@ static enum gro_result dev_gro_receive(s
 	enum gro_result ret;
 	int grow;
 
+	if (skb->gro_skip)
+		goto normal;
+
 	if (!(skb->dev->features & NETIF_F_GRO))
 		goto normal;
 
@@ -5154,6 +5157,48 @@ static void __netdev_adjacent_dev_unlink
 					   &upper_dev->adj_list.lower);
 }
 
+static void __netdev_addr_mask(unsigned char *mask, const unsigned char *addr,
+			       struct net_device *dev)
+{
+	int i;
+
+	for (i = 0; i < dev->addr_len; i++)
+		mask[i] |= addr[i] ^ dev->dev_addr[i];
+}
+
+static void __netdev_upper_mask(unsigned char *mask, struct net_device *dev,
+				struct net_device *lower)
+{
+	struct net_device *cur;
+	struct list_head *iter;
+
+	netdev_for_each_upper_dev_rcu(dev, cur, iter) {
+		__netdev_addr_mask(mask, cur->dev_addr, lower);
+		__netdev_upper_mask(mask, cur, lower);
+	}
+}
+
+static void __netdev_update_addr_mask(struct net_device *dev)
+{
+	unsigned char mask[MAX_ADDR_LEN];
+	struct net_device *cur;
+	struct list_head *iter;
+
+	memset(mask, 0, sizeof(mask));
+	__netdev_upper_mask(mask, dev, dev);
+	memcpy(dev->local_addr_mask, mask, dev->addr_len);
+
+	netdev_for_each_lower_dev(dev, cur, iter)
+		__netdev_update_addr_mask(cur);
+}
+
+static void netdev_update_addr_mask(struct net_device *dev)
+{
+	rcu_read_lock();
+	__netdev_update_addr_mask(dev);
+	rcu_read_unlock();
+}
+
 static int __netdev_upper_dev_link(struct net_devi