Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 219997
b: refs/heads/master
c: a922a4b
h: refs/heads/master
i:
  219995: 99c5a20
v: v3
  • Loading branch information
Mike McCormack authored and Greg Kroah-Hartman committed Sep 30, 2010
1 parent 846745c commit 4cf2cf2
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 33 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 1f1f19ff628ac3936f88465efb07efde0a4e5a5a
refs/heads/master: a922a4b778dc94f697b18aac85425340ca3aeffc
63 changes: 31 additions & 32 deletions trunk/drivers/staging/rtl8192e/r8192E_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -1048,43 +1048,42 @@ static int rtl8192_hard_start_xmit(struct sk_buff *skb,struct net_device *dev)

static void rtl8192_tx_isr(struct net_device *dev, int prio)
{
struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev);

struct rtl8192_tx_ring *ring = &priv->tx_ring[prio];

while (skb_queue_len(&ring->queue)) {
tx_desc_819x_pci *entry = &ring->desc[ring->idx];
struct sk_buff *skb;
struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev);
struct rtl8192_tx_ring *ring = &priv->tx_ring[prio];

/* beacon packet will only use the first descriptor defaultly,
* and the OWN may not be cleared by the hardware
* */
if(prio != BEACON_QUEUE) {
if(entry->OWN)
return;
ring->idx = (ring->idx + 1) % ring->entries;
}
while (skb_queue_len(&ring->queue)) {
tx_desc_819x_pci *entry = &ring->desc[ring->idx];
struct sk_buff *skb;

skb = __skb_dequeue(&ring->queue);
pci_unmap_single(priv->pdev, le32_to_cpu(entry->TxBuffAddr),
skb->len, PCI_DMA_TODEVICE);
/*
* beacon packet will only use the first descriptor defaultly,
* and the OWN may not be cleared by the hardware
*/
if (prio != BEACON_QUEUE) {
if (entry->OWN)
return;
ring->idx = (ring->idx + 1) % ring->entries;
}

kfree_skb(skb);
}
if (prio == MGNT_QUEUE){
if (priv->ieee80211->ack_tx_to_ieee){
if (rtl8192_is_tx_queue_empty(dev)){
priv->ieee80211->ack_tx_to_ieee = 0;
ieee80211_ps_tx_ack(priv->ieee80211, 1);
}
}
}
skb = __skb_dequeue(&ring->queue);
pci_unmap_single(priv->pdev, le32_to_cpu(entry->TxBuffAddr),
skb->len, PCI_DMA_TODEVICE);

if(prio != BEACON_QUEUE) {
/* try to deal with the pending packets */
tasklet_schedule(&priv->irq_tx_tasklet);
}
kfree_skb(skb);
}
if (prio == MGNT_QUEUE) {
if (priv->ieee80211->ack_tx_to_ieee) {
if (rtl8192_is_tx_queue_empty(dev)) {
priv->ieee80211->ack_tx_to_ieee = 0;
ieee80211_ps_tx_ack(priv->ieee80211, 1);
}
}
}

if (prio != BEACON_QUEUE) {
/* try to deal with the pending packets */
tasklet_schedule(&priv->irq_tx_tasklet);
}
}

static void rtl8192_stop_beacon(struct net_device *dev)
Expand Down

0 comments on commit 4cf2cf2

Please sign in to comment.