Lines 420-425
Link Here
|
420 |
{ |
420 |
{ |
421 |
int ret; |
421 |
int ret; |
422 |
u_int len = a->len; |
422 |
u_int len = a->len; |
|
|
423 |
struct epoch_tracker et; |
423 |
struct ifnet *ifp = a->ifp; |
424 |
struct ifnet *ifp = a->ifp; |
424 |
struct mbuf *m = a->m; |
425 |
struct mbuf *m = a->m; |
425 |
|
426 |
|
Lines 453-461
Link Here
|
453 |
M_HASHTYPE_SET(m, M_HASHTYPE_OPAQUE); |
454 |
M_HASHTYPE_SET(m, M_HASHTYPE_OPAQUE); |
454 |
m->m_pkthdr.flowid = a->ring_nr; |
455 |
m->m_pkthdr.flowid = a->ring_nr; |
455 |
m->m_pkthdr.rcvif = ifp; /* used for tx notification */ |
456 |
m->m_pkthdr.rcvif = ifp; /* used for tx notification */ |
|
|
457 |
NET_EPOCH_ENTER(et); |
456 |
CURVNET_SET(ifp->if_vnet); |
458 |
CURVNET_SET(ifp->if_vnet); |
457 |
ret = NA(ifp)->if_transmit(ifp, m); |
459 |
ret = NA(ifp)->if_transmit(ifp, m); |
458 |
CURVNET_RESTORE(); |
460 |
CURVNET_RESTORE(); |
|
|
461 |
NET_EPOCH_EXIT(et); |
459 |
return ret ? -1 : 0; |
462 |
return ret ? -1 : 0; |
460 |
} |
463 |
} |
461 |
|
464 |
|