igb: use packet buffer sizes from RXPBS register
authorAlexander Duyck <alexander.h.duyck@intel.com>
Tue, 27 Oct 2009 23:46:38 +0000 (23:46 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 28 Oct 2009 10:25:38 +0000 (03:25 -0700)
This patch changes the configuration for 82576 so that it uses the actual
value of the 82576 rx packet buffer size instead of just assuming the
value.

Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/igb/e1000_82575.h
drivers/net/igb/e1000_regs.h
drivers/net/igb/igb_main.c

index cbe475747d1ad0231137fbc3f74909cfd4edb9fe..b3808ca49ef5a04712ba01a8bb36748b6d408e53 100644 (file)
@@ -228,6 +228,8 @@ struct e1000_adv_tx_context_desc {
 
 #define ALL_QUEUES   0xFFFF
 
+/* RX packet buffer size defines */
+#define E1000_RXPBS_SIZE_MASK_82576  0x0000007F
 void igb_vmdq_set_loopback_pf(struct e1000_hw *, bool);
 void igb_vmdq_set_replication_pf(struct e1000_hw *, bool);
 
index 24f2c24d0309563d2731f98ed0cbf5c71ca10d34..934e03b053ac293f666a9d042d074dcdae06b003 100644 (file)
 #define E1000_ETQF(_n)  (0x05CB0 + (4 * (_n))) /* EType Queue Fltr */
 
 #define E1000_RQDPC(_n) (0x0C030 + ((_n) * 0x40))
+
 /* Split and Replication RX Control - RW */
+#define E1000_RXPBS    0x02404  /* Rx Packet Buffer Size - RW */
 /*
  * Convenience macros
  *
index 7e628bad17d59b5eae010f4bde29bfc824ef7e23..2ed2694df5ab913f999dbb8e06f509f67150e584 100644 (file)
@@ -1215,7 +1215,8 @@ void igb_reset(struct igb_adapter *adapter)
         */
        switch (mac->type) {
        case e1000_82576:
-               pba = E1000_PBA_64K;
+               pba = rd32(E1000_RXPBS);
+               pba &= E1000_RXPBS_SIZE_MASK_82576;
                break;
        case e1000_82575:
        default: