1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
/* \brief ��Э��ջ���Ĵ�������
*
* ģ�鴦������������Э��ջ�����ݱ��ĺ����������������ݱ���
*
* \author Lu Qiuwen<[email protected]>
* \date 2016-10-21
*/
#include <unistd.h>
#include <assert.h>
#include <sk_device.h>
#include <sk_stack.h>
#include <sk_udp.h>
#include <sk_arp.h>
#include <sk_tcp.h>
#include <sk_icmp.h>
int sk_serv_device_tx_bulk(struct sk_dev_desc * dev_desc, thread_id_t sid,
struct rte_mbuf * mbufs_out[], int nr_mbufs_max)
{
int nr_mbufs_out = 0;
int nr_mbufs_left = nr_mbufs_max;
// ��ѭ�����Ļ�����
nr_mbufs_out += rte_ring_sc_dequeue_burst(dev_desc->tx_loop_buffer[sid],
(void **)&mbufs_out[nr_mbufs_out], nr_mbufs_left);
return nr_mbufs_out;
}
int sk_serv_device_rx_bulk(struct sk_dev_desc * dev_desc, thread_id_t sid,
struct rte_mbuf * mbufs_in[], int nr_mbufs_in)
{
// ARP���Ĵ���
int nr_handled = 0;
nr_handled += protocol_serv_arp_entry(dev_desc, sid, mbufs_in, nr_mbufs_in);
// ICMP���Ĵ���
nr_handled += protocol_serv_icmp_entry(dev_desc, sid, mbufs_in, nr_mbufs_in);
// UDP���Ĵ���
nr_handled += protocol_serv_udp_entry(dev_desc, sid, mbufs_in, nr_mbufs_in);
return nr_handled;
}
|