diff options
author | codeworkx <codeworkx@cyanogenmod.com> | 2012-09-22 09:48:20 +0200 |
---|---|---|
committer | codeworkx <codeworkx@cyanogenmod.com> | 2012-09-22 14:02:16 +0200 |
commit | 2489007e7d740ccbc3e0a202914e243ad5178787 (patch) | |
tree | b8e6380ea7b1da63474ad68a5dba997e01146043 /drivers/net/wireless/ath/ath6kl/txrx.c | |
parent | 5f67568eb31e3a813c7c52461dcf66ade15fc2e7 (diff) | |
download | kernel_samsung_smdk4412-2489007e7d740ccbc3e0a202914e243ad5178787.zip kernel_samsung_smdk4412-2489007e7d740ccbc3e0a202914e243ad5178787.tar.gz kernel_samsung_smdk4412-2489007e7d740ccbc3e0a202914e243ad5178787.tar.bz2 |
merge opensource jb u5
Change-Id: I1aaec157aa196f3448eff8636134fce89a814cf2
Diffstat (limited to 'drivers/net/wireless/ath/ath6kl/txrx.c')
-rw-r--r--[-rwxr-xr-x] | drivers/net/wireless/ath/ath6kl/txrx.c | 26 |
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; |