wlcore: op_tx: pass sta explicitly when inferring frame hlid
avoid using the skb CB for getting the appropriate sta. Signed-off-by: Arik Nemtsov <arik@wizery.com> Acked-by: Luciano Coelho <coelho@ti.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
930e1915e7
commit
2b2b643807
@ -1197,7 +1197,7 @@ static void wl1271_op_tx(struct ieee80211_hw *hw, struct sk_buff *skb)
|
|||||||
mapping = skb_get_queue_mapping(skb);
|
mapping = skb_get_queue_mapping(skb);
|
||||||
q = wl1271_tx_get_queue(mapping);
|
q = wl1271_tx_get_queue(mapping);
|
||||||
|
|
||||||
hlid = wl12xx_tx_get_hlid(wl, wlvif, skb);
|
hlid = wl12xx_tx_get_hlid(wl, wlvif, skb, info->control.sta);
|
||||||
|
|
||||||
spin_lock_irqsave(&wl->wl_lock, flags);
|
spin_lock_irqsave(&wl->wl_lock, flags);
|
||||||
|
|
||||||
|
@ -130,16 +130,13 @@ bool wl12xx_is_dummy_packet(struct wl1271 *wl, struct sk_buff *skb)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL(wl12xx_is_dummy_packet);
|
EXPORT_SYMBOL(wl12xx_is_dummy_packet);
|
||||||
|
|
||||||
u8 wl12xx_tx_get_hlid_ap(struct wl1271 *wl, struct wl12xx_vif *wlvif,
|
static u8 wl12xx_tx_get_hlid_ap(struct wl1271 *wl, struct wl12xx_vif *wlvif,
|
||||||
struct sk_buff *skb)
|
struct sk_buff *skb, struct ieee80211_sta *sta)
|
||||||
{
|
{
|
||||||
struct ieee80211_tx_info *control = IEEE80211_SKB_CB(skb);
|
if (sta) {
|
||||||
|
|
||||||
if (control->control.sta) {
|
|
||||||
struct wl1271_station *wl_sta;
|
struct wl1271_station *wl_sta;
|
||||||
|
|
||||||
wl_sta = (struct wl1271_station *)
|
wl_sta = (struct wl1271_station *)sta->drv_priv;
|
||||||
control->control.sta->drv_priv;
|
|
||||||
return wl_sta->hlid;
|
return wl_sta->hlid;
|
||||||
} else {
|
} else {
|
||||||
struct ieee80211_hdr *hdr;
|
struct ieee80211_hdr *hdr;
|
||||||
@ -156,7 +153,7 @@ u8 wl12xx_tx_get_hlid_ap(struct wl1271 *wl, struct wl12xx_vif *wlvif,
|
|||||||
}
|
}
|
||||||
|
|
||||||
u8 wl12xx_tx_get_hlid(struct wl1271 *wl, struct wl12xx_vif *wlvif,
|
u8 wl12xx_tx_get_hlid(struct wl1271 *wl, struct wl12xx_vif *wlvif,
|
||||||
struct sk_buff *skb)
|
struct sk_buff *skb, struct ieee80211_sta *sta)
|
||||||
{
|
{
|
||||||
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
|
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
|
||||||
|
|
||||||
@ -164,7 +161,7 @@ u8 wl12xx_tx_get_hlid(struct wl1271 *wl, struct wl12xx_vif *wlvif,
|
|||||||
return wl->system_hlid;
|
return wl->system_hlid;
|
||||||
|
|
||||||
if (wlvif->bss_type == BSS_TYPE_AP_BSS)
|
if (wlvif->bss_type == BSS_TYPE_AP_BSS)
|
||||||
return wl12xx_tx_get_hlid_ap(wl, wlvif, skb);
|
return wl12xx_tx_get_hlid_ap(wl, wlvif, skb, sta);
|
||||||
|
|
||||||
if ((test_bit(WLVIF_FLAG_STA_ASSOCIATED, &wlvif->flags) ||
|
if ((test_bit(WLVIF_FLAG_STA_ASSOCIATED, &wlvif->flags) ||
|
||||||
test_bit(WLVIF_FLAG_IBSS_JOINED, &wlvif->flags)) &&
|
test_bit(WLVIF_FLAG_IBSS_JOINED, &wlvif->flags)) &&
|
||||||
|
@ -243,10 +243,8 @@ u8 wlcore_rate_to_idx(struct wl1271 *wl, u8 rate, enum ieee80211_band band);
|
|||||||
u32 wl1271_tx_enabled_rates_get(struct wl1271 *wl, u32 rate_set,
|
u32 wl1271_tx_enabled_rates_get(struct wl1271 *wl, u32 rate_set,
|
||||||
enum ieee80211_band rate_band);
|
enum ieee80211_band rate_band);
|
||||||
u32 wl1271_tx_min_rate_get(struct wl1271 *wl, u32 rate_set);
|
u32 wl1271_tx_min_rate_get(struct wl1271 *wl, u32 rate_set);
|
||||||
u8 wl12xx_tx_get_hlid_ap(struct wl1271 *wl, struct wl12xx_vif *wlvif,
|
|
||||||
struct sk_buff *skb);
|
|
||||||
u8 wl12xx_tx_get_hlid(struct wl1271 *wl, struct wl12xx_vif *wlvif,
|
u8 wl12xx_tx_get_hlid(struct wl1271 *wl, struct wl12xx_vif *wlvif,
|
||||||
struct sk_buff *skb);
|
struct sk_buff *skb, struct ieee80211_sta *sta);
|
||||||
void wl1271_tx_reset_link_queues(struct wl1271 *wl, u8 hlid);
|
void wl1271_tx_reset_link_queues(struct wl1271 *wl, u8 hlid);
|
||||||
void wl1271_handle_tx_low_watermark(struct wl1271 *wl);
|
void wl1271_handle_tx_low_watermark(struct wl1271 *wl);
|
||||||
bool wl12xx_is_dummy_packet(struct wl1271 *wl, struct sk_buff *skb);
|
bool wl12xx_is_dummy_packet(struct wl1271 *wl, struct sk_buff *skb);
|
||||||
|
Loading…
Reference in New Issue
Block a user