From: David S. Miller Date: Wed, 24 Jun 2015 09:58:51 +0000 (-0700) Subject: Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=3a07bd6fead4f00f67b1bf5f551e686661c4f52c;p=GitHub%2FLineageOS%2FG12%2Fandroid_kernel_amlogic_linux-4.9.git Merge git://git./linux/kernel/git/davem/net Conflicts: drivers/net/ethernet/mellanox/mlx4/main.c net/packet/af_packet.c Both conflicts were cases of simple overlapping changes. Signed-off-by: David S. Miller --- 3a07bd6fead4f00f67b1bf5f551e686661c4f52c diff --cc drivers/net/ethernet/mellanox/mlx4/main.c index 4e69cf52a579,68b5a5563af7..33e68b11a158 --- a/drivers/net/ethernet/mellanox/mlx4/main.c +++ b/drivers/net/ethernet/mellanox/mlx4/main.c @@@ -479,7 -479,15 +479,15 @@@ static int mlx4_dev_cap(struct mlx4_de } } + if (mlx4_is_master(dev) && (dev->caps.num_ports == 2) && + (port_type_array[0] == MLX4_PORT_TYPE_IB) && + (port_type_array[1] == MLX4_PORT_TYPE_ETH)) { + mlx4_warn(dev, + "Granular QoS per VF not supported with IB/Eth configuration\n"); + dev->caps.flags2 &= ~MLX4_DEV_CAP_FLAG2_QOS_VPP; + } + - dev->caps.max_counters = 1 << ilog2(dev_cap->max_counters); + dev->caps.max_counters = dev_cap->max_counters; dev->caps.reserved_qps_cnt[MLX4_QP_REGION_FW] = dev_cap->reserved_qps; dev->caps.reserved_qps_cnt[MLX4_QP_REGION_ETH_ADDR] = diff --cc net/packet/af_packet.c index f5c87031b121,fe1610ddeacf..c9e8741226c6 --- a/net/packet/af_packet.c +++ b/net/packet/af_packet.c @@@ -1322,30 -1272,6 +1322,20 @@@ static void packet_sock_destruct(struc sk_refcnt_debug_dec(sk); } - static int fanout_rr_next(struct packet_fanout *f, unsigned int num) - { - int x = atomic_read(&f->rr_cur) + 1; - - if (x >= num) - x = 0; - - return x; - } - +static bool fanout_flow_is_huge(struct packet_sock *po, struct sk_buff *skb) +{ + u32 rxhash; + int i, count = 0; + + rxhash = skb_get_hash(skb); + for (i = 0; i < ROLLOVER_HLEN; i++) + if (po->rollover->history[i] == rxhash) + count++; + + po->rollover->history[prandom_u32() % ROLLOVER_HLEN] = rxhash; + return count > (ROLLOVER_HLEN >> 1); +} + static unsigned int fanout_demux_hash(struct packet_fanout *f, struct sk_buff *skb, unsigned int num)