From owner-svn-src-all@FreeBSD.ORG Wed Mar 23 02:47:05 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 21060106567E; Wed, 23 Mar 2011 02:47:05 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1149F8FC20; Wed, 23 Mar 2011 02:47:05 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p2N2l459078727; Wed, 23 Mar 2011 02:47:04 GMT (envelope-from jeff@svn.freebsd.org) Received: (from jeff@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p2N2l4xp078723; Wed, 23 Mar 2011 02:47:04 GMT (envelope-from jeff@svn.freebsd.org) Message-Id: <201103230247.p2N2l4xp078723@svn.freebsd.org> From: Jeff Roberson Date: Wed, 23 Mar 2011 02:47:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r219893 - head/sys/ofed/drivers/net/mlx4 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 23 Mar 2011 02:47:05 -0000 Author: jeff Date: Wed Mar 23 02:47:04 2011 New Revision: 219893 URL: http://svn.freebsd.org/changeset/base/219893 Log: - Correct the vlan filter programming. The device filter is built in reverse order. - Name the cq taskqueues according to whether they handle rx or tx. - Default LRO to on. Modified: head/sys/ofed/drivers/net/mlx4/en_cq.c head/sys/ofed/drivers/net/mlx4/en_netdev.c head/sys/ofed/drivers/net/mlx4/en_port.c Modified: head/sys/ofed/drivers/net/mlx4/en_cq.c ============================================================================== --- head/sys/ofed/drivers/net/mlx4/en_cq.c Wed Mar 23 01:26:21 2011 (r219892) +++ head/sys/ofed/drivers/net/mlx4/en_cq.c Wed Mar 23 02:47:04 2011 (r219893) @@ -51,21 +51,23 @@ int mlx4_en_create_cq(struct mlx4_en_pri int err; cq->size = entries; + cq->tq = taskqueue_create_fast("mlx4_en_que", M_NOWAIT, + taskqueue_thread_enqueue, &cq->tq); if (mode == RX) { cq->buf_size = cq->size * sizeof(struct mlx4_cqe); cq->vector = (ring + priv->port) % mdev->dev->caps.num_comp_vectors; TASK_INIT(&cq->cq_task, 0, mlx4_en_rx_que, cq); + taskqueue_start_threads(&cq->tq, 1, PI_NET, "%s rx cq", + if_name(priv->dev)); } else { cq->buf_size = sizeof(struct mlx4_cqe); cq->vector = MLX4_LEAST_ATTACHED_VECTOR; TASK_INIT(&cq->cq_task, 0, mlx4_en_tx_que, cq); + taskqueue_start_threads(&cq->tq, 1, PI_NET, "%s tx cq", + if_name(priv->dev)); } - cq->tq = taskqueue_create_fast("mlx4_en_que", M_NOWAIT, - taskqueue_thread_enqueue, &cq->tq); - taskqueue_start_threads(&cq->tq, 1, PI_NET, "%s cq", - if_name(priv->dev)); cq->ring = ring; cq->is_tx = mode; mtx_init(&cq->lock.m, "mlx4 cq", NULL, MTX_DEF); Modified: head/sys/ofed/drivers/net/mlx4/en_netdev.c ============================================================================== --- head/sys/ofed/drivers/net/mlx4/en_netdev.c Wed Mar 23 01:26:21 2011 (r219892) +++ head/sys/ofed/drivers/net/mlx4/en_netdev.c Wed Mar 23 02:47:04 2011 (r219893) @@ -53,13 +53,11 @@ static void mlx4_en_vlan_rx_add_vid(void if ((vid == 0) || (vid > 4095)) /* Invalid */ return; - en_dbg(HW, priv, "adding VLAN:%d\n", vid); - - spin_lock(&priv->vlan_lock); - priv->vlgrp_modified = true; idx = vid >> 5; field = 1 << (vid & 0x1f); + spin_lock(&priv->vlan_lock); + priv->vlgrp_modified = true; if (priv->vlan_unregister[idx] & field) priv->vlan_unregister[idx] &= ~field; else @@ -77,10 +75,10 @@ static void mlx4_en_vlan_rx_kill_vid(voi if ((vid == 0) || (vid > 4095)) /* Invalid */ return; en_dbg(HW, priv, "Killing VID:%d\n", vid); - spin_lock(&priv->vlan_lock); - priv->vlgrp_modified = true; idx = vid >> 5; field = 1 << (vid & 0x1f); + spin_lock(&priv->vlan_lock); + priv->vlgrp_modified = true; if (priv->vlan_register[idx] & field) priv->vlan_register[idx] &= ~field; else @@ -1541,12 +1539,9 @@ int mlx4_en_init_netdev(struct mlx4_en_d #endif if (mdev->LSO_support) dev->if_capabilities |= IFCAP_TSO | IFCAP_VLAN_HWTSO; - - /* Don't enable LOR unless the user requests. */ - dev->if_capenable = dev->if_capabilities; - if (mdev->profile.num_lro) dev->if_capabilities |= IFCAP_LRO; + dev->if_capenable = dev->if_capabilities; /* Register for VLAN events */ priv->vlan_attach = EVENTHANDLER_REGISTER(vlan_config, Modified: head/sys/ofed/drivers/net/mlx4/en_port.c ============================================================================== --- head/sys/ofed/drivers/net/mlx4/en_port.c Wed Mar 23 01:26:21 2011 (r219892) +++ head/sys/ofed/drivers/net/mlx4/en_port.c Wed Mar 23 02:47:04 2011 (r219893) @@ -51,7 +51,7 @@ int mlx4_SET_VLAN_FLTR(struct mlx4_dev * { struct mlx4_cmd_mailbox *mailbox; struct mlx4_set_vlan_fltr_mbox *filter; - int i; + int i, j; int err = 0; mailbox = mlx4_alloc_cmd_mailbox(dev); @@ -61,8 +61,9 @@ int mlx4_SET_VLAN_FLTR(struct mlx4_dev * filter = mailbox->buf; memset(filter, 0, sizeof *filter); if (vlans) - for (i = 0; i < VLAN_FLTR_SIZE; i ++) - filter->entry[i] = cpu_to_be32(vlans[i]); + for (i = 0, j = VLAN_FLTR_SIZE - 1; i < VLAN_FLTR_SIZE; + i++, j--) + filter->entry[j] = cpu_to_be32(vlans[i]); err = mlx4_cmd(dev, mailbox->dma, port, 0, MLX4_CMD_SET_VLAN_FLTR, MLX4_CMD_TIME_CLASS_B); mlx4_free_cmd_mailbox(dev, mailbox);