tuntap: calculate rps hash only when needed
There's no need to calculate rps hash if it was not enabled. So this patch export rps_needed and check it before trying to get rps hash. Tests (using pktgen to inject packets to guest) shows this can improve pps about 13% (when rps is disabled). Before: ~1150000 pps After: ~1300000 pps Cc: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Jason Wang <jasowang@redhat.com> ---- Changes from V1: - Fix build when CONFIG_RPS is not set Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
f345c9a572
commit
3df97ba830
@@ -833,7 +833,8 @@ static netdev_tx_t tun_net_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
if (txq >= numqueues)
|
||||
goto drop;
|
||||
|
||||
if (numqueues == 1) {
|
||||
#ifdef CONFIG_RPS
|
||||
if (numqueues == 1 && static_key_false(&rps_needed)) {
|
||||
/* Select queue was not called for the skbuff, so we extract the
|
||||
* RPS hash and save it into the flow_table here.
|
||||
*/
|
||||
@@ -848,6 +849,7 @@ static netdev_tx_t tun_net_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
tun_flow_save_rps_rxhash(e, rxhash);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
tun_debug(KERN_INFO, tun, "tun_net_xmit %d\n", skb->len);
|
||||
|
||||
|
Reference in New Issue
Block a user