diff options
Diffstat (limited to 'drivers/net/chelsio/sge.c')
-rw-r--r-- | drivers/net/chelsio/sge.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/drivers/net/chelsio/sge.c b/drivers/net/chelsio/sge.c index 8c658cf6f62f..71384114a4ed 100644 --- a/drivers/net/chelsio/sge.c +++ b/drivers/net/chelsio/sge.c | |||
@@ -267,7 +267,7 @@ struct sge { | |||
267 | struct sk_buff *espibug_skb[MAX_NPORTS]; | 267 | struct sk_buff *espibug_skb[MAX_NPORTS]; |
268 | u32 sge_control; /* shadow value of sge control reg */ | 268 | u32 sge_control; /* shadow value of sge control reg */ |
269 | struct sge_intr_counts stats; | 269 | struct sge_intr_counts stats; |
270 | struct sge_port_stats *port_stats[MAX_NPORTS]; | 270 | struct sge_port_stats __percpu *port_stats[MAX_NPORTS]; |
271 | struct sched *tx_sched; | 271 | struct sched *tx_sched; |
272 | struct cmdQ cmdQ[SGE_CMDQ_N] ____cacheline_aligned_in_smp; | 272 | struct cmdQ cmdQ[SGE_CMDQ_N] ____cacheline_aligned_in_smp; |
273 | }; | 273 | }; |
@@ -953,7 +953,7 @@ int t1_sge_intr_error_handler(struct sge *sge) | |||
953 | sge->stats.respQ_empty++; | 953 | sge->stats.respQ_empty++; |
954 | if (cause & F_RESPQ_OVERFLOW) { | 954 | if (cause & F_RESPQ_OVERFLOW) { |
955 | sge->stats.respQ_overflow++; | 955 | sge->stats.respQ_overflow++; |
956 | CH_ALERT("%s: SGE response queue overflow\n", | 956 | pr_alert("%s: SGE response queue overflow\n", |
957 | adapter->name); | 957 | adapter->name); |
958 | } | 958 | } |
959 | if (cause & F_FL_EXHAUSTED) { | 959 | if (cause & F_FL_EXHAUSTED) { |
@@ -962,12 +962,12 @@ int t1_sge_intr_error_handler(struct sge *sge) | |||
962 | } | 962 | } |
963 | if (cause & F_PACKET_TOO_BIG) { | 963 | if (cause & F_PACKET_TOO_BIG) { |
964 | sge->stats.pkt_too_big++; | 964 | sge->stats.pkt_too_big++; |
965 | CH_ALERT("%s: SGE max packet size exceeded\n", | 965 | pr_alert("%s: SGE max packet size exceeded\n", |
966 | adapter->name); | 966 | adapter->name); |
967 | } | 967 | } |
968 | if (cause & F_PACKET_MISMATCH) { | 968 | if (cause & F_PACKET_MISMATCH) { |
969 | sge->stats.pkt_mismatch++; | 969 | sge->stats.pkt_mismatch++; |
970 | CH_ALERT("%s: SGE packet mismatch\n", adapter->name); | 970 | pr_alert("%s: SGE packet mismatch\n", adapter->name); |
971 | } | 971 | } |
972 | if (cause & SGE_INT_FATAL) | 972 | if (cause & SGE_INT_FATAL) |
973 | t1_fatal_err(adapter); | 973 | t1_fatal_err(adapter); |
@@ -1101,7 +1101,7 @@ static void unexpected_offload(struct adapter *adapter, struct freelQ *fl) | |||
1101 | 1101 | ||
1102 | pci_dma_sync_single_for_cpu(adapter->pdev, pci_unmap_addr(ce, dma_addr), | 1102 | pci_dma_sync_single_for_cpu(adapter->pdev, pci_unmap_addr(ce, dma_addr), |
1103 | pci_unmap_len(ce, dma_len), PCI_DMA_FROMDEVICE); | 1103 | pci_unmap_len(ce, dma_len), PCI_DMA_FROMDEVICE); |
1104 | CH_ERR("%s: unexpected offload packet, cmd %u\n", | 1104 | pr_err("%s: unexpected offload packet, cmd %u\n", |
1105 | adapter->name, *skb->data); | 1105 | adapter->name, *skb->data); |
1106 | recycle_fl_buf(fl, fl->cidx); | 1106 | recycle_fl_buf(fl, fl->cidx); |
1107 | } | 1107 | } |
@@ -1378,7 +1378,7 @@ static void sge_rx(struct sge *sge, struct freelQ *fl, unsigned int len) | |||
1378 | } | 1378 | } |
1379 | __skb_pull(skb, sizeof(*p)); | 1379 | __skb_pull(skb, sizeof(*p)); |
1380 | 1380 | ||
1381 | st = per_cpu_ptr(sge->port_stats[p->iff], smp_processor_id()); | 1381 | st = this_cpu_ptr(sge->port_stats[p->iff]); |
1382 | 1382 | ||
1383 | skb->protocol = eth_type_trans(skb, adapter->port[p->iff].dev); | 1383 | skb->protocol = eth_type_trans(skb, adapter->port[p->iff].dev); |
1384 | if ((adapter->flags & RX_CSUM_ENABLED) && p->csum == 0xffff && | 1384 | if ((adapter->flags & RX_CSUM_ENABLED) && p->csum == 0xffff && |
@@ -1687,7 +1687,7 @@ static int t1_sge_tx(struct sk_buff *skb, struct adapter *adapter, | |||
1687 | netif_stop_queue(dev); | 1687 | netif_stop_queue(dev); |
1688 | set_bit(dev->if_port, &sge->stopped_tx_queues); | 1688 | set_bit(dev->if_port, &sge->stopped_tx_queues); |
1689 | sge->stats.cmdQ_full[2]++; | 1689 | sge->stats.cmdQ_full[2]++; |
1690 | CH_ERR("%s: Tx ring full while queue awake!\n", | 1690 | pr_err("%s: Tx ring full while queue awake!\n", |
1691 | adapter->name); | 1691 | adapter->name); |
1692 | } | 1692 | } |
1693 | spin_unlock(&q->lock); | 1693 | spin_unlock(&q->lock); |
@@ -1780,8 +1780,7 @@ netdev_tx_t t1_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
1780 | { | 1780 | { |
1781 | struct adapter *adapter = dev->ml_priv; | 1781 | struct adapter *adapter = dev->ml_priv; |
1782 | struct sge *sge = adapter->sge; | 1782 | struct sge *sge = adapter->sge; |
1783 | struct sge_port_stats *st = per_cpu_ptr(sge->port_stats[dev->if_port], | 1783 | struct sge_port_stats *st = this_cpu_ptr(sge->port_stats[dev->if_port]); |
1784 | smp_processor_id()); | ||
1785 | struct cpl_tx_pkt *cpl; | 1784 | struct cpl_tx_pkt *cpl; |
1786 | struct sk_buff *orig_skb = skb; | 1785 | struct sk_buff *orig_skb = skb; |
1787 | int ret; | 1786 | int ret; |