X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fngbe%2Fbase%2Fngbe_type.h;h=310d32ecfa58829ac32ac85727951b0ef68f47b2;hb=f40e9f0e2278daf72d7f308f17e5f591d3ce8b09;hp=bc95fcf6091cba96147716da4cd42b538d7b28a3;hpb=60229dcfc4301ce6051b0b1691743e1eff2a0fb1;p=dpdk.git diff --git a/drivers/net/ngbe/base/ngbe_type.h b/drivers/net/ngbe/base/ngbe_type.h index bc95fcf609..310d32ecfa 100644 --- a/drivers/net/ngbe/base/ngbe_type.h +++ b/drivers/net/ngbe/base/ngbe_type.h @@ -67,6 +67,15 @@ enum ngbe_media_type { ngbe_media_type_virtual }; +/* Flow Control Settings */ +enum ngbe_fc_mode { + ngbe_fc_none = 0, + ngbe_fc_rx_pause, + ngbe_fc_tx_pause, + ngbe_fc_full, + ngbe_fc_default +}; + struct ngbe_hw; struct ngbe_addr_filter_info { @@ -82,6 +91,19 @@ struct ngbe_bus_info { u8 lan_id; }; +/* Flow control parameters */ +struct ngbe_fc_info { + u32 high_water; /* Flow Ctrl High-water */ + u32 low_water; /* Flow Ctrl Low-water */ + u16 pause_time; /* Flow Control Pause timer */ + bool send_xon; /* Flow control send XON */ + bool strict_ieee; /* Strict IEEE mode */ + bool disable_fc_autoneg; /* Do not autonegotiate FC */ + bool fc_was_autonegged; /* Is current_mode the result of autonegging? */ + enum ngbe_fc_mode current_mode; /* FC mode in effect */ + enum ngbe_fc_mode requested_mode; /* FC mode requested by caller */ +}; + /* Statistics counters collected by the MAC */ /* PB[] RxTx */ struct ngbe_pb_stats { @@ -254,10 +276,20 @@ struct ngbe_mac_info { u32 mc_addr_count, ngbe_mc_addr_itr func, bool clear); s32 (*clear_vfta)(struct ngbe_hw *hw); + s32 (*set_vfta)(struct ngbe_hw *hw, u32 vlan, + u32 vind, bool vlan_on, bool vlvf_bypass); + s32 (*set_vlvf)(struct ngbe_hw *hw, u32 vlan, u32 vind, + bool vlan_on, u32 *vfta_delta, u32 vfta, + bool vlvf_bypass); void (*set_mac_anti_spoofing)(struct ngbe_hw *hw, bool enable, int vf); void (*set_vlan_anti_spoofing)(struct ngbe_hw *hw, bool enable, int vf); + /* Flow Control */ + s32 (*fc_enable)(struct ngbe_hw *hw); + s32 (*setup_fc)(struct ngbe_hw *hw); + void (*fc_autoneg)(struct ngbe_hw *hw); + /* Manageability interface */ s32 (*init_thermal_sensor_thresh)(struct ngbe_hw *hw); s32 (*check_overtemp)(struct ngbe_hw *hw); @@ -297,6 +329,10 @@ struct ngbe_phy_info { s32 (*setup_link)(struct ngbe_hw *hw, u32 speed, bool autoneg_wait_to_complete); s32 (*check_link)(struct ngbe_hw *hw, u32 *speed, bool *link_up); + s32 (*set_phy_power)(struct ngbe_hw *hw, bool on); + s32 (*get_adv_pause)(struct ngbe_hw *hw, u8 *pause_bit); + s32 (*get_lp_adv_pause)(struct ngbe_hw *hw, u8 *pause_bit); + s32 (*set_pause_adv)(struct ngbe_hw *hw, u16 pause_bit); enum ngbe_media_type media_type; enum ngbe_phy_type type; @@ -319,6 +355,11 @@ struct ngbe_mbx_stats { struct ngbe_mbx_info { void (*init_params)(struct ngbe_hw *hw); + s32 (*read)(struct ngbe_hw *hw, u32 *msg, u16 size, u16 vf_number); + s32 (*write)(struct ngbe_hw *hw, u32 *msg, u16 size, u16 vf_number); + s32 (*check_for_msg)(struct ngbe_hw *hw, u16 mbx_id); + s32 (*check_for_ack)(struct ngbe_hw *hw, u16 mbx_id); + s32 (*check_for_rst)(struct ngbe_hw *hw, u16 mbx_id); struct ngbe_mbx_stats stats; u32 timeout; @@ -339,6 +380,7 @@ struct ngbe_hw { void *back; struct ngbe_mac_info mac; struct ngbe_addr_filter_info addr_ctrl; + struct ngbe_fc_info fc; struct ngbe_phy_info phy; struct ngbe_rom_info rom; struct ngbe_bus_info bus;