diff options
Diffstat (limited to 'drivers/net/igb/e1000_82575.c')
-rw-r--r-- | drivers/net/igb/e1000_82575.c | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/drivers/net/igb/e1000_82575.c b/drivers/net/igb/e1000_82575.c index bc183f5487cb..0a2368fa6bc6 100644 --- a/drivers/net/igb/e1000_82575.c +++ b/drivers/net/igb/e1000_82575.c | |||
@@ -134,6 +134,8 @@ static s32 igb_get_invariants_82575(struct e1000_hw *hw) | |||
134 | case E1000_DEV_ID_82580_COPPER_DUAL: | 134 | case E1000_DEV_ID_82580_COPPER_DUAL: |
135 | case E1000_DEV_ID_DH89XXCC_SGMII: | 135 | case E1000_DEV_ID_DH89XXCC_SGMII: |
136 | case E1000_DEV_ID_DH89XXCC_SERDES: | 136 | case E1000_DEV_ID_DH89XXCC_SERDES: |
137 | case E1000_DEV_ID_DH89XXCC_BACKPLANE: | ||
138 | case E1000_DEV_ID_DH89XXCC_SFP: | ||
137 | mac->type = e1000_82580; | 139 | mac->type = e1000_82580; |
138 | break; | 140 | break; |
139 | case E1000_DEV_ID_I350_COPPER: | 141 | case E1000_DEV_ID_I350_COPPER: |
@@ -1478,6 +1480,39 @@ out: | |||
1478 | } | 1480 | } |
1479 | 1481 | ||
1480 | /** | 1482 | /** |
1483 | * igb_vmdq_set_anti_spoofing_pf - enable or disable anti-spoofing | ||
1484 | * @hw: pointer to the hardware struct | ||
1485 | * @enable: state to enter, either enabled or disabled | ||
1486 | * @pf: Physical Function pool - do not set anti-spoofing for the PF | ||
1487 | * | ||
1488 | * enables/disables L2 switch anti-spoofing functionality. | ||
1489 | **/ | ||
1490 | void igb_vmdq_set_anti_spoofing_pf(struct e1000_hw *hw, bool enable, int pf) | ||
1491 | { | ||
1492 | u32 dtxswc; | ||
1493 | |||
1494 | switch (hw->mac.type) { | ||
1495 | case e1000_82576: | ||
1496 | case e1000_i350: | ||
1497 | dtxswc = rd32(E1000_DTXSWC); | ||
1498 | if (enable) { | ||
1499 | dtxswc |= (E1000_DTXSWC_MAC_SPOOF_MASK | | ||
1500 | E1000_DTXSWC_VLAN_SPOOF_MASK); | ||
1501 | /* The PF can spoof - it has to in order to | ||
1502 | * support emulation mode NICs */ | ||
1503 | dtxswc ^= (1 << pf | 1 << (pf + MAX_NUM_VFS)); | ||
1504 | } else { | ||
1505 | dtxswc &= ~(E1000_DTXSWC_MAC_SPOOF_MASK | | ||
1506 | E1000_DTXSWC_VLAN_SPOOF_MASK); | ||
1507 | } | ||
1508 | wr32(E1000_DTXSWC, dtxswc); | ||
1509 | break; | ||
1510 | default: | ||
1511 | break; | ||
1512 | } | ||
1513 | } | ||
1514 | |||
1515 | /** | ||
1481 | * igb_vmdq_set_loopback_pf - enable or disable vmdq loopback | 1516 | * igb_vmdq_set_loopback_pf - enable or disable vmdq loopback |
1482 | * @hw: pointer to the hardware struct | 1517 | * @hw: pointer to the hardware struct |
1483 | * @enable: state to enter, either enabled or disabled | 1518 | * @enable: state to enter, either enabled or disabled |
@@ -1578,7 +1613,7 @@ static s32 igb_reset_mdicnfg_82580(struct e1000_hw *hw) | |||
1578 | { | 1613 | { |
1579 | s32 ret_val = 0; | 1614 | s32 ret_val = 0; |
1580 | u32 mdicnfg; | 1615 | u32 mdicnfg; |
1581 | u16 nvm_data; | 1616 | u16 nvm_data = 0; |
1582 | 1617 | ||
1583 | if (hw->mac.type != e1000_82580) | 1618 | if (hw->mac.type != e1000_82580) |
1584 | goto out; | 1619 | goto out; |