Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (78 commits) AX.25: Fix sysctl registration if !CONFIG_AX25_DAMA_SLAVE pktgen: mac count pktgen: random flow bridge: Eliminate unnecessary forward delay bridge: fix compile warning in net/bridge/br_netfilter.c ipv4: remove unused field in struct flowi (include/net/flow.h). tg3: Fix 'scheduling while atomic' errors net: Kill plain NET_XMIT_BYPASS. net_sched: Add qdisc __NET_XMIT_BYPASS flag net_sched: Add qdisc __NET_XMIT_STOLEN flag iwl3945: fix merge mistake for packet injection iwlwifi: grap nic access before accessing periphery registers iwlwifi: decrement rx skb counter in scan abort handler iwlwifi: fix unhandled interrupt when HW rfkill is on iwlwifi: implement iwl5000_calc_rssi iwlwifi: memory allocation optimization iwlwifi: HW bug fixes p54: Fix potential concurrent access to private data rt2x00: Disable link tuning in rt2500usb iwlwifi: Don't use buffer allocated on the stack for led names ...
This commit is contained in:
@@ -506,6 +506,19 @@ struct ieee80211_channel_sw_ie {
|
||||
u8 count;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/**
|
||||
* struct ieee80211_tim
|
||||
*
|
||||
* This structure refers to "Traffic Indication Map information element"
|
||||
*/
|
||||
struct ieee80211_tim_ie {
|
||||
u8 dtim_count;
|
||||
u8 dtim_period;
|
||||
u8 bitmap_ctrl;
|
||||
/* variable size: 1 - 251 bytes */
|
||||
u8 virtual_map[0];
|
||||
} __attribute__ ((packed));
|
||||
|
||||
struct ieee80211_mgmt {
|
||||
__le16 frame_control;
|
||||
__le16 duration;
|
||||
|
||||
@@ -61,9 +61,7 @@ struct wireless_dev;
|
||||
#define NET_XMIT_DROP 1 /* skb dropped */
|
||||
#define NET_XMIT_CN 2 /* congestion notification */
|
||||
#define NET_XMIT_POLICED 3 /* skb is shot by police */
|
||||
#define NET_XMIT_BYPASS 4 /* packet does not leave via dequeue;
|
||||
(TC use only - dev_queue_xmit
|
||||
returns this as NET_XMIT_SUCCESS) */
|
||||
#define NET_XMIT_MASK 0xFFFF /* qdisc flags in net/sch_generic.h */
|
||||
|
||||
/* Backlog congestion levels */
|
||||
#define NET_RX_SUCCESS 0 /* keep 'em coming, baby */
|
||||
|
||||
+1
-11
@@ -252,17 +252,7 @@ static inline int dst_output(struct sk_buff *skb)
|
||||
/* Input packet from network to transport. */
|
||||
static inline int dst_input(struct sk_buff *skb)
|
||||
{
|
||||
int err;
|
||||
|
||||
for (;;) {
|
||||
err = skb->dst->input(skb);
|
||||
|
||||
if (likely(err == 0))
|
||||
return err;
|
||||
/* Oh, Jamal... Seems, I will not forgive you this mess. :-) */
|
||||
if (unlikely(err != NET_XMIT_BYPASS))
|
||||
return err;
|
||||
}
|
||||
return skb->dst->input(skb);
|
||||
}
|
||||
|
||||
static inline struct dst_entry *dst_check(struct dst_entry *dst, u32 cookie)
|
||||
|
||||
@@ -47,7 +47,6 @@ struct flowi {
|
||||
#define fl4_scope nl_u.ip4_u.scope
|
||||
|
||||
__u8 proto;
|
||||
__u8 flags;
|
||||
union {
|
||||
struct {
|
||||
__be16 sport;
|
||||
|
||||
+11
-2
@@ -177,9 +177,10 @@ enum ieee80211_bss_change {
|
||||
* @aid: association ID number, valid only when @assoc is true
|
||||
* @use_cts_prot: use CTS protection
|
||||
* @use_short_preamble: use 802.11b short preamble
|
||||
* @dtim_period: num of beacons before the next DTIM, for PSM
|
||||
* @timestamp: beacon timestamp
|
||||
* @beacon_int: beacon interval
|
||||
* @assoc_capability: capabbilities taken from assoc resp
|
||||
* @assoc_capability: capabilities taken from assoc resp
|
||||
* @assoc_ht: association in HT mode
|
||||
* @ht_conf: ht capabilities
|
||||
* @ht_bss_conf: ht extended capabilities
|
||||
@@ -191,6 +192,7 @@ struct ieee80211_bss_conf {
|
||||
/* erp related data */
|
||||
bool use_cts_prot;
|
||||
bool use_short_preamble;
|
||||
u8 dtim_period;
|
||||
u16 beacon_int;
|
||||
u16 assoc_capability;
|
||||
u64 timestamp;
|
||||
@@ -430,6 +432,7 @@ enum ieee80211_conf_flags {
|
||||
* @radio_enabled: when zero, driver is required to switch off the radio.
|
||||
* TODO make a flag
|
||||
* @beacon_int: beacon interval (TODO make interface config)
|
||||
* @listen_interval: listen interval in units of beacon interval
|
||||
* @flags: configuration flags defined above
|
||||
* @power_level: requested transmit power (in dBm)
|
||||
* @max_antenna_gain: maximum antenna gain (in dBi)
|
||||
@@ -444,6 +447,7 @@ struct ieee80211_conf {
|
||||
int radio_enabled;
|
||||
|
||||
int beacon_int;
|
||||
u16 listen_interval;
|
||||
u32 flags;
|
||||
int power_level;
|
||||
int max_antenna_gain;
|
||||
@@ -785,6 +789,9 @@ enum ieee80211_hw_flags {
|
||||
* @max_signal: Maximum value for signal (rssi) in RX information, used
|
||||
* only when @IEEE80211_HW_SIGNAL_UNSPEC or @IEEE80211_HW_SIGNAL_DB
|
||||
*
|
||||
* @max_listen_interval: max listen interval in units of beacon interval
|
||||
* that HW supports
|
||||
*
|
||||
* @queues: number of available hardware transmit queues for
|
||||
* data packets. WMM/QoS requires at least four, these
|
||||
* queues need to have configurable access parameters.
|
||||
@@ -812,7 +819,9 @@ struct ieee80211_hw {
|
||||
unsigned int extra_tx_headroom;
|
||||
int channel_change_time;
|
||||
int vif_data_size;
|
||||
u16 queues, ampdu_queues;
|
||||
u16 queues;
|
||||
u16 ampdu_queues;
|
||||
u16 max_listen_interval;
|
||||
s8 max_signal;
|
||||
};
|
||||
|
||||
|
||||
@@ -193,10 +193,22 @@ static inline struct Qdisc *qdisc_root(struct Qdisc *qdisc)
|
||||
return qdisc->dev_queue->qdisc;
|
||||
}
|
||||
|
||||
/* The qdisc root lock is a mechanism by which to top level
|
||||
* of a qdisc tree can be locked from any qdisc node in the
|
||||
* forest. This allows changing the configuration of some
|
||||
* aspect of the qdisc tree while blocking out asynchronous
|
||||
* qdisc access in the packet processing paths.
|
||||
*
|
||||
* It is only legal to do this when the root will not change
|
||||
* on us. Otherwise we'll potentially lock the wrong qdisc
|
||||
* root. This is enforced by holding the RTNL semaphore, which
|
||||
* all users of this lock accessor must do.
|
||||
*/
|
||||
static inline spinlock_t *qdisc_root_lock(struct Qdisc *qdisc)
|
||||
{
|
||||
struct Qdisc *root = qdisc_root(qdisc);
|
||||
|
||||
ASSERT_RTNL();
|
||||
return qdisc_lock(root);
|
||||
}
|
||||
|
||||
@@ -331,6 +343,18 @@ static inline unsigned int qdisc_pkt_len(struct sk_buff *skb)
|
||||
return qdisc_skb_cb(skb)->pkt_len;
|
||||
}
|
||||
|
||||
/* additional qdisc xmit flags (NET_XMIT_MASK in linux/netdevice.h) */
|
||||
enum net_xmit_qdisc_t {
|
||||
__NET_XMIT_STOLEN = 0x00010000,
|
||||
__NET_XMIT_BYPASS = 0x00020000,
|
||||
};
|
||||
|
||||
#ifdef CONFIG_NET_CLS_ACT
|
||||
#define net_xmit_drop_count(e) ((e) & __NET_XMIT_STOLEN ? 0 : 1)
|
||||
#else
|
||||
#define net_xmit_drop_count(e) (1)
|
||||
#endif
|
||||
|
||||
static inline int qdisc_enqueue(struct sk_buff *skb, struct Qdisc *sch)
|
||||
{
|
||||
#ifdef CONFIG_NET_SCHED
|
||||
@@ -343,7 +367,7 @@ static inline int qdisc_enqueue(struct sk_buff *skb, struct Qdisc *sch)
|
||||
static inline int qdisc_enqueue_root(struct sk_buff *skb, struct Qdisc *sch)
|
||||
{
|
||||
qdisc_skb_cb(skb)->pkt_len = skb->len;
|
||||
return qdisc_enqueue(skb, sch);
|
||||
return qdisc_enqueue(skb, sch) & NET_XMIT_MASK;
|
||||
}
|
||||
|
||||
static inline int __qdisc_enqueue_tail(struct sk_buff *skb, struct Qdisc *sch,
|
||||
|
||||
@@ -524,8 +524,7 @@ static inline void sctp_ssn_skip(struct sctp_stream *stream, __u16 id,
|
||||
*/
|
||||
struct sctp_af {
|
||||
int (*sctp_xmit) (struct sk_buff *skb,
|
||||
struct sctp_transport *,
|
||||
int ipfragok);
|
||||
struct sctp_transport *);
|
||||
int (*setsockopt) (struct sock *sk,
|
||||
int level,
|
||||
int optname,
|
||||
|
||||
Reference in New Issue
Block a user