forked from Minki/linux
igb: Don't use NETDEV_FRAG_PAGE_MAX_SIZE in descriptor calculation
This change updates igb so that it will correctly perform the descriptor count calculation. Previously it was taking NETDEV_FRAG_PAGE_MAX_SIZE into account with isn't really correct since a different value is used to determine the size of the pages used for TCP. That is actually determined by SKB_FRAG_PAGE_ORDER. Signed-off-by: Alexander Duyck <alexander.h.duyck@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
9451980a66
commit
2ee52ad496
@ -4974,6 +4974,7 @@ netdev_tx_t igb_xmit_frame_ring(struct sk_buff *skb,
|
||||
struct igb_tx_buffer *first;
|
||||
int tso;
|
||||
u32 tx_flags = 0;
|
||||
unsigned short f;
|
||||
u16 count = TXD_USE_COUNT(skb_headlen(skb));
|
||||
__be16 protocol = vlan_get_protocol(skb);
|
||||
u8 hdr_len = 0;
|
||||
@ -4984,14 +4985,8 @@ netdev_tx_t igb_xmit_frame_ring(struct sk_buff *skb,
|
||||
* + 1 desc for context descriptor,
|
||||
* otherwise try next time
|
||||
*/
|
||||
if (NETDEV_FRAG_PAGE_MAX_SIZE > IGB_MAX_DATA_PER_TXD) {
|
||||
unsigned short f;
|
||||
|
||||
for (f = 0; f < skb_shinfo(skb)->nr_frags; f++)
|
||||
count += TXD_USE_COUNT(skb_shinfo(skb)->frags[f].size);
|
||||
} else {
|
||||
count += skb_shinfo(skb)->nr_frags;
|
||||
}
|
||||
for (f = 0; f < skb_shinfo(skb)->nr_frags; f++)
|
||||
count += TXD_USE_COUNT(skb_shinfo(skb)->frags[f].size);
|
||||
|
||||
if (igb_maybe_stop_tx(tx_ring, count + 3)) {
|
||||
/* this is a hard error */
|
||||
|
Loading…
Reference in New Issue
Block a user