Date: Wed, 21 Nov 2012 21:03:14 +0000 (UTC) From: Andre Oppermann <andre@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r243379 - in user/andre/tcp_workqueue/sys: dev/bxe dev/cxgb dev/cxgbe dev/e1000 dev/ixgbe dev/mxge dev/oce dev/sfxge dev/vxge kern net netinet netinet6 sys Message-ID: <201211212103.qALL3EFF029525@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: andre Date: Wed Nov 21 21:03:14 2012 New Revision: 243379 URL: http://svnweb.freebsd.org/changeset/base/243379 Log: Move the RSS hash type definition from m_flags to m_pkthdr.csum_flags and change the names accordingly. The csum and offload section is a much more appropriate place for the RSS hash information. Modified: user/andre/tcp_workqueue/sys/dev/bxe/if_bxe.c user/andre/tcp_workqueue/sys/dev/cxgb/cxgb_sge.c user/andre/tcp_workqueue/sys/dev/cxgbe/t4_main.c user/andre/tcp_workqueue/sys/dev/cxgbe/t4_sge.c user/andre/tcp_workqueue/sys/dev/e1000/if_igb.c user/andre/tcp_workqueue/sys/dev/ixgbe/ixgbe.c user/andre/tcp_workqueue/sys/dev/ixgbe/ixv.c user/andre/tcp_workqueue/sys/dev/mxge/if_mxge.c user/andre/tcp_workqueue/sys/dev/oce/oce_if.c user/andre/tcp_workqueue/sys/dev/sfxge/sfxge_rx.c user/andre/tcp_workqueue/sys/dev/sfxge/sfxge_tx.c user/andre/tcp_workqueue/sys/dev/vxge/vxge.c user/andre/tcp_workqueue/sys/kern/uipc_mbuf.c user/andre/tcp_workqueue/sys/net/ieee8023ad_lacp.c user/andre/tcp_workqueue/sys/net/if_lagg.c user/andre/tcp_workqueue/sys/net/netisr.c user/andre/tcp_workqueue/sys/netinet/ip_output.c user/andre/tcp_workqueue/sys/netinet/sctp_input.c user/andre/tcp_workqueue/sys/netinet/sctp_output.c user/andre/tcp_workqueue/sys/netinet/tcp_input.c user/andre/tcp_workqueue/sys/netinet6/sctp6_usrreq.c user/andre/tcp_workqueue/sys/sys/mbuf.h Modified: user/andre/tcp_workqueue/sys/dev/bxe/if_bxe.c ============================================================================== --- user/andre/tcp_workqueue/sys/dev/bxe/if_bxe.c Wed Nov 21 20:29:27 2012 (r243378) +++ user/andre/tcp_workqueue/sys/dev/bxe/if_bxe.c Wed Nov 21 21:03:14 2012 (r243379) @@ -9455,7 +9455,7 @@ bxe_tx_mq_start(struct ifnet *ifp, struc fp_index = 0; /* If using flow ID, assign the TX queue based on the flow ID. */ - if ((m->m_flags & M_FLOWID) != 0) + if (CSUM_HASH_GET(m) != 0) fp_index = m->m_pkthdr.flowid % sc->num_queues; /* Select the fastpath TX queue for the frame. */ @@ -15047,7 +15047,7 @@ bxe_rxeof(struct bxe_fastpath *fp) #if __FreeBSD_version >= 800000 /* Tell OS what RSS queue was used for this flow. */ m->m_pkthdr.flowid = fp->index; - m->m_flags |= M_FLOWID; + CSUM_HASH_SET(m, CSUM_HASH_OPAQUE); #endif /* Last chance to check for problems. */ Modified: user/andre/tcp_workqueue/sys/dev/cxgb/cxgb_sge.c ============================================================================== --- user/andre/tcp_workqueue/sys/dev/cxgb/cxgb_sge.c Wed Nov 21 20:29:27 2012 (r243378) +++ user/andre/tcp_workqueue/sys/dev/cxgb/cxgb_sge.c Wed Nov 21 21:03:14 2012 (r243379) @@ -1739,7 +1739,7 @@ cxgb_transmit(struct ifnet *ifp, struct return (0); } - if (m->m_flags & M_FLOWID) + if (CSUM_HASH_GET(m)) qidx = (m->m_pkthdr.flowid % pi->nqsets) + pi->first_qset; qs = &pi->adapter->sge.qs[qidx]; @@ -2906,7 +2906,7 @@ process_responses(adapter_t *adap, struc eop = get_packet(adap, drop_thresh, qs, mh, r); if (eop) { if (r->rss_hdr.hash_type && !adap->timestamp) - mh->mh_head->m_flags |= M_FLOWID; + CSUM_HASH_SET(mh->mh_head, CSUM_HASH_OPAQUE); mh->mh_head->m_pkthdr.flowid = rss_hash; } Modified: user/andre/tcp_workqueue/sys/dev/cxgbe/t4_main.c ============================================================================== --- user/andre/tcp_workqueue/sys/dev/cxgbe/t4_main.c Wed Nov 21 20:29:27 2012 (r243378) +++ user/andre/tcp_workqueue/sys/dev/cxgbe/t4_main.c Wed Nov 21 21:03:14 2012 (r243379) @@ -1171,7 +1171,7 @@ cxgbe_transmit(struct ifnet *ifp, struct return (ENETDOWN); } - if (m->m_flags & M_FLOWID) + if (CSUM_HASH_GET(m)) txq += (m->m_pkthdr.flowid % pi->ntxq); br = txq->br; Modified: user/andre/tcp_workqueue/sys/dev/cxgbe/t4_sge.c ============================================================================== --- user/andre/tcp_workqueue/sys/dev/cxgbe/t4_sge.c Wed Nov 21 20:29:27 2012 (r243378) +++ user/andre/tcp_workqueue/sys/dev/cxgbe/t4_sge.c Wed Nov 21 21:03:14 2012 (r243379) @@ -1122,7 +1122,7 @@ t4_eth_rx(struct sge_iq *iq, const struc m0->m_data += fl_pktshift; m0->m_pkthdr.rcvif = ifp; - m0->m_flags |= M_FLOWID; + CSUM_HASH_SET(m0, CSUM_HASH_OPAQUE); m0->m_pkthdr.flowid = rss->hash_val; if (cpl->csum_calc && !cpl->err_vec) { Modified: user/andre/tcp_workqueue/sys/dev/e1000/if_igb.c ============================================================================== --- user/andre/tcp_workqueue/sys/dev/e1000/if_igb.c Wed Nov 21 20:29:27 2012 (r243378) +++ user/andre/tcp_workqueue/sys/dev/e1000/if_igb.c Wed Nov 21 21:03:14 2012 (r243379) @@ -952,7 +952,7 @@ igb_mq_start(struct ifnet *ifp, struct m int i, err = 0; /* Which queue to use */ - if ((m->m_flags & M_FLOWID) != 0) + if (CSUM_HASH_GET(m) != 0) i = m->m_pkthdr.flowid % adapter->num_queues; else i = curcpu % adapter->num_queues; @@ -4855,7 +4855,7 @@ igb_rxeof(struct igb_queue *que, int cou } #if __FreeBSD_version >= 800000 rxr->fmp->m_pkthdr.flowid = que->msix; - rxr->fmp->m_flags |= M_FLOWID; + CSUM_HASH_SET(rxr->fmp, CSUM_HASH_OPAQUE); #endif sendmp = rxr->fmp; /* Make sure to set M_PKTHDR. */ Modified: user/andre/tcp_workqueue/sys/dev/ixgbe/ixgbe.c ============================================================================== --- user/andre/tcp_workqueue/sys/dev/ixgbe/ixgbe.c Wed Nov 21 20:29:27 2012 (r243378) +++ user/andre/tcp_workqueue/sys/dev/ixgbe/ixgbe.c Wed Nov 21 21:03:14 2012 (r243379) @@ -812,7 +812,7 @@ ixgbe_mq_start(struct ifnet *ifp, struct int i = 0, err = 0; /* Which queue to use */ - if ((m->m_flags & M_FLOWID) != 0) + if (CSUM_HASH_GET(m) != 0) i = m->m_pkthdr.flowid % adapter->num_queues; else i = curcpu % adapter->num_queues; @@ -4640,7 +4640,7 @@ ixgbe_rxeof(struct ix_queue *que, int co ixgbe_rx_checksum(staterr, sendmp, ptype); #if __FreeBSD_version >= 800000 sendmp->m_pkthdr.flowid = que->msix; - sendmp->m_flags |= M_FLOWID; + CSUM_HASH_SET(sendmp, CSUM_HASH_OPAQUE); #endif } next_desc: Modified: user/andre/tcp_workqueue/sys/dev/ixgbe/ixv.c ============================================================================== --- user/andre/tcp_workqueue/sys/dev/ixgbe/ixv.c Wed Nov 21 20:29:27 2012 (r243378) +++ user/andre/tcp_workqueue/sys/dev/ixgbe/ixv.c Wed Nov 21 21:03:14 2012 (r243379) @@ -583,7 +583,7 @@ ixv_mq_start(struct ifnet *ifp, struct m int i = 0, err = 0; /* Which queue to use */ - if ((m->m_flags & M_FLOWID) != 0) + if (CSUM_HASH_GET(m) != 0) i = m->m_pkthdr.flowid % adapter->num_queues; txr = &adapter->tx_rings[i]; @@ -3475,7 +3475,7 @@ ixv_rxeof(struct ix_queue *que, int coun ixv_rx_checksum(staterr, sendmp, ptype); #if __FreeBSD_version >= 800000 sendmp->m_pkthdr.flowid = que->msix; - sendmp->m_flags |= M_FLOWID; + CSUM_HASH_SET(sendmp, CSUM_HASH_OPAQUE); #endif } next_desc: Modified: user/andre/tcp_workqueue/sys/dev/mxge/if_mxge.c ============================================================================== --- user/andre/tcp_workqueue/sys/dev/mxge/if_mxge.c Wed Nov 21 20:29:27 2012 (r243378) +++ user/andre/tcp_workqueue/sys/dev/mxge/if_mxge.c Wed Nov 21 21:03:14 2012 (r243379) @@ -2593,7 +2593,7 @@ mxge_rx_done_big(struct mxge_slice_state /* flowid only valid if RSS hashing is enabled */ if (sc->num_slices > 1) { m->m_pkthdr.flowid = (ss - sc->ss); - m->m_flags |= M_FLOWID; + CSUM_HASH_SET(m, CSUM_HASH_OPAQUE); } /* pass the frame up the stack */ (*ifp->if_input)(ifp, m); @@ -2658,7 +2658,7 @@ mxge_rx_done_small(struct mxge_slice_sta /* flowid only valid if RSS hashing is enabled */ if (sc->num_slices > 1) { m->m_pkthdr.flowid = (ss - sc->ss); - m->m_flags |= M_FLOWID; + CSUM_HASH_SET(m, CSUM_HASH_OPAQUE); } /* pass the frame up the stack */ (*ifp->if_input)(ifp, m); Modified: user/andre/tcp_workqueue/sys/dev/oce/oce_if.c ============================================================================== --- user/andre/tcp_workqueue/sys/dev/oce/oce_if.c Wed Nov 21 20:29:27 2012 (r243378) +++ user/andre/tcp_workqueue/sys/dev/oce/oce_if.c Wed Nov 21 21:03:14 2012 (r243379) @@ -485,7 +485,7 @@ oce_multiq_start(struct ifnet *ifp, stru int queue_index = 0; int status = 0; - if ((m->m_flags & M_FLOWID) != 0) + if (CSUM_HASH_GET(m) != 0) queue_index = m->m_pkthdr.flowid % sc->nwqs; wq = sc->wq[queue_index]; @@ -1280,7 +1280,7 @@ oce_rx(struct oce_rq *rq, uint32_t rqe_i m->m_pkthdr.rcvif = sc->ifp; #if __FreeBSD_version >= 800000 m->m_pkthdr.flowid = rq->queue_index; - m->m_flags |= M_FLOWID; + CSUM_HASH_SET(m, CSUM_HASH_OPAQUE); #endif /* This deternies if vlan tag is Valid */ if (oce_cqe_vtp_valid(sc, cqe)) { Modified: user/andre/tcp_workqueue/sys/dev/sfxge/sfxge_rx.c ============================================================================== --- user/andre/tcp_workqueue/sys/dev/sfxge/sfxge_rx.c Wed Nov 21 20:29:27 2012 (r243378) +++ user/andre/tcp_workqueue/sys/dev/sfxge/sfxge_rx.c Wed Nov 21 21:03:14 2012 (r243379) @@ -304,7 +304,7 @@ sfxge_rx_deliver(struct sfxge_softc *sc, if (rx_desc->flags & EFX_PKT_TCP) { m->m_pkthdr.flowid = EFX_RX_HASH_VALUE(EFX_RX_HASHALG_TOEPLITZ, mtod(m, uint8_t *)); - m->m_flags |= M_FLOWID; + CSUM_HASH_SET(m, CSUM_HASH_OPAQUE); } #endif m->m_data += sc->rx_prefix_size; @@ -355,7 +355,7 @@ sfxge_lro_deliver(struct sfxge_lro_state #ifdef SFXGE_HAVE_MQ m->m_pkthdr.flowid = c->conn_hash; - m->m_flags |= M_FLOWID; + CSUM_HASH_SET(m, CSUM_HASH_OPAQUE); #endif m->m_pkthdr.csum_flags = csum_flags; __sfxge_rx_deliver(sc, m); Modified: user/andre/tcp_workqueue/sys/dev/sfxge/sfxge_tx.c ============================================================================== --- user/andre/tcp_workqueue/sys/dev/sfxge/sfxge_tx.c Wed Nov 21 20:29:27 2012 (r243378) +++ user/andre/tcp_workqueue/sys/dev/sfxge/sfxge_tx.c Wed Nov 21 21:03:14 2012 (r243379) @@ -595,7 +595,7 @@ sfxge_if_transmit(struct ifnet *ifp, str if (m->m_pkthdr.csum_flags & (CSUM_IP_UDP|CSUM_IP_TCP|CSUM_TSO)) { int index = 0; - if (m->m_flags & M_FLOWID) { + if (CSUM_HASH_GET(m)) { uint32_t hash = m->m_pkthdr.flowid; index = sc->rx_indir_table[hash % SFXGE_RX_SCALE_MAX]; Modified: user/andre/tcp_workqueue/sys/dev/vxge/vxge.c ============================================================================== --- user/andre/tcp_workqueue/sys/dev/vxge/vxge.c Wed Nov 21 20:29:27 2012 (r243378) +++ user/andre/tcp_workqueue/sys/dev/vxge/vxge.c Wed Nov 21 21:03:14 2012 (r243379) @@ -660,7 +660,7 @@ vxge_mq_send(ifnet_t ifp, mbuf_t m_head) if (vdev->config.tx_steering) { i = vxge_vpath_get(vdev, m_head); - } else if ((m_head->m_flags & M_FLOWID) != 0) { + } else if (CSUM_HASH_GET(m_head) != 0) { i = m_head->m_pkthdr.flowid % vdev->no_of_vpath; } @@ -1070,7 +1070,7 @@ vxge_rx_compl(vxge_hal_vpath_h vpath_han vxge_rx_checksum(ext_info, mbuf_up); #if __FreeBSD_version >= 800000 - mbuf_up->m_flags |= M_FLOWID; + CSUM_HASH_SET(mbuf_up, CSUM_HASH_OPAQUE); mbuf_up->m_pkthdr.flowid = vpath->vp_index; #endif /* Post-Read sync for buffers */ Modified: user/andre/tcp_workqueue/sys/kern/uipc_mbuf.c ============================================================================== --- user/andre/tcp_workqueue/sys/kern/uipc_mbuf.c Wed Nov 21 20:29:27 2012 (r243378) +++ user/andre/tcp_workqueue/sys/kern/uipc_mbuf.c Wed Nov 21 21:03:14 2012 (r243379) @@ -1695,7 +1695,7 @@ m_print(const struct mbuf *m, int maxlen m2->m_pkthdr.csum_flags, M_CSUM_FLAG_BITS, m2->m_pkthdr.csum_l2hlen, m2->m_pkthdr.csum_l3hlen, m2->m_pkthdr.csum_l4hlen, m2->m_pkthdr.tso_segsz, - m2->m_pkthdr.ether_vtag, M_HASHTYPE_GET(m2)); + m2->m_pkthdr.ether_vtag, CSUM_HASH_GET(m2)); for (mt = SLIST_FIRST(&m2->m_pkthdr.tags); mt != NULL; mt = SLIST_NEXT(mt, m_tag_link)) { Modified: user/andre/tcp_workqueue/sys/net/ieee8023ad_lacp.c ============================================================================== --- user/andre/tcp_workqueue/sys/net/ieee8023ad_lacp.c Wed Nov 21 20:29:27 2012 (r243378) +++ user/andre/tcp_workqueue/sys/net/ieee8023ad_lacp.c Wed Nov 21 21:03:14 2012 (r243379) @@ -815,7 +815,7 @@ lacp_select_tx_port(struct lagg_softc *s return (NULL); } - if (sc->use_flowid && (m->m_flags & M_FLOWID)) + if (sc->use_flowid && CSUM_HASH_GET(m)) hash = m->m_pkthdr.flowid; else hash = lagg_hashmbuf(sc, m, lsc->lsc_hashkey); Modified: user/andre/tcp_workqueue/sys/net/if_lagg.c ============================================================================== --- user/andre/tcp_workqueue/sys/net/if_lagg.c Wed Nov 21 20:29:27 2012 (r243378) +++ user/andre/tcp_workqueue/sys/net/if_lagg.c Wed Nov 21 21:03:14 2012 (r243379) @@ -174,7 +174,7 @@ static int lagg_failover_rx_all = 0; /* SYSCTL_INT(_net_link_lagg, OID_AUTO, failover_rx_all, CTLFLAG_RW, &lagg_failover_rx_all, 0, "Accept input from any interface in a failover lagg"); -static int def_use_flowid = 1; /* Default value for using M_FLOWID */ +static int def_use_flowid = 1; /* Default value for using flowid */ TUNABLE_INT("net.link.lagg.default_use_flowid", &def_use_flowid); SYSCTL_INT(_net_link_lagg, OID_AUTO, default_use_flowid, CTLFLAG_RW, &def_use_flowid, 0, @@ -1760,7 +1760,7 @@ lagg_lb_start(struct lagg_softc *sc, str struct lagg_port *lp = NULL; uint32_t p = 0; - if (sc->use_flowid && (m->m_flags & M_FLOWID)) + if (sc->use_flowid && CSUM_HASH_GET(m)) p = m->m_pkthdr.flowid; else p = lagg_hashmbuf(sc, m, lb->lb_key); Modified: user/andre/tcp_workqueue/sys/net/netisr.c ============================================================================== --- user/andre/tcp_workqueue/sys/net/netisr.c Wed Nov 21 20:29:27 2012 (r243378) +++ user/andre/tcp_workqueue/sys/net/netisr.c Wed Nov 21 21:03:14 2012 (r243379) @@ -727,12 +727,12 @@ netisr_select_cpuid(struct netisr_proto } if (policy == NETISR_POLICY_FLOW) { - if (!(m->m_flags & M_FLOWID) && npp->np_m2flow != NULL) { + if (!CSUM_HASH_GET(m) && npp->np_m2flow != NULL) { m = npp->np_m2flow(m, source); if (m == NULL) return (NULL); } - if (m->m_flags & M_FLOWID) { + if (CSUM_HASH_GET(m)) { *cpuidp = netisr_default_flow2cpu(m->m_pkthdr.flowid); return (m); Modified: user/andre/tcp_workqueue/sys/netinet/ip_output.c ============================================================================== --- user/andre/tcp_workqueue/sys/netinet/ip_output.c Wed Nov 21 20:29:27 2012 (r243378) +++ user/andre/tcp_workqueue/sys/netinet/ip_output.c Wed Nov 21 21:03:14 2012 (r243379) @@ -140,7 +140,7 @@ ip_output(struct mbuf *m, struct mbuf *o M_SETFIB(m, inp->inp_inc.inc_fibnum); if (inp->inp_flags & (INP_HW_FLOWID|INP_SW_FLOWID)) { m->m_pkthdr.flowid = inp->inp_flowid; - m->m_flags |= M_FLOWID; + CSUM_HASH_SET(m, CSUM_HASH_OPAQUE); } } Modified: user/andre/tcp_workqueue/sys/netinet/sctp_input.c ============================================================================== --- user/andre/tcp_workqueue/sys/netinet/sctp_input.c Wed Nov 21 20:29:27 2012 (r243378) +++ user/andre/tcp_workqueue/sys/netinet/sctp_input.c Wed Nov 21 21:03:14 2012 (r243379) @@ -6015,7 +6015,7 @@ sctp_input_with_port(struct mbuf *i_pak, m->m_pkthdr.len, if_name(m->m_pkthdr.rcvif), m->m_pkthdr.csum_flags); - if (m->m_flags & M_FLOWID) { + if (CSUM_HASH_GET(m)) { mflowid = m->m_pkthdr.flowid; use_mflowid = 1; } else { @@ -6112,7 +6112,7 @@ sctp_input(struct mbuf *m, int off) uint32_t flowid, tag; if (mp_ncpus > 1) { - if (m->m_flags & M_FLOWID) { + if (CSUM_HASH_GET(m)) { flowid = m->m_pkthdr.flowid; } else { /* @@ -6131,7 +6131,7 @@ sctp_input(struct mbuf *m, int off) tag = htonl(sh->v_tag); flowid = tag ^ ntohs(sh->dest_port) ^ ntohs(sh->src_port); m->m_pkthdr.flowid = flowid; - m->m_flags |= M_FLOWID; + CSUM_HASH_SET(m, CSUM_HASH_OPAQUE); } cpu_to_use = sctp_cpuarry[flowid % mp_ncpus]; sctp_queue_to_mcore(m, off, cpu_to_use); Modified: user/andre/tcp_workqueue/sys/netinet/sctp_output.c ============================================================================== --- user/andre/tcp_workqueue/sys/netinet/sctp_output.c Wed Nov 21 20:29:27 2012 (r243378) +++ user/andre/tcp_workqueue/sys/netinet/sctp_output.c Wed Nov 21 21:03:14 2012 (r243379) @@ -3957,11 +3957,11 @@ sctp_lowlevel_chunk_output(struct sctp_i } #endif m->m_pkthdr.flowid = net->flowid; - m->m_flags |= M_FLOWID; + CSUM_HASH_SET(m, CSUM_HASH_OPAQUE); } else { if (use_mflowid != 0) { m->m_pkthdr.flowid = mflowid; - m->m_flags |= M_FLOWID; + CSUM_HASH_SET(m, CSUM_HASH_OPAQUE); } } packet_length = sctp_calculate_len(m); @@ -4246,11 +4246,11 @@ sctp_lowlevel_chunk_output(struct sctp_i } #endif m->m_pkthdr.flowid = net->flowid; - m->m_flags |= M_FLOWID; + CSUM_HASH_SET(m, CSUM_HASH_OPAQUE); } else { if (use_mflowid != 0) { m->m_pkthdr.flowid = mflowid; - m->m_flags |= M_FLOWID; + CSUM_HASH_SET(m, CSUM_HASH_OPAQUE); } } packet_length = sctp_calculate_len(m); @@ -10881,7 +10881,7 @@ sctp_send_resp_msg(struct sockaddr *src, SCTP_BUF_NEXT(mout) = cause; if (use_mflowid != 0) { mout->m_pkthdr.flowid = mflowid; - mout->m_flags |= M_FLOWID; + CSUM_HASH_SET(mout, CSUM_HASH_OPAQUE); } #ifdef INET ip = NULL; Modified: user/andre/tcp_workqueue/sys/netinet/tcp_input.c ============================================================================== --- user/andre/tcp_workqueue/sys/netinet/tcp_input.c Wed Nov 21 20:29:27 2012 (r243378) +++ user/andre/tcp_workqueue/sys/netinet/tcp_input.c Wed Nov 21 21:03:14 2012 (r243379) @@ -876,7 +876,7 @@ findpcb: } INP_WLOCK_ASSERT(inp); if (!(inp->inp_flags & INP_HW_FLOWID) - && (m->m_flags & M_FLOWID) + && (CSUM_HASH_GET(m)) && ((inp->inp_socket == NULL) || !(inp->inp_socket->so_options & SO_ACCEPTCONN))) { inp->inp_flags |= INP_HW_FLOWID; Modified: user/andre/tcp_workqueue/sys/netinet6/sctp6_usrreq.c ============================================================================== --- user/andre/tcp_workqueue/sys/netinet6/sctp6_usrreq.c Wed Nov 21 20:29:27 2012 (r243378) +++ user/andre/tcp_workqueue/sys/netinet6/sctp6_usrreq.c Wed Nov 21 21:03:14 2012 (r243379) @@ -113,7 +113,7 @@ sctp6_input_with_port(struct mbuf **i_pa m->m_pkthdr.len, if_name(m->m_pkthdr.rcvif), m->m_pkthdr.csum_flags); - if (m->m_flags & M_FLOWID) { + if (CSUM_HASH_GET(m)) { mflowid = m->m_pkthdr.flowid; use_mflowid = 1; } else { Modified: user/andre/tcp_workqueue/sys/sys/mbuf.h ============================================================================== --- user/andre/tcp_workqueue/sys/sys/mbuf.h Wed Nov 21 20:29:27 2012 (r243378) +++ user/andre/tcp_workqueue/sys/sys/mbuf.h Wed Nov 21 21:03:14 2012 (r243379) @@ -213,8 +213,6 @@ struct mbuf { #define M_PROTO6 0x00080000 /* protocol-specific */ #define M_PROTO7 0x00100000 /* protocol-specific */ #define M_PROTO8 0x00200000 /* protocol-specific */ -#define M_FLOWID 0x00400000 /* deprecated: flowid is valid */ -#define M_HASHTYPEBITS 0x0F000000 /* mask of bits holding flowid hash type */ #define M_FLAG_BITS \ "\20\27FLOWID\26PROTO8\25PROTO7\24PROTO6\23NOFREE\22PROMISC" \ @@ -240,40 +238,39 @@ struct mbuf { * can then be used to maintain ordering while delivering packets to the OS * via parallel input queues, as well as to provide a stateless affinity * model. NIC drivers can pass up the hash via m->m_pkthdr.flowid, and set - * m_flag fields to indicate how the hash should be interpreted by the + * csum_flags fields to indicate how the hash should be interpreted by the * network stack. * * Most NICs support RSS, which provides ordering and explicit affinity, and * use the hash m_flag bits to indicate what header fields were covered by - * the hash. M_HASHTYPE_OPAQUE can be set by non-RSS cards or configurations + * the hash. CSUM_HASH_OPAQUE can be set by non-RSS cards or configurations * that provide an opaque flow identifier, allowing for ordering and * distribution without explicit affinity. */ -#define M_HASHTYPE_SHIFT 24 -#define M_HASHTYPE_NONE 0x0 -#define M_HASHTYPE_RSS_IPV4 0x1 /* IPv4 2-tuple */ -#define M_HASHTYPE_RSS_TCP_IPV4 0x2 /* TCPv4 4-tuple */ -#define M_HASHTYPE_RSS_IPV6 0x3 /* IPv6 2-tuple */ -#define M_HASHTYPE_RSS_TCP_IPV6 0x4 /* TCPv6 4-tuple */ -#define M_HASHTYPE_RSS_IPV6_EX 0x5 /* IPv6 2-tuple + ext hdrs */ -#define M_HASHTYPE_RSS_TCP_IPV6_EX 0x6 /* TCPv6 4-tiple + ext hdrs */ -#define M_HASHTYPE_OPAQUE 0xf /* ordering, not affinity */ - -#define M_HASHTYPE_CLEAR(m) (m)->m_flags &= ~(M_HASHTYPEBITS) -#define M_HASHTYPE_GET(m) (((m)->m_flags & M_HASHTYPEBITS) >> \ - M_HASHTYPE_SHIFT) -#define M_HASHTYPE_SET(m, v) do { \ - (m)->m_flags &= ~M_HASHTYPEBITS; \ - (m)->m_flags |= ((v) << M_HASHTYPE_SHIFT); \ +#define CSUM_HASH_NONE 0x0 /* no RSS hash computed */ +#define CSUM_HASH_IPV4 0x1 /* IPv4 2-tuple */ +#define CSUM_HASH_TCP_IPV4 0x2 /* TCPv4 4-tuple */ +#define CSUM_HASH_IPV6 0x3 /* IPv6 2-tuple */ +#define CSUM_HASH_TCP_IPV6 0x4 /* TCPv6 4-tuple */ +#define CSUM_HASH_IPV6_EX 0x5 /* IPv6 2-tuple + ext hdrs */ +#define CSUM_HASH_TCP_IPV6_EX 0x6 /* TCPv6 4-tiple + ext hdrs */ +#define CSUM_HASH_OPAQUE 0xf /* ordering, not affinity */ + +#define CSUM_HASH_MASK 0x0000000F +#define CSUM_HASH_CLEAR(m) ((m)->m_pkthdr.csum_flags &= ~CSUM_HASH_MASK) +#define CSUM_HASH_GET(m) ((m)->m_pkthdr.csum_flags & CSUM_HASH_MASK) +#define CSUM_HASH_SET(m, v) do { \ + (m)->m_pkthdr.csum_flags &= ~CSUM_HASH_MASK; \ + (m)->m_pkthdr.csum_flags |= (v); \ } while (0) -#define M_HASHTYPE_TEST(m, v) (M_HASHTYPE_GET(m) == (v)) +#define CSUM_HASH_TEST(m, v) (CSUM_HASH_GET(m) == (v)) /* * Flags preserved when copying m_pkthdr. */ #define M_COPYFLAGS \ (M_PKTHDR|M_EOR|M_RDONLY|M_PROTOFLAGS|M_SKIP_FIREWALL|M_BCAST|M_MCAST|\ - M_FRAG|M_FIRSTFRAG|M_LASTFRAG|M_VLANTAG|M_PROMISC|M_FIB|M_HASHTYPEBITS) + M_FRAG|M_FIRSTFRAG|M_LASTFRAG|M_VLANTAG|M_PROMISC|M_FIB) /* * External buffer types: identify ext_buf type.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201211212103.qALL3EFF029525>