From owner-p4-projects@FreeBSD.ORG Mon Aug 13 01:07:14 2007 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B050316A468; Mon, 13 Aug 2007 01:07:14 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8024016A420 for ; Mon, 13 Aug 2007 01:07:14 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 6D3DE13C45D for ; Mon, 13 Aug 2007 01:07:14 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id l7D17Eht064328 for ; Mon, 13 Aug 2007 01:07:14 GMT (envelope-from kmacy@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id l7D17DJs064325 for perforce@freebsd.org; Mon, 13 Aug 2007 01:07:13 GMT (envelope-from kmacy@freebsd.org) Date: Mon, 13 Aug 2007 01:07:13 GMT Message-Id: <200708130107.l7D17DJs064325@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to kmacy@freebsd.org using -f From: Kip Macy To: Perforce Change Reviews Cc: Subject: PERFORCE change 125093 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 13 Aug 2007 01:07:15 -0000 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