ixgbevf: fix skb->pkt_type checks
skb->pkt_type is not a bitmask, but contains only value at a time from
the range defined in include/uapi/linux/if_packet.h.
Checking it like if it was a bitmask of values would also cause
PACKET_OTHERHOST, PACKET_LOOPBACK and PACKET_FASTROUTE to be matched by
this check since their lower 2 bits are also set, although that does not
fix a real bug, it is still potentially confusing.
This bogus check was introduced in commit 815cccbf
("ixgbe: add setlink,
getlink support to ixgbe and ixgbevf").
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
96dee024ca
commit
bd9d55929d
|
@ -516,7 +516,8 @@ static int ixgbevf_clean_rx_irq(struct ixgbevf_q_vector *q_vector,
|
|||
/* Workaround hardware that can't do proper VEPA multicast
|
||||
* source pruning.
|
||||
*/
|
||||
if ((skb->pkt_type & (PACKET_BROADCAST | PACKET_MULTICAST)) &&
|
||||
if ((skb->pkt_type == PACKET_BROADCAST ||
|
||||
skb->pkt_type == PACKET_MULTICAST) &&
|
||||
ether_addr_equal(rx_ring->netdev->dev_addr,
|
||||
eth_hdr(skb)->h_source)) {
|
||||
dev_kfree_skb_irq(skb);
|
||||
|
|
Loading…
Reference in New Issue