NetRxPkt: Introduce support for additional hash types
Add support for following hash types: IPV6 TCP with extension headers IPV4 UDP IPV6 UDP IPV6 UDP with extension headers Signed-off-by: Yuri Benditovich <yuri.benditovich@daynix.com> Acked-by: Dmitry Fleytman <dmitry.fleytman@gmail.com> Signed-off-by: Jason Wang <jasowang@redhat.com>
This commit is contained in:
parent
b559ea95ea
commit
33bbc05eab
@ -307,6 +307,20 @@ _net_rx_rss_prepare_tcp(uint8_t *rss_input,
|
||||
&tcphdr->th_dport, sizeof(uint16_t));
|
||||
}
|
||||
|
||||
static inline void
|
||||
_net_rx_rss_prepare_udp(uint8_t *rss_input,
|
||||
struct NetRxPkt *pkt,
|
||||
size_t *bytes_written)
|
||||
{
|
||||
struct udp_header *udphdr = &pkt->l4hdr_info.hdr.udp;
|
||||
|
||||
_net_rx_rss_add_chunk(rss_input, bytes_written,
|
||||
&udphdr->uh_sport, sizeof(uint16_t));
|
||||
|
||||
_net_rx_rss_add_chunk(rss_input, bytes_written,
|
||||
&udphdr->uh_dport, sizeof(uint16_t));
|
||||
}
|
||||
|
||||
uint32_t
|
||||
net_rx_pkt_calc_rss_hash(struct NetRxPkt *pkt,
|
||||
NetRxPktRssType type,
|
||||
@ -347,6 +361,34 @@ net_rx_pkt_calc_rss_hash(struct NetRxPkt *pkt,
|
||||
trace_net_rx_pkt_rss_ip6_ex();
|
||||
_net_rx_rss_prepare_ip6(&rss_input[0], pkt, true, &rss_length);
|
||||
break;
|
||||
case NetPktRssIpV6TcpEx:
|
||||
assert(pkt->isip6);
|
||||
assert(pkt->istcp);
|
||||
trace_net_rx_pkt_rss_ip6_ex_tcp();
|
||||
_net_rx_rss_prepare_ip6(&rss_input[0], pkt, true, &rss_length);
|
||||
_net_rx_rss_prepare_tcp(&rss_input[0], pkt, &rss_length);
|
||||
break;
|
||||
case NetPktRssIpV4Udp:
|
||||
assert(pkt->isip4);
|
||||
assert(pkt->isudp);
|
||||
trace_net_rx_pkt_rss_ip4_udp();
|
||||
_net_rx_rss_prepare_ip4(&rss_input[0], pkt, &rss_length);
|
||||
_net_rx_rss_prepare_udp(&rss_input[0], pkt, &rss_length);
|
||||
break;
|
||||
case NetPktRssIpV6Udp:
|
||||
assert(pkt->isip6);
|
||||
assert(pkt->isudp);
|
||||
trace_net_rx_pkt_rss_ip6_udp();
|
||||
_net_rx_rss_prepare_ip6(&rss_input[0], pkt, false, &rss_length);
|
||||
_net_rx_rss_prepare_udp(&rss_input[0], pkt, &rss_length);
|
||||
break;
|
||||
case NetPktRssIpV6UdpEx:
|
||||
assert(pkt->isip6);
|
||||
assert(pkt->isudp);
|
||||
trace_net_rx_pkt_rss_ip6_ex_udp();
|
||||
_net_rx_rss_prepare_ip6(&rss_input[0], pkt, true, &rss_length);
|
||||
_net_rx_rss_prepare_udp(&rss_input[0], pkt, &rss_length);
|
||||
break;
|
||||
default:
|
||||
assert(false);
|
||||
break;
|
||||
|
@ -133,7 +133,11 @@ typedef enum {
|
||||
NetPktRssIpV4Tcp,
|
||||
NetPktRssIpV6Tcp,
|
||||
NetPktRssIpV6,
|
||||
NetPktRssIpV6Ex
|
||||
NetPktRssIpV6Ex,
|
||||
NetPktRssIpV6TcpEx,
|
||||
NetPktRssIpV4Udp,
|
||||
NetPktRssIpV6Udp,
|
||||
NetPktRssIpV6UdpEx,
|
||||
} NetRxPktRssType;
|
||||
|
||||
/**
|
||||
|
@ -92,9 +92,13 @@ net_rx_pkt_l3_csum_validate_csum(size_t l3hdr_off, uint32_t csl, uint32_t cntr,
|
||||
|
||||
net_rx_pkt_rss_ip4(void) "Calculating IPv4 RSS hash"
|
||||
net_rx_pkt_rss_ip4_tcp(void) "Calculating IPv4/TCP RSS hash"
|
||||
net_rx_pkt_rss_ip4_udp(void) "Calculating IPv4/UDP RSS hash"
|
||||
net_rx_pkt_rss_ip6_tcp(void) "Calculating IPv6/TCP RSS hash"
|
||||
net_rx_pkt_rss_ip6_udp(void) "Calculating IPv6/UDP RSS hash"
|
||||
net_rx_pkt_rss_ip6(void) "Calculating IPv6 RSS hash"
|
||||
net_rx_pkt_rss_ip6_ex(void) "Calculating IPv6/EX RSS hash"
|
||||
net_rx_pkt_rss_ip6_ex_tcp(void) "Calculating IPv6/EX/TCP RSS hash"
|
||||
net_rx_pkt_rss_ip6_ex_udp(void) "Calculating IPv6/EX/UDP RSS hash"
|
||||
net_rx_pkt_rss_hash(size_t rss_length, uint32_t rss_hash) "RSS hash for %zu bytes: 0x%X"
|
||||
net_rx_pkt_rss_add_chunk(void* ptr, size_t size, size_t input_offset) "Add RSS chunk %p, %zu bytes, RSS input offset %zu bytes"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user