Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 into for-davem
Conflicts: drivers/net/wireless/iwlwifi/iwl-core.c drivers/net/wireless/rt2x00/rt2x00queue.c drivers/net/wireless/rt2x00/rt2x00queue.h
This commit is contained in:
@@ -276,10 +276,52 @@ struct l2cap_conn_param_update_rsp {
|
||||
#define L2CAP_CONN_PARAM_ACCEPTED 0x0000
|
||||
#define L2CAP_CONN_PARAM_REJECTED 0x0001
|
||||
|
||||
/* ----- L2CAP connections ----- */
|
||||
struct l2cap_chan_list {
|
||||
struct sock *head;
|
||||
rwlock_t lock;
|
||||
/* ----- L2CAP channels and connections ----- */
|
||||
struct srej_list {
|
||||
__u8 tx_seq;
|
||||
struct list_head list;
|
||||
};
|
||||
|
||||
struct l2cap_chan {
|
||||
struct sock *sk;
|
||||
__u8 ident;
|
||||
|
||||
__u8 conf_req[64];
|
||||
__u8 conf_len;
|
||||
__u8 num_conf_req;
|
||||
__u8 num_conf_rsp;
|
||||
|
||||
__u16 conn_state;
|
||||
|
||||
__u8 next_tx_seq;
|
||||
__u8 expected_ack_seq;
|
||||
__u8 expected_tx_seq;
|
||||
__u8 buffer_seq;
|
||||
__u8 buffer_seq_srej;
|
||||
__u8 srej_save_reqseq;
|
||||
__u8 frames_sent;
|
||||
__u8 unacked_frames;
|
||||
__u8 retry_count;
|
||||
__u8 num_acked;
|
||||
__u16 sdu_len;
|
||||
__u16 partial_sdu_len;
|
||||
struct sk_buff *sdu;
|
||||
|
||||
__u8 remote_tx_win;
|
||||
__u8 remote_max_tx;
|
||||
__u16 remote_mps;
|
||||
|
||||
struct timer_list retrans_timer;
|
||||
struct timer_list monitor_timer;
|
||||
struct timer_list ack_timer;
|
||||
struct sk_buff *tx_send_head;
|
||||
struct sk_buff_head tx_q;
|
||||
struct sk_buff_head srej_q;
|
||||
struct sk_buff_head busy_q;
|
||||
struct work_struct busy_work;
|
||||
struct list_head srej_l;
|
||||
|
||||
struct list_head list;
|
||||
};
|
||||
|
||||
struct l2cap_conn {
|
||||
@@ -305,29 +347,16 @@ struct l2cap_conn {
|
||||
|
||||
__u8 disc_reason;
|
||||
|
||||
struct l2cap_chan_list chan_list;
|
||||
};
|
||||
|
||||
struct sock_del_list {
|
||||
struct sock *sk;
|
||||
struct list_head list;
|
||||
struct list_head chan_l;
|
||||
rwlock_t chan_lock;
|
||||
};
|
||||
|
||||
#define L2CAP_INFO_CL_MTU_REQ_SENT 0x01
|
||||
#define L2CAP_INFO_FEAT_MASK_REQ_SENT 0x04
|
||||
#define L2CAP_INFO_FEAT_MASK_REQ_DONE 0x08
|
||||
|
||||
/* ----- L2CAP channel and socket info ----- */
|
||||
/* ----- L2CAP socket info ----- */
|
||||
#define l2cap_pi(sk) ((struct l2cap_pinfo *) sk)
|
||||
#define TX_QUEUE(sk) (&l2cap_pi(sk)->tx_queue)
|
||||
#define SREJ_QUEUE(sk) (&l2cap_pi(sk)->srej_queue)
|
||||
#define BUSY_QUEUE(sk) (&l2cap_pi(sk)->busy_queue)
|
||||
#define SREJ_LIST(sk) (&l2cap_pi(sk)->srej_l.list)
|
||||
|
||||
struct srej_list {
|
||||
__u8 tx_seq;
|
||||
struct list_head list;
|
||||
};
|
||||
|
||||
struct l2cap_pinfo {
|
||||
struct bt_sock bt;
|
||||
@@ -339,8 +368,6 @@ struct l2cap_pinfo {
|
||||
__u16 omtu;
|
||||
__u16 flush_to;
|
||||
__u8 mode;
|
||||
__u8 num_conf_req;
|
||||
__u8 num_conf_rsp;
|
||||
|
||||
__u8 fcs;
|
||||
__u8 sec_level;
|
||||
@@ -348,49 +375,18 @@ struct l2cap_pinfo {
|
||||
__u8 force_reliable;
|
||||
__u8 flushable;
|
||||
|
||||
__u8 conf_req[64];
|
||||
__u8 conf_len;
|
||||
__u8 conf_state;
|
||||
__u16 conn_state;
|
||||
|
||||
__u8 next_tx_seq;
|
||||
__u8 expected_ack_seq;
|
||||
__u8 expected_tx_seq;
|
||||
__u8 buffer_seq;
|
||||
__u8 buffer_seq_srej;
|
||||
__u8 srej_save_reqseq;
|
||||
__u8 frames_sent;
|
||||
__u8 unacked_frames;
|
||||
__u8 retry_count;
|
||||
__u8 num_acked;
|
||||
__u16 sdu_len;
|
||||
__u16 partial_sdu_len;
|
||||
struct sk_buff *sdu;
|
||||
|
||||
__u8 ident;
|
||||
|
||||
__u8 tx_win;
|
||||
__u8 max_tx;
|
||||
__u8 remote_tx_win;
|
||||
__u8 remote_max_tx;
|
||||
__u16 retrans_timeout;
|
||||
__u16 monitor_timeout;
|
||||
__u16 remote_mps;
|
||||
__u16 mps;
|
||||
|
||||
__le16 sport;
|
||||
|
||||
struct timer_list retrans_timer;
|
||||
struct timer_list monitor_timer;
|
||||
struct timer_list ack_timer;
|
||||
struct sk_buff_head tx_queue;
|
||||
struct sk_buff_head srej_queue;
|
||||
struct sk_buff_head busy_queue;
|
||||
struct work_struct busy_work;
|
||||
struct srej_list srej_l;
|
||||
struct l2cap_conn *conn;
|
||||
struct sock *next_c;
|
||||
struct sock *prev_c;
|
||||
struct l2cap_chan *chan;
|
||||
};
|
||||
|
||||
#define L2CAP_CONF_REQ_SENT 0x01
|
||||
@@ -417,24 +413,23 @@ struct l2cap_pinfo {
|
||||
#define L2CAP_CONN_RNR_SENT 0x0200
|
||||
#define L2CAP_CONN_SAR_RETRY 0x0400
|
||||
|
||||
#define __mod_retrans_timer() mod_timer(&l2cap_pi(sk)->retrans_timer, \
|
||||
#define __mod_retrans_timer() mod_timer(&chan->retrans_timer, \
|
||||
jiffies + msecs_to_jiffies(L2CAP_DEFAULT_RETRANS_TO));
|
||||
#define __mod_monitor_timer() mod_timer(&l2cap_pi(sk)->monitor_timer, \
|
||||
#define __mod_monitor_timer() mod_timer(&chan->monitor_timer, \
|
||||
jiffies + msecs_to_jiffies(L2CAP_DEFAULT_MONITOR_TO));
|
||||
#define __mod_ack_timer() mod_timer(&l2cap_pi(sk)->ack_timer, \
|
||||
#define __mod_ack_timer() mod_timer(&chan->ack_timer, \
|
||||
jiffies + msecs_to_jiffies(L2CAP_DEFAULT_ACK_TO));
|
||||
|
||||
static inline int l2cap_tx_window_full(struct sock *sk)
|
||||
static inline int l2cap_tx_window_full(struct l2cap_chan *ch)
|
||||
{
|
||||
struct l2cap_pinfo *pi = l2cap_pi(sk);
|
||||
int sub;
|
||||
|
||||
sub = (pi->next_tx_seq - pi->expected_ack_seq) % 64;
|
||||
sub = (ch->next_tx_seq - ch->expected_ack_seq) % 64;
|
||||
|
||||
if (sub < 0)
|
||||
sub += 64;
|
||||
|
||||
return sub == pi->remote_tx_win;
|
||||
return sub == ch->remote_tx_win;
|
||||
}
|
||||
|
||||
#define __get_txseq(ctrl) (((ctrl) & L2CAP_CTRL_TXSEQ) >> 1)
|
||||
@@ -450,18 +445,17 @@ extern struct bt_sock_list l2cap_sk_list;
|
||||
int l2cap_init_sockets(void);
|
||||
void l2cap_cleanup_sockets(void);
|
||||
|
||||
u8 l2cap_get_ident(struct l2cap_conn *conn);
|
||||
void l2cap_send_cmd(struct l2cap_conn *conn, u8 ident, u8 code, u16 len, void *data);
|
||||
int l2cap_build_conf_req(struct sock *sk, void *data);
|
||||
void __l2cap_connect_rsp_defer(struct sock *sk);
|
||||
int __l2cap_wait_ack(struct sock *sk);
|
||||
|
||||
struct sk_buff *l2cap_create_connless_pdu(struct sock *sk, struct msghdr *msg, size_t len);
|
||||
struct sk_buff *l2cap_create_basic_pdu(struct sock *sk, struct msghdr *msg, size_t len);
|
||||
struct sk_buff *l2cap_create_iframe_pdu(struct sock *sk, struct msghdr *msg, size_t len, u16 control, u16 sdulen);
|
||||
int l2cap_sar_segment_sdu(struct sock *sk, struct msghdr *msg, size_t len);
|
||||
int l2cap_sar_segment_sdu(struct l2cap_chan *chan, struct msghdr *msg, size_t len);
|
||||
void l2cap_do_send(struct sock *sk, struct sk_buff *skb);
|
||||
void l2cap_streaming_send(struct sock *sk);
|
||||
int l2cap_ertm_send(struct sock *sk);
|
||||
void l2cap_streaming_send(struct l2cap_chan *chan);
|
||||
int l2cap_ertm_send(struct l2cap_chan *chan);
|
||||
|
||||
void l2cap_sock_set_timer(struct sock *sk, long timeout);
|
||||
void l2cap_sock_clear_timer(struct sock *sk);
|
||||
@@ -470,8 +464,8 @@ void l2cap_sock_kill(struct sock *sk);
|
||||
void l2cap_sock_init(struct sock *sk, struct sock *parent);
|
||||
struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock,
|
||||
int proto, gfp_t prio);
|
||||
void l2cap_send_disconn_req(struct l2cap_conn *conn, struct sock *sk, int err);
|
||||
void l2cap_chan_del(struct sock *sk, int err);
|
||||
void l2cap_send_disconn_req(struct l2cap_conn *conn, struct l2cap_chan *chan, int err);
|
||||
void l2cap_chan_del(struct l2cap_chan *chan, int err);
|
||||
int l2cap_do_connect(struct sock *sk);
|
||||
|
||||
#endif /* __L2CAP_H */
|
||||
|
||||
@@ -423,6 +423,7 @@ struct station_parameters {
|
||||
* @STATION_INFO_SIGNAL_AVG: @signal_avg filled
|
||||
* @STATION_INFO_RX_BITRATE: @rxrate fields are filled
|
||||
* @STATION_INFO_BSS_PARAM: @bss_param filled
|
||||
* @STATION_INFO_CONNECTED_TIME: @connected_time filled
|
||||
*/
|
||||
enum station_info_flags {
|
||||
STATION_INFO_INACTIVE_TIME = 1<<0,
|
||||
@@ -441,6 +442,7 @@ enum station_info_flags {
|
||||
STATION_INFO_SIGNAL_AVG = 1<<13,
|
||||
STATION_INFO_RX_BITRATE = 1<<14,
|
||||
STATION_INFO_BSS_PARAM = 1<<15,
|
||||
STATION_INFO_CONNECTED_TIME = 1<<16
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -511,6 +513,7 @@ struct sta_bss_parameters {
|
||||
* Station information filled by driver for get_station() and dump_station.
|
||||
*
|
||||
* @filled: bitflag of flags from &enum station_info_flags
|
||||
* @connected_time: time(in secs) since a station is last connected
|
||||
* @inactive_time: time since last station activity (tx/rx) in milliseconds
|
||||
* @rx_bytes: bytes received from this station
|
||||
* @tx_bytes: bytes transmitted to this station
|
||||
@@ -533,6 +536,7 @@ struct sta_bss_parameters {
|
||||
*/
|
||||
struct station_info {
|
||||
u32 filled;
|
||||
u32 connected_time;
|
||||
u32 inactive_time;
|
||||
u32 rx_bytes;
|
||||
u32 tx_bytes;
|
||||
@@ -689,8 +693,9 @@ struct mesh_config {
|
||||
* @mesh_id_len: length of the mesh ID, at least 1 and at most 32 bytes
|
||||
* @path_sel_proto: which path selection protocol to use
|
||||
* @path_metric: which metric to use
|
||||
* @vendor_ie: vendor information elements (optional)
|
||||
* @vendor_ie_len: length of vendor information elements
|
||||
* @ie: vendor information elements (optional)
|
||||
* @ie_len: length of vendor information elements
|
||||
* @is_secure: or not
|
||||
*
|
||||
* These parameters are fixed when the mesh is created.
|
||||
*/
|
||||
@@ -699,8 +704,9 @@ struct mesh_setup {
|
||||
u8 mesh_id_len;
|
||||
u8 path_sel_proto;
|
||||
u8 path_metric;
|
||||
const u8 *vendor_ie;
|
||||
u8 vendor_ie_len;
|
||||
const u8 *ie;
|
||||
u8 ie_len;
|
||||
bool is_secure;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -1451,6 +1457,8 @@ struct cfg80211_ops {
|
||||
* @WIPHY_FLAG_IBSS_RSN: The device supports IBSS RSN.
|
||||
* @WIPHY_FLAG_SUPPORTS_SEPARATE_DEFAULT_KEYS: The device supports separate
|
||||
* unicast and multicast TX keys.
|
||||
* @WIPHY_FLAG_MESH_AUTH: The device supports mesh authentication by routing
|
||||
* auth frames to userspace. See @NL80211_MESH_SETUP_USERSPACE_AUTH.
|
||||
*/
|
||||
enum wiphy_flags {
|
||||
WIPHY_FLAG_CUSTOM_REGULATORY = BIT(0),
|
||||
@@ -1463,6 +1471,7 @@ enum wiphy_flags {
|
||||
WIPHY_FLAG_CONTROL_PORT_PROTOCOL = BIT(7),
|
||||
WIPHY_FLAG_IBSS_RSN = BIT(8),
|
||||
WIPHY_FLAG_SUPPORTS_SEPARATE_DEFAULT_KEYS= BIT(9),
|
||||
WIPHY_FLAG_MESH_AUTH = BIT(10),
|
||||
};
|
||||
|
||||
struct mac_address {
|
||||
@@ -2483,6 +2492,22 @@ void cfg80211_michael_mic_failure(struct net_device *dev, const u8 *addr,
|
||||
*/
|
||||
void cfg80211_ibss_joined(struct net_device *dev, const u8 *bssid, gfp_t gfp);
|
||||
|
||||
/**
|
||||
* cfg80211_notify_new_candidate - notify cfg80211 of a new mesh peer candidate
|
||||
*
|
||||
* @dev: network device
|
||||
* @macaddr: the MAC address of the new candidate
|
||||
* @ie: information elements advertised by the peer candidate
|
||||
* @ie_len: lenght of the information elements buffer
|
||||
* @gfp: allocation flags
|
||||
*
|
||||
* This function notifies cfg80211 that the mesh peer candidate has been
|
||||
* detected, most likely via a beacon or, less likely, via a probe response.
|
||||
* cfg80211 then sends a notification to userspace.
|
||||
*/
|
||||
void cfg80211_notify_new_peer_candidate(struct net_device *dev,
|
||||
const u8 *macaddr, const u8 *ie, u8 ie_len, gfp_t gfp);
|
||||
|
||||
/**
|
||||
* DOC: RFkill integration
|
||||
*
|
||||
|
||||
@@ -1819,6 +1819,9 @@ enum ieee80211_ampdu_mlme_action {
|
||||
* @set_ringparam: Set tx and rx ring sizes.
|
||||
*
|
||||
* @get_ringparam: Get tx and rx ring current and maximum sizes.
|
||||
*
|
||||
* @tx_frames_pending: Check if there is any pending frame in the hardware
|
||||
* queues before entering power save.
|
||||
*/
|
||||
struct ieee80211_ops {
|
||||
void (*tx)(struct ieee80211_hw *hw, struct sk_buff *skb);
|
||||
@@ -1906,6 +1909,7 @@ struct ieee80211_ops {
|
||||
int (*set_ringparam)(struct ieee80211_hw *hw, u32 tx, u32 rx);
|
||||
void (*get_ringparam)(struct ieee80211_hw *hw,
|
||||
u32 *tx, u32 *tx_max, u32 *rx, u32 *rx_max);
|
||||
bool (*tx_frames_pending)(struct ieee80211_hw *hw);
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -2222,6 +2226,18 @@ static inline int ieee80211_sta_ps_transition_ni(struct ieee80211_sta *sta,
|
||||
*/
|
||||
#define IEEE80211_TX_STATUS_HEADROOM 13
|
||||
|
||||
/**
|
||||
* ieee80211_sta_set_tim - set the TIM bit for a sleeping station
|
||||
*
|
||||
* If a driver buffers frames for a powersave station instead of passing
|
||||
* them back to mac80211 for retransmission, the station needs to be told
|
||||
* to wake up using the TIM bitmap in the beacon.
|
||||
*
|
||||
* This function sets the station's TIM bit - it will be cleared when the
|
||||
* station wakes up.
|
||||
*/
|
||||
void ieee80211_sta_set_tim(struct ieee80211_sta *sta);
|
||||
|
||||
/**
|
||||
* ieee80211_tx_status - transmit status callback
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user