Date: Mon, 13 Aug 2007 01:07:13 GMT From: Kip Macy <kmacy@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 125093 for review Message-ID: <200708130107.l7D17DJs064325@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=125093 Change 125093 by kmacy@kmacy_home:ethng on 2007/08/13 01:06:28 rss_hash is a crc of the ip/port 4-tuple used by hardware for choosing a queue - add rss_hash to inpcb and mbuf pkthdr - initialize to counter value initially for the case where UDP never receives a packet and we just need to pick a tx queue Affected files ... .. //depot/projects/ethng/src/sys/kern/kern_mbuf.c#2 edit .. //depot/projects/ethng/src/sys/netinet/in_pcb.c#2 edit .. //depot/projects/ethng/src/sys/netinet/in_pcb.h#2 edit .. //depot/projects/ethng/src/sys/sys/mbuf.h#2 edit Differences ... ==== //depot/projects/ethng/src/sys/kern/kern_mbuf.c#2 (text+ko) ==== @@ -321,6 +321,7 @@ m->m_pkthdr.tso_segsz = 0; m->m_pkthdr.ether_vtag = 0; SLIST_INIT(&m->m_pkthdr.tags); + m->m_pkthdr.rss_hash = 0; #ifdef MAC /* If the label init fails, fail the alloc */ error = mac_init_mbuf(m, how); ==== //depot/projects/ethng/src/sys/netinet/in_pcb.c#2 (text+ko) ==== @@ -175,7 +175,8 @@ { struct inpcb *inp; int error; - + static int rss_hash = 1; + INP_INFO_WLOCK_ASSERT(pcbinfo); error = 0; inp = uma_zalloc(pcbinfo->ipi_zone, M_NOWAIT); @@ -184,6 +185,7 @@ bzero(inp, inp_zero_size); inp->inp_pcbinfo = pcbinfo; inp->inp_socket = so; + inp->inp_rss_hash = rss_hash++; #ifdef MAC error = mac_init_inpcb(inp, M_NOWAIT); if (error != 0) ==== //depot/projects/ethng/src/sys/netinet/in_pcb.h#2 (text+ko) ==== @@ -168,6 +168,7 @@ struct inpcbport *inp_phd; /* head of this list */ #define inp_zero_size offsetof(struct inpcb, inp_gencnt) inp_gen_t inp_gencnt; /* generation count of this instance */ + uint32_t inp_rss_hash; struct mtx inp_mtx; #define in6p_faddr inp_inc.inc6_faddr ==== //depot/projects/ethng/src/sys/sys/mbuf.h#2 (text+ko) ==== @@ -78,7 +78,7 @@ #endif /* _KERNEL */ #if defined(__LP64__) -#define M_HDR_PAD 6 +#define M_HDR_PAD 2 #else #define M_HDR_PAD 2 #endif @@ -92,7 +92,7 @@ caddr_t mh_data; /* location of data */ int mh_len; /* amount of data in this mbuf */ int mh_flags; /* flags; see below */ - short mh_type; /* type of data in this mbuf */ + short mh_type; /* type of data in this mbuf */ uint8_t pad[M_HDR_PAD];/* word align */ }; @@ -121,6 +121,7 @@ u_int16_t tso_segsz; /* TSO segment size */ u_int16_t ether_vtag; /* Ethernet 802.1p+q vlan tag */ SLIST_HEAD(packet_tags, m_tag) tags; /* list of packet tags */ + uint32_t rss_hash; /* RSS hash for this 4-tuple */ }; /* @@ -161,6 +162,7 @@ #define m_flags m_hdr.mh_flags #define m_nextpkt m_hdr.mh_nextpkt #define m_act m_nextpkt +#define m_rss_hash m_hdr.mh_rss_hash #define m_pkthdr M_dat.MH.MH_pkthdr #define m_ext M_dat.MH.MH_dat.MH_ext #define m_pktdat M_dat.MH.MH_dat.MH_databuf
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200708130107.l7D17DJs064325>