From 111bd3664b91279883d9f8e2483e436cbdcf3d38 Mon Sep 17 00:00:00 2001 From: Yaroslav Brustinov Date: Fri, 28 Oct 2016 14:32:05 +0200 Subject: move port_attr from driver class to physical port class + small fixes according to code review Signed-off-by: Yaroslav Brustinov --- src/trex_port_attr.h | 164 ++++++++++++++++++++++++++++++++++----------------- 1 file changed, 110 insertions(+), 54 deletions(-) (limited to 'src/trex_port_attr.h') diff --git a/src/trex_port_attr.h b/src/trex_port_attr.h index cc267104..9231e263 100755 --- a/src/trex_port_attr.h +++ b/src/trex_port_attr.h @@ -25,83 +25,139 @@ limitations under the License. class TRexPortAttr { public: - TRexPortAttr(uint8_t total_ports, bool is_virtual, bool fc_change_allowed) : total_ports(total_ports) { - flag_is_virtual = is_virtual; - m_link.resize(total_ports); - intf_info_st.resize(total_ports); - dev_info.resize(total_ports); - int tmp; - flag_is_fc_change_supported = fc_change_allowed && (get_flow_ctrl(0, tmp) != -ENOTSUP); - flag_is_led_change_supported = (set_led(0, true) != -ENOTSUP); - flag_is_link_change_supported = (set_link_up(0, true) != -ENOTSUP); - update_descriptions(); - for (int i=0; i m_link; - std::vector dev_info; - std::vector xstats_values_tmp; - std::vector xstats_names_tmp; +protected: + uint8_t m_port_id; + rte_eth_link m_link; + struct rte_eth_dev_info dev_info; bool flag_is_virtual; bool flag_is_fc_change_supported; bool flag_is_led_change_supported; bool flag_is_link_change_supported; - struct mac_cfg_st { - uint8_t hw_macaddr[6]; - uint8_t src_macaddr[6]; - uint8_t dst_macaddr[6]; - }; - - struct intf_info_st_type { - mac_cfg_st mac_info; + struct intf_info_st { std::string pci_addr; std::string description; int numa_node; - }; + }intf_info_st; + +}; + +class DpdkTRexPortAttr : public TRexPortAttr { +public: + + DpdkTRexPortAttr(uint8_t port_id, bool is_virtual, bool fc_change_allowed) { + m_port_id = port_id; + flag_is_virtual = is_virtual; + int tmp; + flag_is_fc_change_supported = fc_change_allowed && (get_flow_ctrl(tmp) != -ENOTSUP); + flag_is_led_change_supported = (set_led(true) != -ENOTSUP); + flag_is_link_change_supported = (set_link_up(true) != -ENOTSUP); + update_description(); + update_device_info(); + } + +/* UPDATES */ + virtual void update_link_status(); + virtual bool update_link_status_nowait(); // returns true if the status was changed + virtual void update_device_info(); + virtual void reset_xstats(); + virtual void update_description(); + +/* GETTERS */ + virtual bool get_promiscuous(); + virtual void macaddr_get(struct ether_addr *mac_addr); + virtual int get_xstats_values(xstats_values_t &xstats_values); + virtual int get_xstats_names(xstats_names_t &xstats_names); + virtual int get_flow_ctrl(int &mode); + virtual void get_supported_speeds(supp_speeds_t &supp_speeds); + +/* SETTERS */ + virtual int set_promiscuous(bool enabled); + virtual int add_mac(char * mac); + virtual int set_link_up(bool up); + virtual int set_flow_ctrl(int mode); + virtual int set_led(bool on); + + +/* DUMPS */ + virtual void dump_link(FILE *fd); - std::vector intf_info_st; +private: + rte_eth_fc_conf fc_conf_tmp; + std::vector xstats_values_tmp; + std::vector xstats_names_tmp; + +}; + + +class SimTRexPortAttr : public TRexPortAttr { +public: + SimTRexPortAttr() { + m_link.link_speed = 10000; + m_link.link_duplex = 1; + m_link.link_autoneg = 0; + m_link.link_status = 1; + flag_is_virtual = true; + flag_is_fc_change_supported = false; + flag_is_led_change_supported = false; + flag_is_link_change_supported = false; + } + /* DUMMY */ + void update_link_status() {} + bool update_link_status_nowait() { return false; } + void update_device_info() {} + void reset_xstats() {} + void update_description() {} + bool get_promiscuous() { return false; } + void macaddr_get(struct ether_addr *mac_addr) {} + int get_xstats_values(xstats_values_t &xstats_values) { return -ENOTSUP; } + int get_xstats_names(xstats_names_t &xstats_names) { return -ENOTSUP; } + int get_flow_ctrl(int &mode) { return -ENOTSUP; } + void get_description(std::string &description) {} + void get_supported_speeds(supp_speeds_t &supp_speeds) {} + int set_promiscuous(bool enabled) { return -ENOTSUP; } + int add_mac(char * mac) { return -ENOTSUP; } + int set_link_up(bool up) { return -ENOTSUP; } + int set_flow_ctrl(int mode) { return -ENOTSUP; } + int set_led(bool on) { return -ENOTSUP; } + void dump_link(FILE *fd) {} }; -- cgit 1.2.3-korg