aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/chelsio/sge.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/chelsio/sge.c')
-rw-r--r--drivers/net/chelsio/sge.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/drivers/net/chelsio/sge.c b/drivers/net/chelsio/sge.c
index 53b41d99b00b..2c5b849b7ba4 100644
--- a/drivers/net/chelsio/sge.c
+++ b/drivers/net/chelsio/sge.c
@@ -1332,8 +1332,8 @@ intr_handler_t t1_select_intr_handler(adapter_t *adapter)
1332 * 1332 *
1333 * This runs with softirqs disabled. 1333 * This runs with softirqs disabled.
1334 */ 1334 */
1335unsigned int t1_sge_tx(struct sk_buff *skb, struct adapter *adapter, 1335static int t1_sge_tx(struct sk_buff *skb, struct adapter *adapter,
1336 unsigned int qid, struct net_device *dev) 1336 unsigned int qid, struct net_device *dev)
1337{ 1337{
1338 struct sge *sge = adapter->sge; 1338 struct sge *sge = adapter->sge;
1339 struct cmdQ *q = &sge->cmdQ[qid]; 1339 struct cmdQ *q = &sge->cmdQ[qid];
@@ -1352,9 +1352,10 @@ unsigned int t1_sge_tx(struct sk_buff *skb, struct adapter *adapter,
1352 set_bit(dev->if_port, &sge->stopped_tx_queues); 1352 set_bit(dev->if_port, &sge->stopped_tx_queues);
1353 sge->stats.cmdQ_full[3]++; 1353 sge->stats.cmdQ_full[3]++;
1354 spin_unlock(&q->lock); 1354 spin_unlock(&q->lock);
1355 CH_ERR("%s: Tx ring full while queue awake!\n", 1355 if (!netif_queue_stopped(dev))
1356 adapter->name); 1356 CH_ERR("%s: Tx ring full while queue awake!\n",
1357 return 1; 1357 adapter->name);
1358 return NETDEV_TX_BUSY;
1358 } 1359 }
1359 if (unlikely(credits - count < q->stop_thres)) { 1360 if (unlikely(credits - count < q->stop_thres)) {
1360 sge->stats.cmdQ_full[3]++; 1361 sge->stats.cmdQ_full[3]++;
@@ -1389,7 +1390,7 @@ unsigned int t1_sge_tx(struct sk_buff *skb, struct adapter *adapter,
1389 writel(F_CMDQ0_ENABLE, adapter->regs + A_SG_DOORBELL); 1390 writel(F_CMDQ0_ENABLE, adapter->regs + A_SG_DOORBELL);
1390 } 1391 }
1391 } 1392 }
1392 return 0; 1393 return NETDEV_TX_OK;
1393} 1394}
1394 1395
1395#define MK_ETH_TYPE_MSS(type, mss) (((mss) & 0x3FFF) | ((type) << 14)) 1396#define MK_ETH_TYPE_MSS(type, mss) (((mss) & 0x3FFF) | ((type) << 14))
@@ -1449,7 +1450,7 @@ int t1_start_xmit(struct sk_buff *skb, struct net_device *dev)
1449 if (unlikely(skb->len < ETH_HLEN || 1450 if (unlikely(skb->len < ETH_HLEN ||
1450 skb->len > dev->mtu + eth_hdr_len(skb->data))) { 1451 skb->len > dev->mtu + eth_hdr_len(skb->data))) {
1451 dev_kfree_skb_any(skb); 1452 dev_kfree_skb_any(skb);
1452 return NET_XMIT_SUCCESS; 1453 return NETDEV_TX_OK;
1453 } 1454 }
1454 1455
1455 /* 1456 /*
@@ -1467,7 +1468,7 @@ int t1_start_xmit(struct sk_buff *skb, struct net_device *dev)
1467 skb = skb_realloc_headroom(skb, sizeof(*cpl)); 1468 skb = skb_realloc_headroom(skb, sizeof(*cpl));
1468 dev_kfree_skb_any(orig_skb); 1469 dev_kfree_skb_any(orig_skb);
1469 if (!skb) 1470 if (!skb)
1470 return -ENOMEM; 1471 return NETDEV_TX_OK;
1471 } 1472 }
1472 1473
1473 if (!(adapter->flags & UDP_CSUM_CAPABLE) && 1474 if (!(adapter->flags & UDP_CSUM_CAPABLE) &&
@@ -1475,7 +1476,7 @@ int t1_start_xmit(struct sk_buff *skb, struct net_device *dev)
1475 skb->nh.iph->protocol == IPPROTO_UDP) 1476 skb->nh.iph->protocol == IPPROTO_UDP)
1476 if (unlikely(skb_checksum_help(skb, 0))) { 1477 if (unlikely(skb_checksum_help(skb, 0))) {
1477 dev_kfree_skb_any(skb); 1478 dev_kfree_skb_any(skb);
1478 return -ENOMEM; 1479 return NETDEV_TX_OK;
1479 } 1480 }
1480 1481
1481 /* Hmmm, assuming to catch the gratious arp... and we'll use 1482 /* Hmmm, assuming to catch the gratious arp... and we'll use