Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Minor conflict in net/core/rtnetlink.c, David Ahern's bug fix in 'net' overlapped the renaming of a netlink attribute in net-next. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -1756,7 +1756,8 @@ int ieee80211_if_add(struct ieee80211_local *local, const char *name,
|
||||
|
||||
if (local->ops->wake_tx_queue &&
|
||||
type != NL80211_IFTYPE_AP_VLAN &&
|
||||
type != NL80211_IFTYPE_MONITOR)
|
||||
(type != NL80211_IFTYPE_MONITOR ||
|
||||
(params->flags & MONITOR_FLAG_ACTIVE)))
|
||||
txq_size += sizeof(struct txq_info) +
|
||||
local->hw.txq_data_size;
|
||||
|
||||
|
@@ -217,7 +217,8 @@ void mesh_rmc_free(struct ieee80211_sub_if_data *sdata);
|
||||
int mesh_rmc_init(struct ieee80211_sub_if_data *sdata);
|
||||
void ieee80211s_init(void);
|
||||
void ieee80211s_update_metric(struct ieee80211_local *local,
|
||||
struct sta_info *sta, struct sk_buff *skb);
|
||||
struct sta_info *sta,
|
||||
struct ieee80211_tx_status *st);
|
||||
void ieee80211_mesh_init_sdata(struct ieee80211_sub_if_data *sdata);
|
||||
void ieee80211_mesh_teardown_sdata(struct ieee80211_sub_if_data *sdata);
|
||||
int ieee80211_start_mesh(struct ieee80211_sub_if_data *sdata);
|
||||
|
@@ -295,15 +295,12 @@ int mesh_path_error_tx(struct ieee80211_sub_if_data *sdata,
|
||||
}
|
||||
|
||||
void ieee80211s_update_metric(struct ieee80211_local *local,
|
||||
struct sta_info *sta, struct sk_buff *skb)
|
||||
struct sta_info *sta,
|
||||
struct ieee80211_tx_status *st)
|
||||
{
|
||||
struct ieee80211_tx_info *txinfo = IEEE80211_SKB_CB(skb);
|
||||
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
|
||||
struct ieee80211_tx_info *txinfo = st->info;
|
||||
int failed;
|
||||
|
||||
if (!ieee80211_is_data(hdr->frame_control))
|
||||
return;
|
||||
|
||||
failed = !(txinfo->flags & IEEE80211_TX_STAT_ACK);
|
||||
|
||||
/* moving average, scaled to 100.
|
||||
|
@@ -479,11 +479,6 @@ static void ieee80211_report_ack_skb(struct ieee80211_local *local,
|
||||
if (!skb)
|
||||
return;
|
||||
|
||||
if (dropped) {
|
||||
dev_kfree_skb_any(skb);
|
||||
return;
|
||||
}
|
||||
|
||||
if (info->flags & IEEE80211_TX_INTFL_NL80211_FRAME_TX) {
|
||||
u64 cookie = IEEE80211_SKB_CB(skb)->ack.cookie;
|
||||
struct ieee80211_sub_if_data *sdata;
|
||||
@@ -506,6 +501,8 @@ static void ieee80211_report_ack_skb(struct ieee80211_local *local,
|
||||
}
|
||||
rcu_read_unlock();
|
||||
|
||||
dev_kfree_skb_any(skb);
|
||||
} else if (dropped) {
|
||||
dev_kfree_skb_any(skb);
|
||||
} else {
|
||||
/* consumes skb */
|
||||
@@ -811,7 +808,7 @@ static void __ieee80211_tx_status(struct ieee80211_hw *hw,
|
||||
|
||||
rate_control_tx_status(local, sband, status);
|
||||
if (ieee80211_vif_is_mesh(&sta->sdata->vif))
|
||||
ieee80211s_update_metric(local, sta, skb);
|
||||
ieee80211s_update_metric(local, sta, status);
|
||||
|
||||
if (!(info->flags & IEEE80211_TX_CTL_INJECTED) && acked)
|
||||
ieee80211_frame_acked(sta, skb);
|
||||
@@ -972,6 +969,8 @@ void ieee80211_tx_status_ext(struct ieee80211_hw *hw,
|
||||
}
|
||||
|
||||
rate_control_tx_status(local, sband, status);
|
||||
if (ieee80211_vif_is_mesh(&sta->sdata->vif))
|
||||
ieee80211s_update_metric(local, sta, status);
|
||||
}
|
||||
|
||||
if (acked || noack_success) {
|
||||
|
@@ -16,6 +16,7 @@
|
||||
#include "ieee80211_i.h"
|
||||
#include "driver-ops.h"
|
||||
#include "rate.h"
|
||||
#include "wme.h"
|
||||
|
||||
/* give usermode some time for retries in setting up the TDLS session */
|
||||
#define TDLS_PEER_SETUP_TIMEOUT (15 * HZ)
|
||||
@@ -1010,14 +1011,13 @@ ieee80211_tdls_prep_mgmt_packet(struct wiphy *wiphy, struct net_device *dev,
|
||||
switch (action_code) {
|
||||
case WLAN_TDLS_SETUP_REQUEST:
|
||||
case WLAN_TDLS_SETUP_RESPONSE:
|
||||
skb_set_queue_mapping(skb, IEEE80211_AC_BK);
|
||||
skb->priority = 2;
|
||||
skb->priority = 256 + 2;
|
||||
break;
|
||||
default:
|
||||
skb_set_queue_mapping(skb, IEEE80211_AC_VI);
|
||||
skb->priority = 5;
|
||||
skb->priority = 256 + 5;
|
||||
break;
|
||||
}
|
||||
skb_set_queue_mapping(skb, ieee80211_select_queue(sdata, skb));
|
||||
|
||||
/*
|
||||
* Set the WLAN_TDLS_TEARDOWN flag to indicate a teardown in progress.
|
||||
|
@@ -214,6 +214,7 @@ ieee80211_tx_h_dynamic_ps(struct ieee80211_tx_data *tx)
|
||||
{
|
||||
struct ieee80211_local *local = tx->local;
|
||||
struct ieee80211_if_managed *ifmgd;
|
||||
struct ieee80211_tx_info *info = IEEE80211_SKB_CB(tx->skb);
|
||||
|
||||
/* driver doesn't support power save */
|
||||
if (!ieee80211_hw_check(&local->hw, SUPPORTS_PS))
|
||||
@@ -242,6 +243,9 @@ ieee80211_tx_h_dynamic_ps(struct ieee80211_tx_data *tx)
|
||||
if (tx->sdata->vif.type != NL80211_IFTYPE_STATION)
|
||||
return TX_CONTINUE;
|
||||
|
||||
if (unlikely(info->flags & IEEE80211_TX_INTFL_OFFCHAN_TX_OK))
|
||||
return TX_CONTINUE;
|
||||
|
||||
ifmgd = &tx->sdata->u.mgd;
|
||||
|
||||
/*
|
||||
@@ -1915,7 +1919,7 @@ static bool ieee80211_tx(struct ieee80211_sub_if_data *sdata,
|
||||
sdata->vif.hw_queue[skb_get_queue_mapping(skb)];
|
||||
|
||||
if (invoke_tx_handlers_early(&tx))
|
||||
return false;
|
||||
return true;
|
||||
|
||||
if (ieee80211_queue_skb(local, sdata, tx.sta, tx.skb))
|
||||
return true;
|
||||
|
Reference in New Issue
Block a user