forked from Minki/linux
ixgbe/fm10k: Record macvlan stats instead of Rx queue for macvlan offloaded rings
We shouldn't be recording the Rx queue on macvlan offloaded frames since the macvlan is normally brought up as a single queue device, and it will trigger warnings for RPS if we have recorded queue IDs larger than the "real_num_rx_queues" value recorded for the device. Instead we should be recording the macvlan statistics since we are bypassing the normal macvlan statistics that would have been generated by the receive path. Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com> Tested-by: Andrew Bowers <andrewx.bowers@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
0efbf12b95
commit
58918df0e8
@ -446,13 +446,13 @@ static void fm10k_type_trans(struct fm10k_ring *rx_ring,
|
||||
|
||||
skb->protocol = eth_type_trans(skb, dev);
|
||||
|
||||
/* Record Rx queue, or update macvlan statistics */
|
||||
if (!l2_accel)
|
||||
return;
|
||||
|
||||
/* update MACVLAN statistics */
|
||||
macvlan_count_rx(netdev_priv(dev), skb->len + ETH_HLEN, 1,
|
||||
!!(rx_desc->w.hdr_info &
|
||||
cpu_to_le16(FM10K_RXD_HDR_INFO_XC_MASK)));
|
||||
skb_record_rx_queue(skb, rx_ring->queue_index);
|
||||
else
|
||||
macvlan_count_rx(netdev_priv(dev), skb->len + ETH_HLEN, true,
|
||||
(skb->pkt_type == PACKET_BROADCAST) ||
|
||||
(skb->pkt_type == PACKET_MULTICAST));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -479,8 +479,6 @@ static unsigned int fm10k_process_skb_fields(struct fm10k_ring *rx_ring,
|
||||
|
||||
FM10K_CB(skb)->fi.w.vlan = rx_desc->w.vlan;
|
||||
|
||||
skb_record_rx_queue(skb, rx_ring->queue_index);
|
||||
|
||||
FM10K_CB(skb)->fi.d.glort = rx_desc->d.glort;
|
||||
|
||||
if (rx_desc->w.vlan) {
|
||||
|
@ -1749,9 +1749,15 @@ static void ixgbe_process_skb_fields(struct ixgbe_ring *rx_ring,
|
||||
__vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q), vid);
|
||||
}
|
||||
|
||||
skb_record_rx_queue(skb, rx_ring->queue_index);
|
||||
|
||||
skb->protocol = eth_type_trans(skb, dev);
|
||||
|
||||
/* record Rx queue, or update MACVLAN statistics */
|
||||
if (netif_is_ixgbe(dev))
|
||||
skb_record_rx_queue(skb, rx_ring->queue_index);
|
||||
else
|
||||
macvlan_count_rx(netdev_priv(dev), skb->len + ETH_HLEN, true,
|
||||
(skb->pkt_type == PACKET_BROADCAST) ||
|
||||
(skb->pkt_type == PACKET_MULTICAST));
|
||||
}
|
||||
|
||||
static void ixgbe_rx_skb(struct ixgbe_q_vector *q_vector,
|
||||
|
Loading…
Reference in New Issue
Block a user