aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath6kl/txrx.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/ath/ath6kl/txrx.c')
-rw-r--r--[-rwxr-xr-x]drivers/net/wireless/ath/ath6kl/txrx.c26
1 files changed, 14 insertions, 12 deletions
diff --git a/drivers/net/wireless/ath/ath6kl/txrx.c b/drivers/net/wireless/ath/ath6kl/txrx.c
index ff32b70..b8924dd 100755..100644
--- a/drivers/net/wireless/ath/ath6kl/txrx.c
+++ b/drivers/net/wireless/ath/ath6kl/txrx.c
@@ -286,6 +286,8 @@ int ath6kl_control_tx(void *devt, struct sk_buff *skb,
struct ath6kl *ar = devt;
int status = 0;
struct ath6kl_cookie *cookie = NULL;
+ struct ath6kl_vif *vif;
+ vif = ath6kl_vif_first(ar);
if (WARN_ON_ONCE(ar->state == ATH6KL_STATE_WOW))
goto fail_ctrl_tx;
@@ -308,7 +310,8 @@ int ath6kl_control_tx(void *devt, struct sk_buff *skb,
ath6kl_err("wmi ctrl ep full, dropping pkt : 0x%p, len:%d\n",
skb, skb->len);
#ifdef CONFIG_MACH_PX
- ath6kl_print_ar6k_registers(ar);
+ if (vif->nw_type == INFRA_NETWORK)
+ vif->force_reload = true;
#endif
} else
cookie = ath6kl_alloc_cookie(ar);
@@ -362,8 +365,8 @@ int ath6kl_data_tx(struct sk_buff *skb, struct net_device *dev)
u32 flags = 0;
ath6kl_dbg(ATH6KL_DBG_WLAN_TX,
- "%s: skb=0x%p, data=0x%p, len=0x%x\n", __func__,
- skb, skb->data, skb->len);
+ "%s: skb=0x%p, data=0x%p, len=0x%x, actual_len=0x%x\n", __func__,
+ skb, skb->data, skb->len, skb->tail - skb->data);
/* If target is not associated */
if (!test_bit(CONNECTED, &vif->flags)) {
@@ -394,7 +397,8 @@ int ath6kl_data_tx(struct sk_buff *skb, struct net_device *dev)
csum_dest = skb->csum_offset + csum_start;
}
- if (skb_headroom(skb) < dev->needed_headroom) {
+ if (skb_headroom(skb) < dev->needed_headroom)
+ {
struct sk_buff *tmp_skb = skb;
skb = skb_realloc_headroom(skb, dev->needed_headroom);
@@ -476,13 +480,8 @@ int ath6kl_data_tx(struct sk_buff *skb, struct net_device *dev)
spin_unlock_bh(&ar->lock);
-#ifdef CONFIG_MACH_PX
- if (false && !IS_ALIGNED((unsigned long) skb->data - HTC_HDR_LENGTH, 4) &&
- skb_cloned(skb)) {
-#else
if (!IS_ALIGNED((unsigned long) skb->data - HTC_HDR_LENGTH, 4) &&
skb_cloned(skb)) {
-#endif
/*
* We will touch (move the buffer data to align it. Since the
* skb buffer is cloned and not only the header is changed, we
@@ -506,7 +505,6 @@ int ath6kl_data_tx(struct sk_buff *skb, struct net_device *dev)
ath6kl_dbg_dump(ATH6KL_DBG_RAW_BYTES, __func__, "tx ",
skb->data, skb->len);
-
/*
* HTC interface is asynchronous, if this fails, cleanup will
* happen in the ath6kl_tx_complete callback.
@@ -836,6 +834,10 @@ static void ath6kl_deliver_frames_to_nw_stack(struct net_device *dev,
skb->protocol = eth_type_trans(skb, skb->dev);
+#ifdef CONFIG_MACH_PX
+ skb->len = skb->tail - skb->data;
+#endif
+
netif_rx_ni(skb);
}
@@ -1344,8 +1346,8 @@ void ath6kl_rx(struct htc_target *target, struct htc_packet *packet)
spin_unlock_bh(&vif->if_lock);
- ath6kl_dbg_dump(ATH6KL_DBG_RAW_BYTES, __func__, "rx ",
- skb->data, skb->len);
+ //ath6kl_dbg_dump(ATH6KL_DBG_RAW_BYTES, __func__, "rx ",
+ // skb->data, skb->len);
skb->dev = vif->ndev;