diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2011-10-13 02:31:02 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-10-13 16:05:07 -0400 |
commit | bdb28a97f46b5307e6e9351de52a9dd03e711a2f (patch) | |
tree | 279ed51e9bd704630f6399813ae7f5e7e3ebfab7 | |
parent | 87fb4b7b533073eeeaed0b6bf7c2328995f6c075 (diff) |
be2net: fix truesize errors
Fix skb truesize underestimations of this driver.
Each frag truesize is exactly rx_frag_size bytes. (2048 bytes per
default)
A driver should not use "sizeof(struct sk_buff)" at all.
Signed-off-by: Eric Dumazet <eric.dumazet>
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ethernet/emulex/benet/be_main.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c index 816ce56de7ac..679b8041e43a 100644 --- a/drivers/net/ethernet/emulex/benet/be_main.c +++ b/drivers/net/ethernet/emulex/benet/be_main.c | |||
@@ -1071,6 +1071,7 @@ static void skb_fill_rx_data(struct be_adapter *adapter, struct be_rx_obj *rxo, | |||
1071 | page_info->page_offset + hdr_len; | 1071 | page_info->page_offset + hdr_len; |
1072 | skb_shinfo(skb)->frags[0].size = curr_frag_len - hdr_len; | 1072 | skb_shinfo(skb)->frags[0].size = curr_frag_len - hdr_len; |
1073 | skb->data_len = curr_frag_len - hdr_len; | 1073 | skb->data_len = curr_frag_len - hdr_len; |
1074 | skb->truesize += rx_frag_size; | ||
1074 | skb->tail += hdr_len; | 1075 | skb->tail += hdr_len; |
1075 | } | 1076 | } |
1076 | page_info->page = NULL; | 1077 | page_info->page = NULL; |
@@ -1103,7 +1104,7 @@ static void skb_fill_rx_data(struct be_adapter *adapter, struct be_rx_obj *rxo, | |||
1103 | skb_shinfo(skb)->frags[j].size += curr_frag_len; | 1104 | skb_shinfo(skb)->frags[j].size += curr_frag_len; |
1104 | skb->len += curr_frag_len; | 1105 | skb->len += curr_frag_len; |
1105 | skb->data_len += curr_frag_len; | 1106 | skb->data_len += curr_frag_len; |
1106 | 1107 | skb->truesize += rx_frag_size; | |
1107 | remaining -= curr_frag_len; | 1108 | remaining -= curr_frag_len; |
1108 | index_inc(&rxcp->rxq_idx, rxq->len); | 1109 | index_inc(&rxcp->rxq_idx, rxq->len); |
1109 | page_info->page = NULL; | 1110 | page_info->page = NULL; |
@@ -1133,7 +1134,6 @@ static void be_rx_compl_process(struct be_adapter *adapter, | |||
1133 | else | 1134 | else |
1134 | skb_checksum_none_assert(skb); | 1135 | skb_checksum_none_assert(skb); |
1135 | 1136 | ||
1136 | skb->truesize = skb->len + sizeof(struct sk_buff); | ||
1137 | skb->protocol = eth_type_trans(skb, netdev); | 1137 | skb->protocol = eth_type_trans(skb, netdev); |
1138 | if (adapter->netdev->features & NETIF_F_RXHASH) | 1138 | if (adapter->netdev->features & NETIF_F_RXHASH) |
1139 | skb->rxhash = rxcp->rss_hash; | 1139 | skb->rxhash = rxcp->rss_hash; |
@@ -1181,7 +1181,7 @@ static void be_rx_compl_process_gro(struct be_adapter *adapter, | |||
1181 | put_page(page_info->page); | 1181 | put_page(page_info->page); |
1182 | } | 1182 | } |
1183 | skb_shinfo(skb)->frags[j].size += curr_frag_len; | 1183 | skb_shinfo(skb)->frags[j].size += curr_frag_len; |
1184 | 1184 | skb->truesize += rx_frag_size; | |
1185 | remaining -= curr_frag_len; | 1185 | remaining -= curr_frag_len; |
1186 | index_inc(&rxcp->rxq_idx, rxq->len); | 1186 | index_inc(&rxcp->rxq_idx, rxq->len); |
1187 | memset(page_info, 0, sizeof(*page_info)); | 1187 | memset(page_info, 0, sizeof(*page_info)); |
@@ -1191,7 +1191,6 @@ static void be_rx_compl_process_gro(struct be_adapter *adapter, | |||
1191 | skb_shinfo(skb)->nr_frags = j + 1; | 1191 | skb_shinfo(skb)->nr_frags = j + 1; |
1192 | skb->len = rxcp->pkt_size; | 1192 | skb->len = rxcp->pkt_size; |
1193 | skb->data_len = rxcp->pkt_size; | 1193 | skb->data_len = rxcp->pkt_size; |
1194 | skb->truesize += rxcp->pkt_size; | ||
1195 | skb->ip_summed = CHECKSUM_UNNECESSARY; | 1194 | skb->ip_summed = CHECKSUM_UNNECESSARY; |
1196 | if (adapter->netdev->features & NETIF_F_RXHASH) | 1195 | if (adapter->netdev->features & NETIF_F_RXHASH) |
1197 | skb->rxhash = rxcp->rss_hash; | 1196 | skb->rxhash = rxcp->rss_hash; |