igb: Add support for enabling VFs to PF driver.
This patch adds the support to handle requests from the VF to perform operations such as completing resets, setting/reading mac address, adding vlans, adding multicast addresses, setting rlpml, and general communications between the PF and all VFs. 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>
This commit is contained in:

committed by
David S. Miller

parent
e173952257
commit
4ae196dfd6
@@ -213,6 +213,10 @@ static s32 igb_get_invariants_82575(struct e1000_hw *hw)
|
||||
return -E1000_ERR_PHY;
|
||||
}
|
||||
|
||||
/* if 82576 then initialize mailbox parameters */
|
||||
if (mac->type == e1000_82576)
|
||||
igb_init_mbx_params_pf(hw);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1413,6 +1417,44 @@ void igb_rx_fifo_flush_82575(struct e1000_hw *hw)
|
||||
rd32(E1000_MPC);
|
||||
}
|
||||
|
||||
/**
|
||||
* igb_vmdq_set_loopback_pf - enable or disable vmdq loopback
|
||||
* @hw: pointer to the hardware struct
|
||||
* @enable: state to enter, either enabled or disabled
|
||||
*
|
||||
* enables/disables L2 switch loopback functionality.
|
||||
**/
|
||||
void igb_vmdq_set_loopback_pf(struct e1000_hw *hw, bool enable)
|
||||
{
|
||||
u32 dtxswc = rd32(E1000_DTXSWC);
|
||||
|
||||
if (enable)
|
||||
dtxswc |= E1000_DTXSWC_VMDQ_LOOPBACK_EN;
|
||||
else
|
||||
dtxswc &= ~E1000_DTXSWC_VMDQ_LOOPBACK_EN;
|
||||
|
||||
wr32(E1000_DTXSWC, dtxswc);
|
||||
}
|
||||
|
||||
/**
|
||||
* igb_vmdq_set_replication_pf - enable or disable vmdq replication
|
||||
* @hw: pointer to the hardware struct
|
||||
* @enable: state to enter, either enabled or disabled
|
||||
*
|
||||
* enables/disables replication of packets across multiple pools.
|
||||
**/
|
||||
void igb_vmdq_set_replication_pf(struct e1000_hw *hw, bool enable)
|
||||
{
|
||||
u32 vt_ctl = rd32(E1000_VT_CTL);
|
||||
|
||||
if (enable)
|
||||
vt_ctl |= E1000_VT_CTL_VM_REPL_EN;
|
||||
else
|
||||
vt_ctl &= ~E1000_VT_CTL_VM_REPL_EN;
|
||||
|
||||
wr32(E1000_VT_CTL, vt_ctl);
|
||||
}
|
||||
|
||||
static struct e1000_mac_operations e1000_mac_ops_82575 = {
|
||||
.reset_hw = igb_reset_hw_82575,
|
||||
.init_hw = igb_init_hw_82575,
|
||||
|
Reference in New Issue
Block a user