summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorHanoh Haim <hhaim@cisco.com>2016-02-28 13:31:31 +0200
committerHanoh Haim <hhaim@cisco.com>2016-02-28 13:31:31 +0200
commitb83eb43c25f0452c152d31966da4b1af5c304a6b (patch)
treee83ec999944364bb4c32814f10a9d0a235fd37ba /src
parentc218fe2330d758bf44e2c80caf61e49a965e2028 (diff)
parent5f17c48a1f6f7006cbb6e1b17eca2ebd6b682b78 (diff)
merge max_port=12 support
Diffstat (limited to 'src')
-rw-r--r--src/internal_api/trex_platform_api.h7
-rw-r--r--src/main_dpdk.cpp11
-rw-r--r--src/rpc-server/commands/trex_rpc_cmd_general.cpp1
-rw-r--r--src/stateless/cp/trex_stateless_port.cpp21
-rw-r--r--src/stateless/cp/trex_stateless_port.h1
5 files changed, 41 insertions, 0 deletions
diff --git a/src/internal_api/trex_platform_api.h b/src/internal_api/trex_platform_api.h
index 249adb2f..5d5f4389 100644
--- a/src/internal_api/trex_platform_api.h
+++ b/src/internal_api/trex_platform_api.h
@@ -25,6 +25,7 @@ limitations under the License.
#include <stdint.h>
#include <vector>
#include <string>
+#include <string.h>
/**
* Global stats
@@ -129,6 +130,7 @@ public:
virtual int del_rx_flow_stat_rule(uint8_t port_id, uint8_t type, uint16_t proto, uint16_t id) const = 0;
virtual void set_promiscuous(uint8_t port_id, bool enabled) const = 0;
virtual bool get_promiscuous(uint8_t port_id) const = 0;
+ virtual void get_macaddr(uint8_t port_id, uint8_t *macaddr) const = 0;
virtual ~TrexPlatformApi() {}
};
@@ -159,6 +161,7 @@ public:
int del_rx_flow_stat_rule(uint8_t port_id, uint8_t type, uint16_t proto, uint16_t id) const;
void set_promiscuous(uint8_t port_id, bool enabled) const;
bool get_promiscuous(uint8_t port_id) const;
+ void get_macaddr(uint8_t port_id, uint8_t *macaddr) const;
};
@@ -215,6 +218,10 @@ public:
return false;
}
+ void get_macaddr(uint8_t port_id, uint8_t *macaddr) const {
+ memset(macaddr, 0, 6);
+ }
+
private:
int m_dp_core_count;
};
diff --git a/src/main_dpdk.cpp b/src/main_dpdk.cpp
index 8dad5f5a..79f3d628 100644
--- a/src/main_dpdk.cpp
+++ b/src/main_dpdk.cpp
@@ -5165,3 +5165,14 @@ bool TrexDpdkPlatformApi::get_promiscuous(uint8_t port_id) const {
return g_trex.m_ports[port_id].get_promiscuous();
}
+void TrexDpdkPlatformApi::get_macaddr(uint8_t port_id, uint8_t *macaddr) const {
+ struct ether_addr rte_mac_addr;
+
+ g_trex.m_ports[port_id].macaddr_get(&rte_mac_addr);
+
+ assert(ETHER_ADDR_LEN == 6);
+ for (int i = 0; i < 6; i++) {
+ macaddr[i] = rte_mac_addr.addr_bytes[i];
+ }
+
+}
diff --git a/src/rpc-server/commands/trex_rpc_cmd_general.cpp b/src/rpc-server/commands/trex_rpc_cmd_general.cpp
index 05565179..47569bde 100644
--- a/src/rpc-server/commands/trex_rpc_cmd_general.cpp
+++ b/src/rpc-server/commands/trex_rpc_cmd_general.cpp
@@ -177,6 +177,7 @@ TrexRpcCmdGetSysInfo::_run(const Json::Value &params, Json::Value &result) {
section["ports"][i]["index"] = i;
section["ports"][i]["driver"] = driver;
+ section["ports"][i]["macaddr"] = port->get_macaddr();
section["ports"][i]["rx"]["caps"] = port->get_rx_caps();
section["ports"][i]["rx"]["counters"] = port->get_rx_count_num();
diff --git a/src/stateless/cp/trex_stateless_port.cpp b/src/stateless/cp/trex_stateless_port.cpp
index 43f32d22..01733117 100644
--- a/src/stateless/cp/trex_stateless_port.cpp
+++ b/src/stateless/cp/trex_stateless_port.cpp
@@ -679,7 +679,28 @@ TrexStatelessPort::get_promiscuous() {
}
+std::string
+TrexStatelessPort::get_macaddr() {
+ uint8_t macaddr[6];
+ std::string output;
+ get_stateless_obj()->get_platform_api()->get_macaddr(m_port_id, macaddr);
+
+ for (int i = 0; i < 6; i++) {
+ char formatted[4];
+
+ if (i == 0) {
+ snprintf(formatted, sizeof(formatted), "%02x", macaddr[i]);
+ } else {
+ snprintf(formatted, sizeof(formatted), ":%02x", macaddr[i]);
+ }
+
+ output += formatted;
+ }
+
+ return output;
+
+}
void
TrexStatelessPort::add_stream(TrexStream *stream) {
diff --git a/src/stateless/cp/trex_stateless_port.h b/src/stateless/cp/trex_stateless_port.h
index 1d3eebc3..0d626375 100644
--- a/src/stateless/cp/trex_stateless_port.h
+++ b/src/stateless/cp/trex_stateless_port.h
@@ -331,6 +331,7 @@ public:
*/
void set_promiscuous(bool enabled);
bool get_promiscuous();
+ std::string get_macaddr();
private: