Date: Thu, 3 Mar 2016 19:49:37 +0000 (UTC) From: Steven Hartland <smh@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r296354 - head/sys/dev/ixl Message-ID: <201603031949.u23Jnb6j056721@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: smh Date: Thu Mar 3 19:49:37 2016 New Revision: 296354 URL: https://svnweb.freebsd.org/changeset/base/296354 Log: Fix ixl with RSS Fix compilation of ixl when RSS option is set, broken by r295946 MFC after: 3 weeks X-MFC-With: r295946 Sponsored by: Multiplay Differential Revision: https://reviews.freebsd.org/D5428 Modified: head/sys/dev/ixl/if_ixl.c Modified: head/sys/dev/ixl/if_ixl.c ============================================================================== --- head/sys/dev/ixl/if_ixl.c Thu Mar 3 18:08:58 2016 (r296353) +++ head/sys/dev/ixl/if_ixl.c Thu Mar 3 19:49:37 2016 (r296354) @@ -1991,54 +1991,58 @@ ixl_assign_vsi_legacy(struct ixl_pf *pf) static void ixl_init_taskqueues(struct ixl_pf *pf) { - struct ixl_vsi *vsi = &pf->vsi; - struct ixl_queue *que = vsi->queues; - device_t dev = pf->dev; + struct ixl_vsi *vsi = &pf->vsi; + struct ixl_queue *que = vsi->queues; + device_t dev = pf->dev; +#ifdef RSS + int cpu_id; + cpuset_t cpu_mask; +#endif - /* Tasklet for Admin Queue */ - TASK_INIT(&pf->adminq, 0, ixl_do_adminq, pf); + /* Tasklet for Admin Queue */ + TASK_INIT(&pf->adminq, 0, ixl_do_adminq, pf); #ifdef PCI_IOV - /* VFLR Tasklet */ - TASK_INIT(&pf->vflr_task, 0, ixl_handle_vflr, pf); + /* VFLR Tasklet */ + TASK_INIT(&pf->vflr_task, 0, ixl_handle_vflr, pf); #endif - /* Create and start PF taskqueue */ - pf->tq = taskqueue_create_fast("ixl_adm", M_NOWAIT, - taskqueue_thread_enqueue, &pf->tq); - taskqueue_start_threads(&pf->tq, 1, PI_NET, "%s adminq", - device_get_nameunit(dev)); - - /* Create queue tasks and start queue taskqueues */ - for (int i = 0; i < vsi->num_queues; i++, que++) { - TASK_INIT(&que->tx_task, 0, ixl_deferred_mq_start, que); - TASK_INIT(&que->task, 0, ixl_handle_que, que); - que->tq = taskqueue_create_fast("ixl_que", M_NOWAIT, - taskqueue_thread_enqueue, &que->tq); + /* Create and start PF taskqueue */ + pf->tq = taskqueue_create_fast("ixl_adm", M_NOWAIT, + taskqueue_thread_enqueue, &pf->tq); + taskqueue_start_threads(&pf->tq, 1, PI_NET, "%s adminq", + device_get_nameunit(dev)); + + /* Create queue tasks and start queue taskqueues */ + for (int i = 0; i < vsi->num_queues; i++, que++) { + TASK_INIT(&que->tx_task, 0, ixl_deferred_mq_start, que); + TASK_INIT(&que->task, 0, ixl_handle_que, que); + que->tq = taskqueue_create_fast("ixl_que", M_NOWAIT, + taskqueue_thread_enqueue, &que->tq); #ifdef RSS - CPU_SETOF(cpu_id, &cpu_mask); - taskqueue_start_threads_cpuset(&que->tq, 1, PI_NET, - &cpu_mask, "%s (bucket %d)", - device_get_nameunit(dev), cpu_id); + cpu_id = rss_getcpu(i % rss_getnumbuckets()); + CPU_SETOF(cpu_id, &cpu_mask); + taskqueue_start_threads_cpuset(&que->tq, 1, PI_NET, + &cpu_mask, "%s (bucket %d)", + device_get_nameunit(dev), cpu_id); #else - taskqueue_start_threads(&que->tq, 1, PI_NET, - "%s (que %d)", device_get_nameunit(dev), que->me); + taskqueue_start_threads(&que->tq, 1, PI_NET, + "%s (que %d)", device_get_nameunit(dev), que->me); #endif - } - + } } static void ixl_free_taskqueues(struct ixl_pf *pf) { - struct ixl_vsi *vsi = &pf->vsi; - struct ixl_queue *que = vsi->queues; + struct ixl_vsi *vsi = &pf->vsi; + struct ixl_queue *que = vsi->queues; - if (pf->tq) - taskqueue_free(pf->tq); - for (int i = 0; i < vsi->num_queues; i++, que++) { - if (que->tq) - taskqueue_free(que->tq); - } + if (pf->tq) + taskqueue_free(pf->tq); + for (int i = 0; i < vsi->num_queues; i++, que++) { + if (que->tq) + taskqueue_free(que->tq); + } } /********************************************************************* @@ -2054,9 +2058,6 @@ ixl_assign_vsi_msix(struct ixl_pf *pf) struct ixl_queue *que = vsi->queues; struct tx_ring *txr; int error, rid, vector = 0; -#ifdef RSS - cpuset_t cpu_mask; -#endif /* Admin Que is vector 0*/ rid = vector + 1;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201603031949.u23Jnb6j056721>