in netmap_kern.h
struct netmap_adapter {
..
u_int num_rx_desc;
//u_int buff_size; // XXX deprecate, use NETMAP_BUF_SIZE
but in netmap.c
int
netmap_attach(struct netmap_adapter *na, int num_queues)
{
na-num_rx_rings = num_queues;
ixgbe_netmap.h
static void
ixgbe_netmap_attach(struct
i have a test use pkt-gen.c
# start pthread 1
netmap as receiver work on NETMAP_HW_RING mode.
if i stop recv packet. system dmesg will show
interrupt storm detected on irq281:; throttling interrupt source
interrupt storm detected on irq281:; throttling interrupt source
interrupt storm
in pkt-gen.c
tifreq.nr_ringid = (g.nthreads 1) ? (i | NETMAP_HW_RING) : 0;
in netmap.c
if (priv-np_qlast != NETMAP_HW_RING) {
lim_tx = lim_rx = priv-np_qlast;
}
if nthreads 2.but have 8 num_tx_rings.(ixgbe default is 8)
looks like
thread #1 priv-np_qfirst = 0 priv-np_qlast = 1
thread
i want to update single ring use the ringid
like code:
struct netmap_ring *ring = NETMAP_TXRING(me-nifp, ringid);
i can't find a way to do this.
so i try to change the netmap core.
add code sys/net/netmap.h
struct node {
int ringid;
int update;
};
@pcap.c
int
pcap_inject(pcap_t *p, const void *buf, size_t size)
{
struct my_ring *me = p;
u_int si;
ND(cnt %d, cnt);
/* scan all rings */
for (si = me-begin; si me-end; si++) {
struct netmap_ring *ring = NETMAP_TXRING(me-nifp, si);
make -j4 buildworld error
--
World build started on Tue Apr 24 21:32:26 CST 2012
--
--
Rebuilding the temporary
i think this head.diff may be is old!
in diff
+#ifdef DEV_NETMAP
+ if (slot) {
+ netmap_load_map(txr-txtag, txbuf-map,
+ NMB(slot), adapter-rx_mbuf_sz);
+ slot++;
+ }
+#endif /* DEV_NETMAP */
in netmap_kern.h
static inline void
netmap_load_map(bus_dma_tag_t tag, bus_dmamap_t map, void *buf)
{