From owner-soc-status@FreeBSD.ORG Mon Jun 20 21:21:36 2011 Return-Path: Delivered-To: soc-status@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 81F89106564A; Mon, 20 Jun 2011 21:21:36 +0000 (UTC) (envelope-from syuu@dokukino.com) Received: from mail-yi0-f54.google.com (mail-yi0-f54.google.com [209.85.218.54]) by mx1.freebsd.org (Postfix) with ESMTP id 25FBE8FC08; Mon, 20 Jun 2011 21:21:35 +0000 (UTC) Received: by yic13 with SMTP id 13so3266607yic.13 for ; Mon, 20 Jun 2011 14:21:35 -0700 (PDT) Received: by 10.151.115.6 with SMTP id s6mr6125580ybm.130.1308604895105; Mon, 20 Jun 2011 14:21:35 -0700 (PDT) MIME-Version: 1.0 Received: by 10.151.110.20 with HTTP; Mon, 20 Jun 2011 14:20:55 -0700 (PDT) From: Takuya ASADA Date: Tue, 21 Jun 2011 06:20:55 +0900 Message-ID: To: soc-status@freebsd.org, Kazuya Goda , "Robert N. M. Watson" , George Neville-Neil Content-Type: text/plain; charset=UTF-8 Cc: Subject: [mq_bpf] status report #4 X-BeenThere: soc-status@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Summer of Code Status Reports and Discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 20 Jun 2011 21:21:36 -0000 *Project summary The project goal is to support multiqueue network interface on BPF, and provide interfaces for multithreaded packet processing using BPF. Modern high performance NICs have multiple receive/send queues and RSS feature, this allows to process packet concurrently on multiple processors. Main purpose of the project is to support these hardware and get benefit of parallelism. *Subject changed I changed status report subject from this report, from submitted date to week number. Here's old subjects and week number mapping: Weekly status report (27th May) => week1 Weekly status report (6th June) => week2 Weekly status report (14th June) => week3 Here's status update from last week: *multiqueue bpf emulation on SOFTRSS improvements http://p4web.freebsd.org/@@195038?ac=10 In previous submit, IFCAP_MULTIQUEUE is assigned the interface when multiqueue BPF enabled(BIOCENAQMASK). I decided to not assign the flag, but assign IFCAP_SOFT_MULTIQUEUE. So now we can identify it's real multiqueue NIC or software emulation. Added rxqid/txqid setting code in ether_output_frame, to handle TX queue handling. (m->m_pkthdr.txqid is always 0, ifp->if_txq_num is 1 when SOFTRSS) Added ifp->if_rxq_affinity/ifp->if_txq_affinity initialization code. *Reduce lock contention on BPFIF_LOCK http://p4web.freebsd.org/@@195044?ac=10 mtx replaced with rmlock on BPFIF_LOCK. Looks working, but more tests and performance analysis are required. *thoughts Is there nwsid != cpuid situations? If so, which is used in netisr_select_cpuid? If netisr_select_cpuid using real cpuid, when cpuid > nws_count situation occurs, bpf_mtap refers outside of an array(on d->qmask.qm_rxq_mask), kernel must die there. Even if netisr_select_cpuid using nwsid, if there's nwsid != cpuid situation, BIOCRXQAFFINITY should return the mapping info. *thoughts2 Can we make situation rxqid != cpuid on multiqueue NIC by changing MSI-x interrupt assignments?