|
@@ -8322,7 +8322,8 @@ static int tg3_reset_hw(struct tg3 *tp, int reset_phy)
|
|
tw32_f(GRC_LOCAL_CTRL, tp->grc_local_ctrl);
|
|
tw32_f(GRC_LOCAL_CTRL, tp->grc_local_ctrl);
|
|
udelay(100);
|
|
udelay(100);
|
|
|
|
|
|
- if (tp->tg3_flags2 & TG3_FLG2_USING_MSIX) {
|
|
|
|
|
|
+ if ((tp->tg3_flags2 & TG3_FLG2_USING_MSIX) &&
|
|
|
|
+ tp->irq_cnt > 1) {
|
|
val = tr32(MSGINT_MODE);
|
|
val = tr32(MSGINT_MODE);
|
|
val |= MSGINT_MODE_MULTIVEC_EN | MSGINT_MODE_ENABLE;
|
|
val |= MSGINT_MODE_MULTIVEC_EN | MSGINT_MODE_ENABLE;
|
|
tw32(MSGINT_MODE, val);
|
|
tw32(MSGINT_MODE, val);
|
|
@@ -9062,7 +9063,8 @@ static void tg3_ints_init(struct tg3 *tp)
|
|
|
|
|
|
if (tp->tg3_flags2 & TG3_FLG2_USING_MSI_OR_MSIX) {
|
|
if (tp->tg3_flags2 & TG3_FLG2_USING_MSI_OR_MSIX) {
|
|
u32 msi_mode = tr32(MSGINT_MODE);
|
|
u32 msi_mode = tr32(MSGINT_MODE);
|
|
- if (tp->tg3_flags2 & TG3_FLG2_USING_MSIX)
|
|
|
|
|
|
+ if ((tp->tg3_flags2 & TG3_FLG2_USING_MSIX) &&
|
|
|
|
+ tp->irq_cnt > 1)
|
|
msi_mode |= MSGINT_MODE_MULTIVEC_EN;
|
|
msi_mode |= MSGINT_MODE_MULTIVEC_EN;
|
|
tw32(MSGINT_MODE, msi_mode | MSGINT_MODE_ENABLE);
|
|
tw32(MSGINT_MODE, msi_mode | MSGINT_MODE_ENABLE);
|
|
}
|
|
}
|