Lines 669-674
generic_netmap_txsync(struct netmap_kring *kring, int flags)
Link Here
|
669 |
if (nm_i != head) { /* we have new packets to send */ |
669 |
if (nm_i != head) { /* we have new packets to send */ |
670 |
struct nm_os_gen_arg a; |
670 |
struct nm_os_gen_arg a; |
671 |
u_int event = -1; |
671 |
u_int event = -1; |
|
|
672 |
#ifdef __FreeBSD__ |
673 |
struct epoch_tracker et; |
674 |
|
675 |
NET_EPOCH_ENTER(et); |
676 |
#endif |
672 |
|
677 |
|
673 |
if (gna->txqdisc && nm_kr_txempty(kring)) { |
678 |
if (gna->txqdisc && nm_kr_txempty(kring)) { |
674 |
/* In txqdisc mode, we ask for a delayed notification, |
679 |
/* In txqdisc mode, we ask for a delayed notification, |
Lines 776-781
generic_netmap_txsync(struct netmap_kring *kring, int flags)
Link Here
|
776 |
/* Update hwcur to the next slot to transmit. Here nm_i |
781 |
/* Update hwcur to the next slot to transmit. Here nm_i |
777 |
* is not necessarily head, we could break early. */ |
782 |
* is not necessarily head, we could break early. */ |
778 |
kring->nr_hwcur = nm_i; |
783 |
kring->nr_hwcur = nm_i; |
|
|
784 |
|
785 |
#ifdef __FreeBSD__ |
786 |
NET_EPOCH_EXIT(et); |
787 |
#endif |
779 |
} |
788 |
} |
780 |
|
789 |
|
781 |
/* |
790 |
/* |