netisr.c (222249) | netisr.c (222531) |
---|---|
1/*- 2 * Copyright (c) 2007-2009 Robert N. M. Watson 3 * Copyright (c) 2010-2011 Juniper Networks, Inc. 4 * All rights reserved. 5 * 6 * This software was developed by Robert N. M. Watson under contract 7 * to Juniper Networks, Inc. 8 * --- 15 unchanged lines hidden (view full) --- 24 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28 * SUCH DAMAGE. 29 */ 30 31#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 2007-2009 Robert N. M. Watson 3 * Copyright (c) 2010-2011 Juniper Networks, Inc. 4 * All rights reserved. 5 * 6 * This software was developed by Robert N. M. Watson under contract 7 * to Juniper Networks, Inc. 8 * --- 15 unchanged lines hidden (view full) --- 24 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28 * SUCH DAMAGE. 29 */ 30 31#include <sys/cdefs.h> |
32__FBSDID("$FreeBSD: head/sys/net/netisr.c 222249 2011-05-24 12:34:19Z rwatson $"); | 32__FBSDID("$FreeBSD: head/sys/net/netisr.c 222531 2011-05-31 15:11:43Z nwhitehorn $"); |
33 34/* 35 * netisr is a packet dispatch service, allowing synchronous (directly 36 * dispatched) and asynchronous (deferred dispatch) processing of packets by 37 * registered protocol handlers. Callers pass a protocol identifier and 38 * packet to netisr, along with a direct dispatch hint, and work will either 39 * be immediately processed by the registered handler, or passed to a 40 * software interrupt (SWI) thread for deferred dispatch. Callers will --- 1175 unchanged lines hidden (view full) --- 1216 * Start worker threads for additional CPUs. No attempt to gracefully handle 1217 * work reassignment, we don't yet support dynamic reconfiguration. 1218 */ 1219static void 1220netisr_start(void *arg) 1221{ 1222 struct pcpu *pc; 1223 | 33 34/* 35 * netisr is a packet dispatch service, allowing synchronous (directly 36 * dispatched) and asynchronous (deferred dispatch) processing of packets by 37 * registered protocol handlers. Callers pass a protocol identifier and 38 * packet to netisr, along with a direct dispatch hint, and work will either 39 * be immediately processed by the registered handler, or passed to a 40 * software interrupt (SWI) thread for deferred dispatch. Callers will --- 1175 unchanged lines hidden (view full) --- 1216 * Start worker threads for additional CPUs. No attempt to gracefully handle 1217 * work reassignment, we don't yet support dynamic reconfiguration. 1218 */ 1219static void 1220netisr_start(void *arg) 1221{ 1222 struct pcpu *pc; 1223 |
1224 SLIST_FOREACH(pc, &cpuhead, pc_allcpu) { | 1224 STAILQ_FOREACH(pc, &cpuhead, pc_allcpu) { |
1225 if (nws_count >= netisr_maxthreads) 1226 break; 1227 /* XXXRW: Is skipping absent CPUs still required here? */ 1228 if (CPU_ABSENT(pc->pc_cpuid)) 1229 continue; 1230 /* Worker will already be present for boot CPU. */ 1231 if (pc->pc_netisr != NULL) 1232 continue; --- 200 unchanged lines hidden --- | 1225 if (nws_count >= netisr_maxthreads) 1226 break; 1227 /* XXXRW: Is skipping absent CPUs still required here? */ 1228 if (CPU_ABSENT(pc->pc_cpuid)) 1229 continue; 1230 /* Worker will already be present for boot CPU. */ 1231 if (pc->pc_netisr != NULL) 1232 continue; --- 200 unchanged lines hidden --- |