af_packet: allow packets defragmentation not only for hash fanout type

Packets defragmentation was introduced for PACKET_FANOUT_HASH only,
see 7736d33f42 ("packet: Add pre-defragmentation support for ipv4
fanouts")

It may be useful to have defragmentation enabled regardless of
fanout type. Without that, the AF_PACKET user may have to:
1. Collect fragments from different rings
2. Defragment by itself

Signed-off-by: Alexander Drozdov <al.drozdov@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Alexander Drozdov 2015-02-20 08:24:27 +03:00 committed by David S. Miller
parent b9ebafbe8c
commit 3f34b24a73

View File

@ -1349,14 +1349,14 @@ static int packet_rcv_fanout(struct sk_buff *skb, struct net_device *dev,
return 0; return 0;
} }
if (fanout_has_flag(f, PACKET_FANOUT_FLAG_DEFRAG)) {
skb = ip_check_defrag(skb, IP_DEFRAG_AF_PACKET);
if (!skb)
return 0;
}
switch (f->type) { switch (f->type) {
case PACKET_FANOUT_HASH: case PACKET_FANOUT_HASH:
default: default:
if (fanout_has_flag(f, PACKET_FANOUT_FLAG_DEFRAG)) {
skb = ip_check_defrag(skb, IP_DEFRAG_AF_PACKET);
if (!skb)
return 0;
}
idx = fanout_demux_hash(f, skb, num); idx = fanout_demux_hash(f, skb, num);
break; break;
case PACKET_FANOUT_LB: case PACKET_FANOUT_LB: