提交 c3a8c5b6 编写于 作者: D Divy Le Ray 提交者: David S. Miller

cxgb3: move away from LLTX

cxgb3 no longer advertizes LLTX.
Signed-off-by: NDivy Le Ray <divy@chelsio.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 080c8255
...@@ -3059,7 +3059,6 @@ static int __devinit init_one(struct pci_dev *pdev, ...@@ -3059,7 +3059,6 @@ static int __devinit init_one(struct pci_dev *pdev,
netdev->mem_start = mmio_start; netdev->mem_start = mmio_start;
netdev->mem_end = mmio_start + mmio_len - 1; netdev->mem_end = mmio_start + mmio_len - 1;
netdev->features |= NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_TSO; netdev->features |= NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_TSO;
netdev->features |= NETIF_F_LLTX;
netdev->features |= NETIF_F_GRO; netdev->features |= NETIF_F_GRO;
if (pci_using_dac) if (pci_using_dac)
netdev->features |= NETIF_F_HIGHDMA; netdev->features |= NETIF_F_HIGHDMA;
......
...@@ -1241,7 +1241,6 @@ int t3_eth_xmit(struct sk_buff *skb, struct net_device *dev) ...@@ -1241,7 +1241,6 @@ int t3_eth_xmit(struct sk_buff *skb, struct net_device *dev)
q = &qs->txq[TXQ_ETH]; q = &qs->txq[TXQ_ETH];
txq = netdev_get_tx_queue(dev, qidx); txq = netdev_get_tx_queue(dev, qidx);
spin_lock(&q->lock);
reclaim_completed_tx(adap, q, TX_RECLAIM_CHUNK); reclaim_completed_tx(adap, q, TX_RECLAIM_CHUNK);
credits = q->size - q->in_use; credits = q->size - q->in_use;
...@@ -1252,7 +1251,6 @@ int t3_eth_xmit(struct sk_buff *skb, struct net_device *dev) ...@@ -1252,7 +1251,6 @@ int t3_eth_xmit(struct sk_buff *skb, struct net_device *dev)
dev_err(&adap->pdev->dev, dev_err(&adap->pdev->dev,
"%s: Tx ring %u full while queue awake!\n", "%s: Tx ring %u full while queue awake!\n",
dev->name, q->cntxt_id & 7); dev->name, q->cntxt_id & 7);
spin_unlock(&q->lock);
return NETDEV_TX_BUSY; return NETDEV_TX_BUSY;
} }
...@@ -1286,8 +1284,6 @@ int t3_eth_xmit(struct sk_buff *skb, struct net_device *dev) ...@@ -1286,8 +1284,6 @@ int t3_eth_xmit(struct sk_buff *skb, struct net_device *dev)
if (vlan_tx_tag_present(skb) && pi->vlan_grp) if (vlan_tx_tag_present(skb) && pi->vlan_grp)
qs->port_stats[SGE_PSTAT_VLANINS]++; qs->port_stats[SGE_PSTAT_VLANINS]++;
spin_unlock(&q->lock);
/* /*
* We do not use Tx completion interrupts to free DMAd Tx packets. * We do not use Tx completion interrupts to free DMAd Tx packets.
* This is good for performamce but means that we rely on new Tx * This is good for performamce but means that we rely on new Tx
...@@ -2857,11 +2853,12 @@ static void sge_timer_tx(unsigned long data) ...@@ -2857,11 +2853,12 @@ static void sge_timer_tx(unsigned long data)
unsigned int tbd[SGE_TXQ_PER_SET] = {0, 0}; unsigned int tbd[SGE_TXQ_PER_SET] = {0, 0};
unsigned long next_period; unsigned long next_period;
if (spin_trylock(&qs->txq[TXQ_ETH].lock)) { if (__netif_tx_trylock(qs->tx_q)) {
tbd[TXQ_ETH] = reclaim_completed_tx(adap, &qs->txq[TXQ_ETH], tbd[TXQ_ETH] = reclaim_completed_tx(adap, &qs->txq[TXQ_ETH],
TX_RECLAIM_TIMER_CHUNK); TX_RECLAIM_TIMER_CHUNK);
spin_unlock(&qs->txq[TXQ_ETH].lock); __netif_tx_unlock(qs->tx_q);
} }
if (spin_trylock(&qs->txq[TXQ_OFLD].lock)) { if (spin_trylock(&qs->txq[TXQ_OFLD].lock)) {
tbd[TXQ_OFLD] = reclaim_completed_tx(adap, &qs->txq[TXQ_OFLD], tbd[TXQ_OFLD] = reclaim_completed_tx(adap, &qs->txq[TXQ_OFLD],
TX_RECLAIM_TIMER_CHUNK); TX_RECLAIM_TIMER_CHUNK);
...@@ -2869,8 +2866,8 @@ static void sge_timer_tx(unsigned long data) ...@@ -2869,8 +2866,8 @@ static void sge_timer_tx(unsigned long data)
} }
next_period = TX_RECLAIM_PERIOD >> next_period = TX_RECLAIM_PERIOD >>
(max(tbd[TXQ_ETH], tbd[TXQ_OFLD]) / (max(tbd[TXQ_ETH], tbd[TXQ_OFLD]) /
TX_RECLAIM_TIMER_CHUNK); TX_RECLAIM_TIMER_CHUNK);
mod_timer(&qs->tx_reclaim_timer, jiffies + next_period); mod_timer(&qs->tx_reclaim_timer, jiffies + next_period);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册