微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM-Linux驱动--DM9000网卡驱动分析(一)

ARM-Linux驱动--DM9000网卡驱动分析(一)

时间:11-20 来源:互联网 点击:

nf_trace:1;

kmemcheck_bitfield_end(flags1);

__be16 protocol;

void (*destructor)(struct sk_buff *skb);

#if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)

struct nf_conntrack *nfct;

struct sk_buff *nfct_reasm;

#endif

#ifdef CONFIG_BRIDGE_NETFILTER

struct nf_bridge_info *nf_bridge;

#endif

int skb_iif;

#ifdef CONFIG_NET_SCHED

__u16 tc_index;

#ifdef CONFIG_NET_CLS_ACT

__u16 tc_verd;

#endif

#endif

__u32 rxhash;

kmemcheck_bitfield_begin(flags2);

__u16 queue_mapping:16;

#ifdef CONFIG_IPV6_NDISC_NODETYPE

__u8 ndisc_nodetype:2,

deliver_no_wcard:1;

#else

__u8 deliver_no_wcard:1;

#endif

kmemcheck_bitfield_end(flags2);

#ifdef CONFIG_NET_DMA

dma_cookie_t dma_cookie;

#endif

#ifdef CONFIG_NETWORK_SECMARK

__u32 secmark;

#endif

union {

__u32 mark;

__u32 dropcount;

};

__u16 vlan_tci;

sk_buff_data_t transport_header;

sk_buff_data_t network_header;

sk_buff_data_t mac_header;

sk_buff_data_t tail;

sk_buff_data_t end;

unsigned char *head,

*data;

unsigned int truesize;

atomic_t users;

};

元素的含义如下(摘自内核,源码,版本2.6.35.4)

*struct sk_buff - socket buffer

* @next: Next buffer inlist

* @prev: Previous buffer in list

* @sk: Socketwe are owned by

* @tstamp: Time we arrived

* @dev:Device we arrived on/are leaving by

* @transport_header:Transport layer header

* @network_header: Network layerheader

* @mac_header: Link layer header

*@_skb_refdst: destination entry (with norefcount bit)

* @sp:the security path, used for xfrm

* @cb: Control buffer. Freefor use by every layer. Put private vars here

* @len: Lengthof actual data

* @data_len: Data length

* @mac_len:Length of link layer header

* @hdr_len: writable headerlength of cloned skb

* @csum: Checksum (must includestart/offset pair)

* @csum_start: Offset from skb->headwhere checksumming should start

* @csum_offset: Offset fromcsum_start where checksum should be stored

* @local_df:allow local fragmentation

* @cloned: Head may be cloned(check refcnt to be sure)

* @nohdr: Payload reference only,must not modify header

* @pkt_type: Packet class

*@fclone: skbuff clone status

* @ip_summed: Driver fed us anIP checksum

* @priority: Packet queueing priority

*@users: User count - see {datagram,tcp}.c

* @protocol:Packet protocol from driver

* @truesize: Buffer size

*@head: Head of buffer

* @data: Data head pointer

*@tail: Tail pointer

* @end: End pointer

*@destructor: Destruct function

* @mark: Generic packetmark

* @nfct: Associated connection, if any

*@ipvs_property: skbuff is owned by ipvs

* @peeked: thispacket has been seen already, so stats have been

* done forit, dont do them again

* @nf_trace: netfilter packet traceflag

* @nfctinfo: Relationship of this skb to theconnection

* @nfct_reasm: netfilter conntrack re-assemblypointer

* @nf_bridge: Saved data about a bridged frame - seebr_netfilter.c

* @skb_iif: ifindex of device we arrivedon

* @rxhash: the packet hash computed on receive

*@queue_mapping: Queue mapping for multiqueue devices

*@tc_index: Traffic control index

* @tc_verd: traffic controlverdict

* @ndisc_nodetype: router type (from link layer)

*@dma_cookie: a cookie to one of several possible DMA operations

*done by skb DMA functions

* @secmark: security marking

*@vlan_tci: vlan tag control information

关于sk_buff的更多分析见另一篇转载的博文http://blog.csdn.net/yming0221/article/details/6609734

4.2

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top