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 cbe4757..b3808ca 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 24f2c24..934e03b 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 7e628ba..2ed2694 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: