[dpdk-dev] [PATCH v7 2/4] ixgbe: add ops to support ethtool ops

2015-06-26 Thread Andrew Harvey (agh)
On 6/25/15, 6:45 AM, "dev on behalf of Stephen Hemminger"
 wrote:

>On Wed, 17 Jun 2015 18:22:13 -0400
>Liang-Min Larry Wang  wrote:
>
>> +
>> +static reg_info ixgbe_regs_general[] = {
>> +{IXGBE_CTRL, 1, 1, "IXGBE_CTRL"},
>> +{IXGBE_STATUS, 1, 1, "IXGBE_STATUS"},
>> +{IXGBE_CTRL_EXT, 1, 1, "IXGBE_CTRL_EXT"},
>> +{IXGBE_ESDP, 1, 1, "IXGBE_ESDP"},
>> +{IXGBE_EODSDP, 1, 1, "IXGBE_EODSDP"},
>> +{IXGBE_LEDCTL, 1, 1, "IXGBE_LEDCTL"},
>> +{IXGBE_FRTIMER, 1, 1, "IXGBE_FRTIMER"},
>> +{IXGBE_TCPTIMER, 1, 1, "IXGBE_TCPTIMER"},
>> +{0, 0, 0, ""}
>> +};
>> +
>> +static reg_info ixgbevf_regs_general[] = {
>> +{IXGBE_CTRL, 1, 1, "IXGBE_CTRL"},
>> +{IXGBE_STATUS, 1, 1, "IXGBE_STATUS"},
>> +{IXGBE_VFLINKS, 1, 1, "IXGBE_VFLINKS"},
>> +{IXGBE_FRTIMER, 1, 1, "IXGBE_FRTIMER"},
>> +{IXGBE_VFMAILBOX, 1, 1, "IXGBE_VFMAILBOX"},
>> +{IXGBE_VFMBMEM, 16, 4, "IXGBE_VFMBMEM"},
>> +{IXGBE_VFRXMEMWRAP, 1, 1, "IXGBE_VFRXMEMWRAP"},
>> +{0, 0, 0, ""}
>> +};
>> +
>
>All these tables should be const
>and API may need to change.
Good point, I have sent a patch to Larry for inclusion in the next version.

Thanks ? Andy



[dpdk-dev] [PATCH v7 2/4] ixgbe: add ops to support ethtool ops

2015-06-25 Thread Stephen Hemminger
On Wed, 17 Jun 2015 18:22:13 -0400
Liang-Min Larry Wang  wrote:

> +
> +static reg_info ixgbe_regs_general[] = {
> + {IXGBE_CTRL, 1, 1, "IXGBE_CTRL"},
> + {IXGBE_STATUS, 1, 1, "IXGBE_STATUS"},
> + {IXGBE_CTRL_EXT, 1, 1, "IXGBE_CTRL_EXT"},
> + {IXGBE_ESDP, 1, 1, "IXGBE_ESDP"},
> + {IXGBE_EODSDP, 1, 1, "IXGBE_EODSDP"},
> + {IXGBE_LEDCTL, 1, 1, "IXGBE_LEDCTL"},
> + {IXGBE_FRTIMER, 1, 1, "IXGBE_FRTIMER"},
> + {IXGBE_TCPTIMER, 1, 1, "IXGBE_TCPTIMER"},
> + {0, 0, 0, ""}
> +};
> +
> +static reg_info ixgbevf_regs_general[] = {
> + {IXGBE_CTRL, 1, 1, "IXGBE_CTRL"},
> + {IXGBE_STATUS, 1, 1, "IXGBE_STATUS"},
> + {IXGBE_VFLINKS, 1, 1, "IXGBE_VFLINKS"},
> + {IXGBE_FRTIMER, 1, 1, "IXGBE_FRTIMER"},
> + {IXGBE_VFMAILBOX, 1, 1, "IXGBE_VFMAILBOX"},
> + {IXGBE_VFMBMEM, 16, 4, "IXGBE_VFMBMEM"},
> + {IXGBE_VFRXMEMWRAP, 1, 1, "IXGBE_VFRXMEMWRAP"},
> + {0, 0, 0, ""}
> +};
> +

All these tables should be const
and API may need to change.


[dpdk-dev] [PATCH v7 2/4] ixgbe: add ops to support ethtool ops

2015-06-17 Thread Liang-Min Larry Wang
add function to support ethtool ops:
- set_mac_addr
- get_reg_length
- get_regs
- get_eeprom_length
- get_eeprom
- set_eeprom

Signed-off-by: Liang-Min Larry Wang 
---
 drivers/net/ixgbe/ixgbe_ethdev.c | 183 
 drivers/net/ixgbe/ixgbe_regs.h   | 357 +++
 2 files changed, 540 insertions(+)
 create mode 100644 drivers/net/ixgbe/ixgbe_regs.h

diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
index 7414a2e..b1917ff 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -68,6 +68,9 @@
 #include "ixgbe_ethdev.h"
 #include "ixgbe_bypass.h"
 #include "ixgbe_rxtx.h"
+#include "base/ixgbe_type.h"
+#include "base/ixgbe_phy.h"
+#include "ixgbe_regs.h"

 /*
  * High threshold controlling when to start sending XOFF frames. Must be at
@@ -91,6 +94,7 @@

 #define IXGBE_MMW_SIZE_DEFAULT0x4
 #define IXGBE_MMW_SIZE_JUMBO_FRAME0x14
+#define IXGBE_MAX_RING_DESC   4096 /* replicate define from rxtx */

 /*
  *  Default values for RX/TX configuration
@@ -179,6 +183,7 @@ static void ixgbe_dev_interrupt_delayed_handler(void 
*param);
 static void ixgbe_add_rar(struct rte_eth_dev *dev, struct ether_addr *mac_addr,
uint32_t index, uint32_t pool);
 static void ixgbe_remove_rar(struct rte_eth_dev *dev, uint32_t index);
+static void ixgbe_set_default_mac_addr(struct rte_eth_dev *dev, struct 
ether_addr *mac_addr);
 static void ixgbe_dcb_init(struct ixgbe_hw *hw,struct ixgbe_dcb_config 
*dcb_config);

 /* For Virtual Function support */
@@ -223,6 +228,8 @@ static void ixgbevf_add_mac_addr(struct rte_eth_dev *dev,
 struct ether_addr *mac_addr,
 uint32_t index, uint32_t pool);
 static void ixgbevf_remove_mac_addr(struct rte_eth_dev *dev, uint32_t index);
+static void ixgbevf_set_default_mac_addr(struct rte_eth_dev *dev,
+   struct ether_addr *mac_addr);
 static int ixgbe_syn_filter_set(struct rte_eth_dev *dev,
struct rte_eth_syn_filter *filter,
bool add);
@@ -260,6 +267,15 @@ static int ixgbevf_dev_set_mtu(struct rte_eth_dev *dev, 
uint16_t mtu);
 static int ixgbe_dev_set_mc_addr_list(struct rte_eth_dev *dev,
  struct ether_addr *mc_addr_set,
  uint32_t nb_mc_addr);
+/* Ethtool op support */
+static int ixgbe_get_reg_length(struct rte_eth_dev *dev);
+static int ixgbe_get_regs(struct rte_eth_dev *dev, struct rte_dev_reg_info 
*regs);
+static int ixgbe_get_eeprom_length(struct rte_eth_dev *dev);
+static int ixgbe_get_eeprom(struct rte_eth_dev *dev, struct 
rte_dev_eeprom_info *eeprom);
+static int ixgbe_set_eeprom(struct rte_eth_dev *dev, struct 
rte_dev_eeprom_info *eeprom);
+
+static int ixgbevf_get_reg_length(struct rte_eth_dev *dev);
+static int ixgbevf_get_regs(struct rte_eth_dev *dev, struct rte_dev_reg_info 
*regs);

 /*
  * Define VF Stats MACRO for Non "cleared on read" register
@@ -359,6 +375,7 @@ static const struct eth_dev_ops ixgbe_eth_dev_ops = {
.priority_flow_ctrl_set = ixgbe_priority_flow_ctrl_set,
.mac_addr_add = ixgbe_add_rar,
.mac_addr_remove  = ixgbe_remove_rar,
+   .mac_addr_set = ixgbe_set_default_mac_addr,
.uc_hash_table_set= ixgbe_uc_hash_table_set,
.uc_all_hash_table_set  = ixgbe_uc_all_hash_table_set,
.mirror_rule_set  = ixgbe_mirror_rule_set,
@@ -386,6 +403,11 @@ static const struct eth_dev_ops ixgbe_eth_dev_ops = {
.rss_hash_conf_get= ixgbe_dev_rss_hash_conf_get,
.filter_ctrl  = ixgbe_dev_filter_ctrl,
.set_mc_addr_list = ixgbe_dev_set_mc_addr_list,
+   .get_reg_length   = ixgbe_get_reg_length,
+   .get_reg  = ixgbe_get_regs,
+   .get_eeprom_length= ixgbe_get_eeprom_length,
+   .get_eeprom   = ixgbe_get_eeprom,
+   .set_eeprom   = ixgbe_set_eeprom,
 };

 /*
@@ -412,6 +434,9 @@ static const struct eth_dev_ops ixgbevf_eth_dev_ops = {
.mac_addr_add = ixgbevf_add_mac_addr,
.mac_addr_remove  = ixgbevf_remove_mac_addr,
.set_mc_addr_list = ixgbe_dev_set_mc_addr_list,
+   .mac_addr_set = ixgbevf_set_default_mac_addr,
+   .get_reg_length   = ixgbevf_get_reg_length,
+   .get_reg  = ixgbevf_get_regs,
 };

 /**
@@ -2889,6 +2914,14 @@ ixgbe_remove_rar(struct rte_eth_dev *dev, uint32_t index)
ixgbe_clear_rar(hw, index);
 }

+static void
+ixgbe_set_default_mac_addr(struct rte_eth_dev *dev, struct ether_addr *addr)
+{
+   ixgbe_remove_rar(dev, 0);
+
+   ixgbe_add_rar(dev, addr, 0, 0);
+}
+
 static int
 ixgbe_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
 {
@@ -3719,6 +3752,14 @@ ixgbevf_remove_mac_addr(struct rte_eth_dev *dev, 
uint32_t index)
}
 }

+static void
+ixgbevf_set_default_mac_addr(struct