From owner-soc-status@FreeBSD.ORG Sat Jul 2 01:22:59 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 6DC29106564A; Sat, 2 Jul 2011 01:22:59 +0000 (UTC) (envelope-from syuu@dokukino.com) Received: from mail-qw0-f54.google.com (mail-qw0-f54.google.com [209.85.216.54]) by mx1.freebsd.org (Postfix) with ESMTP id 101AE8FC0C; Sat, 2 Jul 2011 01:22:58 +0000 (UTC) Received: by qwc9 with SMTP id 9so2509250qwc.13 for ; Fri, 01 Jul 2011 18:22:58 -0700 (PDT) Received: by 10.229.62.66 with SMTP id w2mr3088408qch.224.1309569778262; Fri, 01 Jul 2011 18:22:58 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.239.146 with HTTP; Fri, 1 Jul 2011 18:22:18 -0700 (PDT) From: Takuya ASADA Date: Sat, 2 Jul 2011 10:22:18 +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 #5 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: Sat, 02 Jul 2011 01:22:59 -0000 Sorry for late the report...I thought to send the report after submitting changes, but I late to fix bugs and make it work... *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. Here's status update from last week: *queue len, queue affinity ioctls moved to the device ioctl http://p4web.freebsd.org/@md=d&cd=//&c=xHa@/195501?ac=10 http://p4web.freebsd.org/@@195608?ac=10 I realized hardware queue information is not really belongs to BPF, which belongs to the device. So I decided to try move these ioctls to the device driver's ioctl, and access via socket descriptor just like what ifconfig does. I removed following ioctls from bpf.h: BIOCRXQLEN BIOCTXQLEN BIOCRXQAFFINITY BIOCTXQAFFINITY And I added following ioctls to sockio.h: SIOCGIFQLEN SIOCGIFRXQAFFINITY SIOCGIFTXQAFFINITY To handle these ioctls, and also access these info from BPF, I added these functions to struct ifnet: int (*if_get_rxqueue_len)(struct ifnet *); int (*if_get_txqueue_len)(struct ifnet *); int (*if_get_rxqueue_affinity)(struct ifnet *, int); int (*if_get_txqueue_affinity)(struct ifnet *, int); Also, I added the code to show up queue info on ifconfig command. It's still working progress, there's some issues: - ifconfig shows invalid affinity value on igb(4) - SOFTRSS doesn't work, fixing - multi queue bpf is not well tested after the change