igb: Don't use NETDEV_FRAG_PAGE_MAX_SIZE in descriptor calculation
authorAlexander Duyck <alexander.h.duyck@redhat.com>
Thu, 7 May 2015 04:11:45 +0000 (21:11 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 12 May 2015 14:39:26 +0000 (10:39 -0400)
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>
drivers/net/ethernet/intel/igb/igb_main.c

index e63664649029570352b0c8ecdda977ce4d6f9cca..8a45ed7506c5d7aa7904f314d585b24d12b9727a 100644 (file)
@@ -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 */