📄 skbuff.c
字号:
#include "skbuff.h"
#include "utils.h"
extern void Uart_Printf(char *fmt,...);
extern void sk_buff_freelist_scan(void);
struct sk_buff skbuff[BUFF_LEN];
//unsigned char packet_buff[20000];
struct sk_buff* sk_buff_freelist;//sk_buff空闲队列
struct sk_buff* header,* tail;//sk_buff接收队列
//unsigned char* read_p,*write_p,*begin,*end;
//int read_p,write_p,begin,end;
int skb_cur;
void sk_buff_freelist_init(void)
{
int i;
for(i=0;i<BUFF_LEN;i++)
{
if(!i)
{
sk_buff_freelist = &skbuff[i];
}
else
{
skbuff[i-1].next = &skbuff[i];
skbuff[i].next = (struct sk_buff*)0;
}
}
header = (struct sk_buff*)0;
tail = (struct sk_buff*)0;
/*read_p = write_p = begin = 0;
end = 20000-1; */
sk_buff_freelist_scan();
}
void sk_buff_bufflist_scan(void)
{
int scan;
struct sk_buff* sk_buff_scan;
sk_buff_scan = header;
scan = 0;
if(sk_buff_scan != 0)
{
scan++;
while(sk_buff_scan!=tail)
{
sk_buff_scan = sk_buff_scan->next;
scan++;
}
}
Uart_Printf("header-tail list %d\n",scan);
}
void sk_buff_freelist_scan(void)
{
int scan;
struct sk_buff* sk_buff_scan;
sk_buff_scan = sk_buff_freelist;
scan = 0;
while(sk_buff_scan)
{
sk_buff_scan = sk_buff_scan->next;
scan++;
Uart_Printf("sk_buff_freelist_init %d\n",scan);
}
}
int skb_init(void)
{
return 0;
}
void skb_headerinit(struct sk_buff *skb)
{
//memset(skb, 0, sizeof(struct sk_buff));
skb->data = skb->buff;
skb->len = 0;
skb->truesize = ETH_FRAME_LEN;
}
struct sk_buff *alloc_skb(unsigned int size)
{
struct sk_buff *skb;
skb = &skbuff[skb_cur];
skb_cur = (skb_cur + 1) % 5;
skb_headerinit(skb);
return skb;
}
void free_skb(struct sk_buff *skb)
{
}
unsigned char *skb_put(struct sk_buff *skb, unsigned int len)
{
skb->len += len;
return skb->data;
}
unsigned char *skb_pull(struct sk_buff *skb, unsigned int len)
{
skb->data += len;
skb->len -= len;
return skb->data;
}
unsigned char *skb_push(struct sk_buff *skb, unsigned int len)
{
skb->data -= len;
skb->len += len;
return skb->data;
}
void skb_reserve(struct sk_buff *skb, unsigned int len)
{
skb->data += len;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -