| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- /******************************************************************************
- * 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__
|