78 lines
2.8 KiB
C
78 lines
2.8 KiB
C
/******************************************************************************
|
|
* Copyright (c) 2013-2016 Realtek Semiconductor Corp.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
******************************************************************************/
|
|
#ifndef __SKBUFF_H__
|
|
#define __SKBUFF_H__
|
|
|
|
struct sk_buff_head {
|
|
struct list_head *next, *prev;
|
|
unsigned int qlen;
|
|
};
|
|
|
|
#if CONFIG_TRACE_SKB
|
|
#define TRACE_SKB_DEPTH 8
|
|
#endif
|
|
|
|
struct sk_buff {
|
|
/* These two members must be first. */
|
|
struct sk_buff *next; /* Next buffer in list */
|
|
struct sk_buff *prev; /* Previous buffer in list */
|
|
|
|
struct sk_buff_head *list; /* List we are on */
|
|
unsigned char *head; /* Head of buffer */
|
|
unsigned char *data; /* Data head pointer */
|
|
unsigned char *tail; /* Tail pointer */
|
|
unsigned char *end; /* End pointer */
|
|
void *dev; /* Device we arrived on/are leaving by */
|
|
unsigned int len; /* Length of actual data */
|
|
#if CONFIG_TRACE_SKB
|
|
unsigned int liston[TRACE_SKB_DEPTH]; /* Trace the Lists we went through */
|
|
const char *funcname[TRACE_SKB_DEPTH];
|
|
unsigned int list_idx; /* Trace the List we are on */
|
|
#endif
|
|
int zerocp_flag;
|
|
int dyalloc_flag;
|
|
unsigned char type_flag;
|
|
};
|
|
|
|
unsigned char *skb_put(struct sk_buff *skb, unsigned int len);
|
|
unsigned char *skb_pull(struct sk_buff *skb, unsigned int len);
|
|
void skb_reserve(struct sk_buff *skb, unsigned int len);
|
|
void skb_assign_buf(struct sk_buff *skb, unsigned char *buf, unsigned int len);
|
|
unsigned char *skb_tail_pointer(const struct sk_buff *skb);
|
|
void skb_set_tail_pointer(struct sk_buff *skb, const int offset);
|
|
unsigned char *skb_end_pointer(const struct sk_buff *skb);
|
|
|
|
void skb_queue_head_init(struct sk_buff_head *list);
|
|
struct sk_buff *skb_dequeue(struct sk_buff_head *list);
|
|
void skb_reset_tail_pointer(struct sk_buff *skb);
|
|
void skb_queue_tail(struct sk_buff_head *list, struct sk_buff *newsk);
|
|
signed int skb_queue_len(const struct sk_buff_head *list_);
|
|
|
|
void init_skb_pool(void);
|
|
void init_skb_data_pool(void);
|
|
|
|
|
|
#ifdef CONFIG_TX_ZERO_COPY
|
|
struct sk_buff *dev_alloc_tx_skb_0copy();
|
|
#endif
|
|
struct sk_buff *dev_alloc_tx_skb(unsigned int length, unsigned int reserve_len);
|
|
struct sk_buff *dev_alloc_rx_skb(unsigned int length, unsigned int reserve_len);
|
|
void kfree_skb(struct sk_buff *skb);
|
|
|
|
|
|
#endif //__SKBUFF_H__
|
|
|