|
@@ -6967,19 +6967,16 @@ static int tg3_reset_hw(struct tg3 *tp, int reset_phy)
|
|
|
tw32(RCVDBDI_STD_BD + TG3_BDINFO_NIC_ADDR,
|
|
|
NIC_SRAM_RX_BUFFER_DESC);
|
|
|
|
|
|
- /* Don't even try to program the JUMBO/MINI buffer descriptor
|
|
|
- * configs on 5705.
|
|
|
- */
|
|
|
- if (tp->tg3_flags2 & TG3_FLG2_5705_PLUS) {
|
|
|
- tw32(RCVDBDI_STD_BD + TG3_BDINFO_MAXLEN_FLAGS,
|
|
|
- RX_STD_MAX_SIZE_5705 << BDINFO_FLAGS_MAXLEN_SHIFT);
|
|
|
- } else {
|
|
|
- tw32(RCVDBDI_STD_BD + TG3_BDINFO_MAXLEN_FLAGS,
|
|
|
- RX_STD_MAX_SIZE << BDINFO_FLAGS_MAXLEN_SHIFT);
|
|
|
-
|
|
|
+ /* Disable the mini ring */
|
|
|
+ if (!(tp->tg3_flags2 & TG3_FLG2_5705_PLUS))
|
|
|
tw32(RCVDBDI_MINI_BD + TG3_BDINFO_MAXLEN_FLAGS,
|
|
|
BDINFO_FLAGS_DISABLED);
|
|
|
|
|
|
+ /* Program the jumbo buffer descriptor ring control
|
|
|
+ * blocks on those devices that have them.
|
|
|
+ */
|
|
|
+ if ((tp->tg3_flags2 & TG3_FLG2_JUMBO_CAPABLE) &&
|
|
|
+ !(tp->tg3_flags2 & TG3_FLG2_5780_CLASS)) {
|
|
|
/* Setup replenish threshold. */
|
|
|
tw32(RCVBDI_JUMBO_THRESH, tp->rx_jumbo_pending / 8);
|
|
|
|
|
@@ -6997,7 +6994,11 @@ static int tg3_reset_hw(struct tg3 *tp, int reset_phy)
|
|
|
BDINFO_FLAGS_DISABLED);
|
|
|
}
|
|
|
|
|
|
- }
|
|
|
+ val = RX_STD_MAX_SIZE << BDINFO_FLAGS_MAXLEN_SHIFT;
|
|
|
+ } else
|
|
|
+ val = RX_STD_MAX_SIZE_5705 << BDINFO_FLAGS_MAXLEN_SHIFT;
|
|
|
+
|
|
|
+ tw32(RCVDBDI_STD_BD + TG3_BDINFO_MAXLEN_FLAGS, val);
|
|
|
|
|
|
/* There is only one send ring on 5705/5750, no need to explicitly
|
|
|
* disable the others.
|