diff options
author | jlemon <jlemon@FreeBSD.org> | 2003-03-04 23:19:55 +0000 |
---|---|---|
committer | jlemon <jlemon@FreeBSD.org> | 2003-03-04 23:19:55 +0000 |
commit | 04e28d5a816573d1300b4591306a8785d3ace29c (patch) | |
tree | f304f726e8973253d3e8a87e56119fec0276a61c /sys/net/if_iso88025subr.c | |
parent | 45fcac94f475f1d18d50dde4f72eb51ee4abddcc (diff) | |
download | FreeBSD-src-04e28d5a816573d1300b4591306a8785d3ace29c.zip FreeBSD-src-04e28d5a816573d1300b4591306a8785d3ace29c.tar.gz |
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
Diffstat (limited to 'sys/net/if_iso88025subr.c')
-rw-r--r-- | sys/net/if_iso88025subr.c | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/sys/net/if_iso88025subr.c b/sys/net/if_iso88025subr.c index 91fa8c6..a0411e8 100644 --- a/sys/net/if_iso88025subr.c +++ b/sys/net/if_iso88025subr.c @@ -393,7 +393,7 @@ iso88025_input(ifp, th, m) struct iso88025_header *th; struct mbuf *m; { - struct ifqueue *inq; + int isr; struct llc *l; if ((ifp->if_flags & IFF_UP) == 0) { @@ -425,8 +425,7 @@ iso88025_input(ifp, th, m) th->iso88025_shost[0] &= ~(TR_RII); m_adj(m, 3); - schednetisr(NETISR_IPX); - inq = &ipxintrq; + isr = NETISR_IPX; break; #endif /* IPX */ case LLC_SNAP_LSAP: { @@ -448,30 +447,26 @@ iso88025_input(ifp, th, m) th->iso88025_shost[0] &= ~(TR_RII); if (ipflow_fastforward(m)) return; - schednetisr(NETISR_IP); - inq = &ipintrq; + isr = NETISR_IP; break; case ETHERTYPE_ARP: if (ifp->if_flags & IFF_NOARP) goto dropanyway; - schednetisr(NETISR_ARP); - inq = &arpintrq; + isr = NETISR_ARP; break; #endif /* INET */ #ifdef IPX_SNAP /* XXX: Not supported! */ case ETHERTYPE_IPX: th->iso88025_shost[0] &= ~(TR_RII); - schednetisr(NETISR_IPX); - inq = &ipxintrq; + isr = NETISR_IPX; break; #endif /* IPX_SNAP */ #ifdef NOT_YET #ifdef INET6 case ETHERTYPE_IPV6: th->iso88025_shost[0] &= ~(TR_RII); - schednetisr(NETISR_IPV6); - inq = &ip6intrq; + isr = NETISR_IPV6; break; #endif /* INET6 */ #endif /* NOT_YET */ @@ -543,7 +538,5 @@ iso88025_input(ifp, th, m) m_freem(m); return; } - - if (! IF_HANDOFF(inq, m, NULL)) - printf("iso88025_input: Packet dropped (Queue full).\n"); + netisr_dispatch(isr, m); } |