Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 74480
b: refs/heads/master
c: 7832ee0
h: refs/heads/master
v: v3
  • Loading branch information
Divy Le Ray authored and Jeff Garzik committed Dec 1, 2007
1 parent bb68305 commit 5d73694
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 21 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: bd0ceaab86d3f0e3916b3b7868cfe20de490eebc
refs/heads/master: 7832ee034b6ef78aab020c9ec1348544cd65ccbd
3 changes: 2 additions & 1 deletion trunk/drivers/net/chelsio/cxgb2.c
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -401,7 +401,8 @@ static char stats_strings[][ETH_GSTRING_LEN] = {
"TxTso",
"RxVlan",
"TxVlan",

"TxNeedHeadroom",

/* Interrupt stats */
"rx drops",
"pure_rsps",
Expand Down
34 changes: 15 additions & 19 deletions trunk/drivers/net/chelsio/sge.c
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -991,6 +991,7 @@ void t1_sge_get_port_stats(const struct sge *sge, int port,
ss->tx_packets += st->tx_packets;
ss->tx_cso += st->tx_cso;
ss->tx_tso += st->tx_tso;
ss->tx_need_hdrroom += st->tx_need_hdrroom;
ss->vlan_xtract += st->vlan_xtract;
ss->vlan_insert += st->vlan_insert;
}
Expand Down Expand Up @@ -1848,14 +1849,27 @@ int t1_start_xmit(struct sk_buff *skb, struct net_device *dev)
{
struct adapter *adapter = dev->priv;
struct sge *sge = adapter->sge;
struct sge_port_stats *st = per_cpu_ptr(sge->port_stats[dev->if_port], smp_processor_id());
struct sge_port_stats *st = per_cpu_ptr(sge->port_stats[dev->if_port],
smp_processor_id());
struct cpl_tx_pkt *cpl;
struct sk_buff *orig_skb = skb;
int ret;

if (skb->protocol == htons(ETH_P_CPL5))
goto send;

/*
* We are using a non-standard hard_header_len.
* Allocate more header room in the rare cases it is not big enough.
*/
if (unlikely(skb_headroom(skb) < dev->hard_header_len - ETH_HLEN)) {
skb = skb_realloc_headroom(skb, sizeof(struct cpl_tx_pkt_lso));
++st->tx_need_hdrroom;
dev_kfree_skb_any(orig_skb);
if (!skb)
return NETDEV_TX_OK;
}

if (skb_shinfo(skb)->gso_size) {
int eth_type;
struct cpl_tx_pkt_lso *hdr;
Expand Down Expand Up @@ -1889,24 +1903,6 @@ int t1_start_xmit(struct sk_buff *skb, struct net_device *dev)
return NETDEV_TX_OK;
}

/*
* We are using a non-standard hard_header_len and some kernel
* components, such as pktgen, do not handle it right.
* Complain when this happens but try to fix things up.
*/
if (unlikely(skb_headroom(skb) < dev->hard_header_len - ETH_HLEN)) {
pr_debug("%s: headroom %d header_len %d\n", dev->name,
skb_headroom(skb), dev->hard_header_len);

if (net_ratelimit())
printk(KERN_ERR "%s: inadequate headroom in "
"Tx packet\n", dev->name);
skb = skb_realloc_headroom(skb, sizeof(*cpl));
dev_kfree_skb_any(orig_skb);
if (!skb)
return NETDEV_TX_OK;
}

if (!(adapter->flags & UDP_CSUM_CAPABLE) &&
skb->ip_summed == CHECKSUM_PARTIAL &&
ip_hdr(skb)->protocol == IPPROTO_UDP) {
Expand Down
1 change: 1 addition & 0 deletions trunk/drivers/net/chelsio/sge.h
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ struct sge_port_stats {
u64 tx_tso; /* # of TSO requests */
u64 vlan_xtract; /* # of VLAN tag extractions */
u64 vlan_insert; /* # of VLAN tag insertions */
u64 tx_need_hdrroom; /* # of TX skbs in need of more header room */
};

struct sk_buff;
Expand Down

0 comments on commit 5d73694

Please sign in to comment.