Re: [PATCH 2/4 v2] net: Use sk_tx_queue_mapping for connected sockets
From: Krishna Kumar2 <hidden>
Date: 2009-10-16 12:58:10
Eric Dumazet [off-list ref] wrote on 10/16/2009 03:18:56 PM:
Are we sure that for selection done by skb_tx_hash(dev, skb), rx packets will use the same queue/cpu ? Probably not, since it uses sk->sk_hash (tcp/udp port) :
Yes, I expect the same.
If NIC has some proprietary hash, and selects rx queue 3 for feeding us packets, it would be nice to also use tx queue 3 for transmit.
I had written: "This is not saved if either skb rx was recorded, or ...". It is somewhat misleading, and I will try to correct it. The idea is that if the same incoming skb is used for response after the connection is setup, which I think is not possible in this case, then txq will be same as rxq. See more below...
We would have to record in sk the rx queue chosen by the device when processing SYN / SYN-ACK packet for example for tcp flows.
I wait for tcp_v4_syn_recv_sock to finish and create a connection. sk_setup_caps/__sk_dst_set are called for the new socket resulting in sk_dst_cache getting set (I cannot set the cache till the connection is finished and dst is set). I guess that means that I will wait for another skb to come and the response will use skb_tx_hash instead of using the rx recorded. Will this suffice, but if not, is it something I should handle or an add-on patch should do instead? Thanks, - KK