diff options
author | Jonathan Lemon <jlemon@FreeBSD.org> | 2003-03-04 23:19:55 +0000 |
---|---|---|
committer | Jonathan Lemon <jlemon@FreeBSD.org> | 2003-03-04 23:19:55 +0000 |
commit | 1cafed3941f1a4e9d2beb4fb126e91018505dfd4 (patch) | |
tree | f304f726e8973253d3e8a87e56119fec0276a61c /sys/net/if_atmsubr.c | |
parent | c141c242ac0a55a34b58cf2b06d13964d00507a4 (diff) | |
download | src-1cafed3941f1a4e9d2beb4fb126e91018505dfd4.tar.gz src-1cafed3941f1a4e9d2beb4fb126e91018505dfd4.zip |
Update netisr handling; Each SWI now registers its queue, and all queue
drain routines are done by swi_net, which allows for better queue control
at some future point. Packets may also be directly dispatched to a netisr
instead of queued, this may be of interest at some installations, but
currently defaults to off.
Reviewed by: hsu, silby, jayanth, sam
Sponsored by: DARPA, NAI Labs
Notes
Notes:
svn path=/head/; revision=111888
Diffstat (limited to 'sys/net/if_atmsubr.c')
-rw-r--r-- | sys/net/if_atmsubr.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/sys/net/if_atmsubr.c b/sys/net/if_atmsubr.c index 78ab13cc238f..782ed88f487a 100644 --- a/sys/net/if_atmsubr.c +++ b/sys/net/if_atmsubr.c @@ -212,7 +212,7 @@ atm_input(ifp, ah, m, rxhand) struct mbuf *m; void *rxhand; { - struct ifqueue *inq; + int isr; u_int16_t etype = ETHERTYPE_IP; /* default */ int s; @@ -231,8 +231,7 @@ atm_input(ifp, ah, m, rxhand) s = splimp(); /* in case 2 atm cards @ diff lvls */ npcb->npcb_inq++; /* count # in queue */ splx(s); - schednetisr(NETISR_NATM); - inq = &natmintrq; + isr = NETISR_NATM; m->m_pkthdr.rcvif = rxhand; /* XXX: overload */ #else printf("atm_input: NATM detected but not configured in kernel\n"); @@ -267,14 +266,12 @@ atm_input(ifp, ah, m, rxhand) switch (etype) { #ifdef INET case ETHERTYPE_IP: - schednetisr(NETISR_IP); - inq = &ipintrq; + isr = NETISR_IP; break; #endif #ifdef INET6 case ETHERTYPE_IPV6: - schednetisr(NETISR_IPV6); - inq = &ip6intrq; + isr = NETISR_IPV6; break; #endif default: @@ -282,8 +279,7 @@ atm_input(ifp, ah, m, rxhand) return; } } - - (void) IF_HANDOFF(inq, m, NULL); + netisr_dispatch(isr, m); } /* |