summaryrefslogtreecommitdiffstats
path: root/sys/net/if_iso88025subr.c
diff options
context:
space:
mode:
authorjlemon <jlemon@FreeBSD.org>2003-03-04 23:19:55 +0000
committerjlemon <jlemon@FreeBSD.org>2003-03-04 23:19:55 +0000
commit04e28d5a816573d1300b4591306a8785d3ace29c (patch)
treef304f726e8973253d3e8a87e56119fec0276a61c /sys/net/if_iso88025subr.c
parent45fcac94f475f1d18d50dde4f72eb51ee4abddcc (diff)
downloadFreeBSD-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.c21
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);
}
OpenPOWER on IntegriCloud