From: Rosen Xu <rosen.xu@intel.com> To: dev@dpdk.org Cc: rosen.xu@intel.com, tianfei.zhang@intel.com, andy.pei@intel.com, xiaolong.ye@intel.com, ferruh.yigit@intel.com Subject: [dpdk-dev] [PATCH v16 18/19] raw/ifpga/base: add multiple cards support Date: Wed, 13 Nov 2019 15:08:17 +0800 Message-ID: <1573628898-190337-19-git-send-email-rosen.xu@intel.com> (raw) In-Reply-To: <1573628898-190337-1-git-send-email-rosen.xu@intel.com> From: Tianfei zhang <tianfei.zhang@intel.com> In PAC N3000 card, there is one MAX10 chip in each card, and all of the sensors are connected to MAX10 chip. To support multiple cards in one server, we introducing a sensor device list under intel_max10_device instead of a global list. On the other hand, we using separate intel_max10_device instance for each opae_adatper. Add mutex lock on do_transaction() function for SPI driver to avoid race condition. Signed-off-by: Tianfei zhang <tianfei.zhang@intel.com> Signed-off-by: Andy Pei <andy.pei@intel.com> --- drivers/raw/ifpga/base/ifpga_fme.c | 40 +++++++--- drivers/raw/ifpga/base/opae_debug.c | 3 + drivers/raw/ifpga/base/opae_hw_api.c | 14 ++-- drivers/raw/ifpga/base/opae_hw_api.h | 15 ++-- drivers/raw/ifpga/base/opae_i2c.c | 44 ++++++++--- drivers/raw/ifpga/base/opae_i2c.h | 3 +- drivers/raw/ifpga/base/opae_intel_max10.c | 110 ++++++++++++++------------ drivers/raw/ifpga/base/opae_intel_max10.h | 19 +++-- drivers/raw/ifpga/base/opae_spi.c | 5 -- drivers/raw/ifpga/base/opae_spi.h | 3 +- drivers/raw/ifpga/base/opae_spi_transaction.c | 44 +++++++++-- drivers/raw/ifpga/ifpga_rawdev.c | 14 ++-- 12 files changed, 205 insertions(+), 109 deletions(-) diff --git a/drivers/raw/ifpga/base/ifpga_fme.c b/drivers/raw/ifpga/base/ifpga_fme.c index 799d67d..c31a94c 100644 --- a/drivers/raw/ifpga/base/ifpga_fme.c +++ b/drivers/raw/ifpga/base/ifpga_fme.c @@ -839,8 +839,13 @@ static int board_type_to_info(u32 type, static int fme_get_board_interface(struct ifpga_fme_hw *fme) { struct fme_bitstream_id id; + struct ifpga_hw *hw; u32 val; + hw = fme->parent; + if (!hw) + return -ENODEV; + if (fme_hdr_get_bitstream_id(fme, &id.id)) return -EINVAL; @@ -854,7 +859,10 @@ static int fme_get_board_interface(struct ifpga_fme_hw *fme) fme->board_info.seu = id.seu; fme->board_info.ptp = id.ptp; - dev_info(fme, "found: board: %s type: %s\n", + dev_info(fme, "found: PCI dev: %02x:%02x:%x board: %s type: %s\n", + hw->pci_data->bus, + hw->pci_data->devid, + hw->pci_data->function, board_major_to_string(fme->board_info.major), board_type_to_string(fme->board_info.type)); @@ -882,11 +890,11 @@ static int fme_get_board_interface(struct ifpga_fme_hw *fme) fme->board_info.nums_of_fvl, fme->board_info.ports_per_fvl); - if (max10_sys_read(MAX10_BUILD_VER, &val)) + if (max10_sys_read(fme->max10_dev, MAX10_BUILD_VER, &val)) return -EINVAL; fme->board_info.max10_version = val & 0xffffff; - if (max10_sys_read(NIOS2_FW_VERSION, &val)) + if (max10_sys_read(fme->max10_dev, NIOS2_FW_VERSION, &val)) return -EINVAL; fme->board_info.nios_fw_version = val & 0xffffff; @@ -897,12 +905,12 @@ static int fme_get_board_interface(struct ifpga_fme_hw *fme) return 0; } -static int spi_self_checking(void) +static int spi_self_checking(struct intel_max10_device *dev) { u32 val; int ret; - ret = max10_sys_read(MAX10_TEST_REG, &val); + ret = max10_sys_read(dev, MAX10_TEST_REG, &val); if (ret) return -EIO; @@ -937,10 +945,11 @@ static int fme_spi_init(struct ifpga_feature *feature) goto spi_fail; } + fme->max10_dev = max10; /* SPI self test */ - if (spi_self_checking()) { + if (spi_self_checking(max10)) { ret = -EIO; goto max10_fail; } @@ -1041,8 +1050,18 @@ static int fme_nios_spi_init(struct ifpga_feature *feature) struct ifpga_fme_hw *fme = (struct ifpga_fme_hw *)feature->parent; struct altera_spi_device *spi_master; struct intel_max10_device *max10; + struct ifpga_hw *hw; + struct opae_manager *mgr; int ret = 0; + hw = fme->parent; + if (!hw) + return -ENODEV; + + mgr = hw->adapter->mgr; + if (!mgr) + return -ENODEV; + dev_info(fme, "FME SPI Master (NIOS) Init.\n"); dev_debug(fme, "FME SPI base addr %p.\n", feature->addr); @@ -1080,12 +1099,15 @@ static int fme_nios_spi_init(struct ifpga_feature *feature) goto release_dev; } + max10->bus = hw->pci_data->bus; + fme_get_board_interface(fme); fme->max10_dev = max10; + mgr->sensor_list = &max10->opae_sensor_list; /* SPI self test */ - if (spi_self_checking()) + if (spi_self_checking(max10)) goto spi_fail; return ret; @@ -1344,7 +1366,7 @@ int fme_mgr_get_retimer_status(struct ifpga_fme_hw *fme, if (!dev) return -ENODEV; - if (max10_sys_read(PKVL_LINK_STATUS, &val)) { + if (max10_sys_read(dev, PKVL_LINK_STATUS, &val)) { dev_err(dev, "%s: read pkvl status fail\n", __func__); return -EINVAL; } @@ -1372,7 +1394,7 @@ int fme_mgr_get_sensor_value(struct ifpga_fme_hw *fme, if (!dev) return -ENODEV; - if (max10_sys_read(sensor->value_reg, value)) { + if (max10_sys_read(dev, sensor->value_reg, value)) { dev_err(dev, "%s: read sensor value register 0x%x fail\n", __func__, sensor->value_reg); return -EINVAL; diff --git a/drivers/raw/ifpga/base/opae_debug.c b/drivers/raw/ifpga/base/opae_debug.c index 88f2d5c..dad3ea3 100644 --- a/drivers/raw/ifpga/base/opae_debug.c +++ b/drivers/raw/ifpga/base/opae_debug.c @@ -59,6 +59,9 @@ static void opae_adapter_data_dump(void *data) opae_log("OPAE Adapter Type = PCI\n"); opae_log("PCI Device ID: 0x%04x\n", d_pci->device_id); opae_log("PCI Vendor ID: 0x%04x\n", d_pci->vendor_id); + opae_log("PCI bus: 0x%04x\n", d_pci->bus); + opae_log("PCI devid: 0x%04x\n", d_pci->devid); + opae_log("PCI function: 0x%04x\n", d_pci->function); for (i = 0; i < PCI_MAX_RESOURCE; i++) { r = &d_pci->region[i]; diff --git a/drivers/raw/ifpga/base/opae_hw_api.c b/drivers/raw/ifpga/base/opae_hw_api.c index 1ccc967..c969dfe 100644 --- a/drivers/raw/ifpga/base/opae_hw_api.c +++ b/drivers/raw/ifpga/base/opae_hw_api.c @@ -583,11 +583,12 @@ int opae_manager_get_retimer_status(struct opae_manager *mgr, * Return: the pointer of the opae_sensor_info */ struct opae_sensor_info * -opae_mgr_get_sensor_by_id(unsigned int id) +opae_mgr_get_sensor_by_id(struct opae_manager *mgr, + unsigned int id) { struct opae_sensor_info *sensor; - opae_mgr_for_each_sensor(sensor) + opae_mgr_for_each_sensor(mgr, sensor) if (sensor->id == id) return sensor; @@ -601,11 +602,12 @@ struct opae_sensor_info * * Return: the pointer of the opae_sensor_info */ struct opae_sensor_info * -opae_mgr_get_sensor_by_name(const char *name) +opae_mgr_get_sensor_by_name(struct opae_manager *mgr, + const char *name) { struct opae_sensor_info *sensor; - opae_mgr_for_each_sensor(sensor) + opae_mgr_for_each_sensor(mgr, sensor) if (!strcmp(sensor->name, name)) return sensor; @@ -630,7 +632,7 @@ struct opae_sensor_info * if (!mgr) return -EINVAL; - sensor = opae_mgr_get_sensor_by_name(name); + sensor = opae_mgr_get_sensor_by_name(mgr, name); if (!sensor) return -ENODEV; @@ -658,7 +660,7 @@ struct opae_sensor_info * if (!mgr) return -EINVAL; - sensor = opae_mgr_get_sensor_by_id(id); + sensor = opae_mgr_get_sensor_by_id(mgr, id); if (!sensor) return -ENODEV; diff --git a/drivers/raw/ifpga/base/opae_hw_api.h b/drivers/raw/ifpga/base/opae_hw_api.h index b78fbd5..cdf369f 100644 --- a/drivers/raw/ifpga/base/opae_hw_api.h +++ b/drivers/raw/ifpga/base/opae_hw_api.h @@ -40,6 +40,7 @@ struct opae_manager { struct opae_adapter *adapter; struct opae_manager_ops *ops; struct opae_manager_networking_ops *network_ops; + struct opae_sensor_list *sensor_list; void *data; }; @@ -75,9 +76,8 @@ struct opae_manager_networking_ops { struct opae_retimer_status *status); }; -extern struct opae_sensor_list opae_sensor_list; -#define opae_mgr_for_each_sensor(sensor) \ - TAILQ_FOREACH(sensor, &opae_sensor_list, node) +#define opae_mgr_for_each_sensor(mgr, sensor) \ + TAILQ_FOREACH(sensor, mgr->sensor_list, node) /* OPAE Manager APIs */ struct opae_manager * @@ -88,8 +88,10 @@ int opae_manager_flash(struct opae_manager *mgr, int acc_id, const char *buf, u32 size, u64 *status); int opae_manager_get_eth_group_region_info(struct opae_manager *mgr, u8 group_id, struct opae_eth_group_region_info *info); -struct opae_sensor_info *opae_mgr_get_sensor_by_name(const char *name); -struct opae_sensor_info *opae_mgr_get_sensor_by_id(unsigned int id); +struct opae_sensor_info *opae_mgr_get_sensor_by_name(struct opae_manager *mgr, + const char *name); +struct opae_sensor_info *opae_mgr_get_sensor_by_id(struct opae_manager *mgr, + unsigned int id); int opae_mgr_get_sensor_value_by_name(struct opae_manager *mgr, const char *name, unsigned int *value); int opae_mgr_get_sensor_value_by_id(struct opae_manager *mgr, @@ -241,6 +243,9 @@ struct opae_adapter_data_pci { enum opae_adapter_type type; u16 device_id; u16 vendor_id; + u16 bus; /*Device bus for PCI */ + u16 devid; /* Device ID */ + u16 function; /* Device function */ struct opae_reg_region region[PCI_MAX_RESOURCE]; int vfio_dev_fd; /* VFIO device file descriptor */ }; diff --git a/drivers/raw/ifpga/base/opae_i2c.c b/drivers/raw/ifpga/base/opae_i2c.c index f8bc247..846d751 100644 --- a/drivers/raw/ifpga/base/opae_i2c.c +++ b/drivers/raw/ifpga/base/opae_i2c.c @@ -28,6 +28,9 @@ int i2c_read(struct altera_i2c_dev *dev, int flags, unsigned int slave_addr, { u8 msgbuf[2]; int i = 0; + int ret; + + pthread_mutex_lock(&dev->lock); if (flags & I2C_FLAG_ADDR16) msgbuf[i++] = offset >> 8; @@ -49,10 +52,16 @@ int i2c_read(struct altera_i2c_dev *dev, int flags, unsigned int slave_addr, }, }; - if (!dev->xfer) - return -ENODEV; + if (!dev->xfer) { + ret = -ENODEV; + goto exit; + } + + ret = i2c_transfer(dev, msg, 2); - return i2c_transfer(dev, msg, 2); +exit: + pthread_mutex_unlock(&dev->lock); + return ret; } int i2c_write(struct altera_i2c_dev *dev, int flags, unsigned int slave_addr, @@ -63,12 +72,18 @@ int i2c_write(struct altera_i2c_dev *dev, int flags, unsigned int slave_addr, int ret; int i = 0; - if (!dev->xfer) - return -ENODEV; + pthread_mutex_lock(&dev->lock); + + if (!dev->xfer) { + ret = -ENODEV; + goto exit; + } buf = opae_malloc(I2C_MAX_OFFSET_LEN + len); - if (!buf) - return -ENOMEM; + if (!buf) { + ret = -ENOMEM; + goto exit; + } msg.addr = slave_addr; msg.flags = 0; @@ -84,6 +99,8 @@ int i2c_write(struct altera_i2c_dev *dev, int flags, unsigned int slave_addr, ret = i2c_transfer(dev, &msg, 1); opae_free(buf); +exit: + pthread_mutex_unlock(&dev->lock); return ret; } @@ -477,14 +494,19 @@ struct altera_i2c_dev *altera_i2c_probe(void *base) dev->i2c_clk = dev->i2c_param.ref_clk * 1000000; dev->xfer = altera_i2c_xfer; + if (pthread_mutex_init(&dev->lock, NULL)) + return NULL; + altera_i2c_hardware_init(dev); return dev; } -int altera_i2c_remove(struct altera_i2c_dev *dev) +void altera_i2c_remove(struct altera_i2c_dev *dev) { - altera_i2c_disable(dev); - - return 0; + if (dev) { + pthread_mutex_destroy(&dev->lock); + altera_i2c_disable(dev); + opae_free(dev); + } } diff --git a/drivers/raw/ifpga/base/opae_i2c.h b/drivers/raw/ifpga/base/opae_i2c.h index 8890c8f..266e127 100644 --- a/drivers/raw/ifpga/base/opae_i2c.h +++ b/drivers/raw/ifpga/base/opae_i2c.h @@ -93,6 +93,7 @@ struct altera_i2c_dev { u32 isr_mask; u8 *buf; int (*xfer)(struct altera_i2c_dev *dev, struct i2c_msg *msg, int num); + pthread_mutex_t lock; }; /** @@ -114,7 +115,7 @@ enum i2c_msg_flags { }; struct altera_i2c_dev *altera_i2c_probe(void *base); -int altera_i2c_remove(struct altera_i2c_dev *dev); +void altera_i2c_remove(struct altera_i2c_dev *dev); int i2c_read(struct altera_i2c_dev *dev, int flags, unsigned int slave_addr, u32 offset, u8 *buf, u32 count); int i2c_write(struct altera_i2c_dev *dev, int flags, unsigned int slave_addr, diff --git a/drivers/raw/ifpga/base/opae_intel_max10.c b/drivers/raw/ifpga/base/opae_intel_max10.c index 748ab56..8e23ca1 100644 --- a/drivers/raw/ifpga/base/opae_intel_max10.c +++ b/drivers/raw/ifpga/base/opae_intel_max10.c @@ -5,45 +5,50 @@ #include "opae_intel_max10.h" #include <libfdt.h> -static struct intel_max10_device *g_max10; - -struct opae_sensor_list opae_sensor_list = - TAILQ_HEAD_INITIALIZER(opae_sensor_list); - -int max10_reg_read(unsigned int reg, unsigned int *val) +int max10_reg_read(struct intel_max10_device *dev, + unsigned int reg, unsigned int *val) { - if (!g_max10) + if (!dev) return -ENODEV; - return spi_transaction_read(g_max10->spi_tran_dev, + dev_debug(dev, "%s: bus:0x%x, reg:0x%x\n", __func__, dev->bus, reg); + + return spi_transaction_read(dev->spi_tran_dev, reg, 4, (unsigned char *)val); } -int max10_reg_write(unsigned int reg, unsigned int val) +int max10_reg_write(struct intel_max10_device *dev, + unsigned int reg, unsigned int val) { unsigned int tmp = val; - if (!g_max10) + if (!dev) return -ENODEV; - return spi_transaction_write(g_max10->spi_tran_dev, + dev_debug(dev, "%s: bus:0x%x, reg:0x%x, val:0x%x\n", __func__, + dev->bus, reg, val); + + return spi_transaction_write(dev->spi_tran_dev, reg, 4, (unsigned char *)&tmp); } -int max10_sys_read(unsigned int offset, unsigned int *val) +int max10_sys_read(struct intel_max10_device *dev, + unsigned int offset, unsigned int *val) { - if (!g_max10) + if (!dev) return -ENODEV; - return max10_reg_read(g_max10->base + offset, val); + + return max10_reg_read(dev, dev->base + offset, val); } -int max10_sys_write(unsigned int offset, unsigned int val) +int max10_sys_write(struct intel_max10_device *dev, + unsigned int offset, unsigned int val) { - if (!g_max10) + if (!dev) return -ENODEV; - return max10_reg_write(g_max10->base + offset, val); + return max10_reg_write(dev, dev->base + offset, val); } static struct max10_compatible_id max10_id_table[] = { @@ -86,8 +91,8 @@ static void max10_check_capability(struct intel_max10_device *max10) max10->flags |= MAX10_FLAGS_MAC_CACHE; } -static int altera_nor_flash_read(u32 offset, - void *buffer, u32 len) +static int altera_nor_flash_read(struct intel_max10_device *dev, + u32 offset, void *buffer, u32 len) { int word_len; int i; @@ -95,13 +100,13 @@ static int altera_nor_flash_read(u32 offset, unsigned int value; int ret; - if (!buffer || len <= 0) + if (!dev || !buffer || len <= 0) return -ENODEV; word_len = len/4; for (i = 0; i < word_len; i++) { - ret = max10_reg_read(offset + i*4, + ret = max10_reg_read(dev, offset + i*4, &value); if (ret) return -EBUSY; @@ -112,12 +117,12 @@ static int altera_nor_flash_read(u32 offset, return 0; } -static int enable_nor_flash(bool on) +static int enable_nor_flash(struct intel_max10_device *dev, bool on) { unsigned int val = 0; int ret; - ret = max10_sys_read(RSU_REG, &val); + ret = max10_sys_read(dev, RSU_REG, &val); if (ret) { dev_err(NULL "enabling flash error\n"); return ret; @@ -128,7 +133,7 @@ static int enable_nor_flash(bool on) else val &= ~RSU_ENABLE; - return max10_sys_write(RSU_REG, val); + return max10_sys_write(dev, RSU_REG, val); } static int init_max10_device_table(struct intel_max10_device *max10) @@ -140,7 +145,7 @@ static int init_max10_device_table(struct intel_max10_device *max10) u32 dt_size, dt_addr, val; int ret; - ret = max10_sys_read(DT_AVAIL_REG, &val); + ret = max10_sys_read(max10, DT_AVAIL_REG, &val); if (ret) { dev_err(max10 "cannot read DT_AVAIL_REG\n"); return ret; @@ -151,19 +156,19 @@ static int init_max10_device_table(struct intel_max10_device *max10) return -EINVAL; } - ret = max10_sys_read(DT_BASE_ADDR_REG, &dt_addr); + ret = max10_sys_read(max10, DT_BASE_ADDR_REG, &dt_addr); if (ret) { dev_info(max10 "cannot get base addr of device table\n"); return ret; } - ret = enable_nor_flash(true); + ret = enable_nor_flash(max10, true); if (ret) { dev_err(max10 "fail to enable flash\n"); return ret; } - ret = altera_nor_flash_read(dt_addr, &hdr, sizeof(hdr)); + ret = altera_nor_flash_read(max10, dt_addr, &hdr, sizeof(hdr)); if (ret) { dev_err(max10 "read fdt header fail\n"); goto done; @@ -188,7 +193,7 @@ static int init_max10_device_table(struct intel_max10_device *max10) goto done; } - ret = altera_nor_flash_read(dt_addr, fdt_root, dt_size); + ret = altera_nor_flash_read(max10, dt_addr, fdt_root, dt_size); if (ret) { dev_err(max10 "cannot read device table\n"); goto done; @@ -207,7 +212,7 @@ static int init_max10_device_table(struct intel_max10_device *max10) max10->fdt_root = fdt_root; done: - ret = enable_nor_flash(false); + ret = enable_nor_flash(max10, false); if (ret && fdt_root) opae_free(fdt_root); @@ -298,12 +303,12 @@ static int fdt_get_named_reg(const void *fdt, int node, const char *name, return fdt_get_reg(fdt, node, idx, start, size); } -static void max10_sensor_uinit(void) +static void max10_sensor_uinit(struct intel_max10_device *dev) { struct opae_sensor_info *info; - TAILQ_FOREACH(info, &opae_sensor_list, node) { - TAILQ_REMOVE(&opae_sensor_list, info, node); + TAILQ_FOREACH(info, &dev->opae_sensor_list, node) { + TAILQ_REMOVE(&dev->opae_sensor_list, info, node); opae_free(info); } } @@ -313,8 +318,8 @@ static bool sensor_reg_valid(struct sensor_reg *reg) return !!reg->size; } -static int max10_add_sensor(struct raw_sensor_info *info, - struct opae_sensor_info *sensor) +static int max10_add_sensor(struct intel_max10_device *dev, + struct raw_sensor_info *info, struct opae_sensor_info *sensor) { int i; int ret = 0; @@ -332,12 +337,15 @@ static int max10_add_sensor(struct raw_sensor_info *info, if (!sensor_reg_valid(&info->regs[i])) continue; - ret = max10_sys_read(info->regs[i].regoff, &val); + ret = max10_sys_read(dev, info->regs[i].regoff, &val); if (ret) break; - if (val == 0xdeadbeef) + if (val == 0xdeadbeef) { + dev_debug(dev, "%s: sensor:%s invalid 0x%x at:%d\n", + __func__, sensor->name, val, i); continue; + } val *= info->multiplier; @@ -458,7 +466,7 @@ static int max10_add_sensor(struct raw_sensor_info *info, num = fdt_getprop(fdt_root, offset, "multiplier", NULL); raw->multiplier = num ? fdt32_to_cpu(*num) : 1; - dev_info(dev, "found sensor from DTB: %s: %s: %u: %u\n", + dev_debug(dev, "found sensor from DTB: %s: %s: %u: %u\n", raw->name, raw->type, raw->id, raw->multiplier); @@ -473,15 +481,16 @@ static int max10_add_sensor(struct raw_sensor_info *info, goto free_sensor; } - if (max10_add_sensor(raw, sensor)) { + if (max10_add_sensor(dev, raw, sensor)) { ret = -EINVAL; opae_free(sensor); goto free_sensor; } - if (sensor->flags & OPAE_SENSOR_VALID) - TAILQ_INSERT_TAIL(&opae_sensor_list, sensor, node); - else + if (sensor->flags & OPAE_SENSOR_VALID) { + TAILQ_INSERT_TAIL(&dev->opae_sensor_list, sensor, node); + dev_info(dev, "found valid sensor: %s\n", sensor->name); + } else opae_free(sensor); opae_free(raw); @@ -492,7 +501,7 @@ static int max10_add_sensor(struct raw_sensor_info *info, free_sensor: if (raw) opae_free(raw); - max10_sensor_uinit(); + max10_sensor_uinit(dev); return ret; } @@ -500,7 +509,7 @@ static int check_max10_version(struct intel_max10_device *dev) { unsigned int v; - if (!max10_reg_read(MAX10_SEC_BASE_ADDR + MAX10_BUILD_VER, + if (!max10_reg_read(dev, MAX10_SEC_BASE_ADDR + MAX10_BUILD_VER, &v)) { if (v != 0xffffffff) { dev_info(dev, "secure MAX10 detected\n"); @@ -565,6 +574,8 @@ struct intel_max10_device * if (!dev) return NULL; + TAILQ_INIT(&dev->opae_sensor_list); + dev->spi_master = spi; dev->spi_tran_dev = spi_transaction_init(spi, chipselect); @@ -573,9 +584,6 @@ struct intel_max10_device * goto free_dev; } - /* set the max10 device firstly */ - g_max10 = dev; - /* check the max10 version */ ret = check_max10_version(dev); if (ret) { @@ -601,7 +609,7 @@ struct intel_max10_device * } /* read FPGA loading information */ - ret = max10_sys_read(FPGA_PAGE_INFO, &val); + ret = max10_sys_read(dev, FPGA_PAGE_INFO, &val); if (ret) { dev_err(dev, "fail to get FPGA loading info\n"); goto release_max10_hw; @@ -611,14 +619,13 @@ struct intel_max10_device * return dev; release_max10_hw: - max10_sensor_uinit(); + max10_sensor_uinit(dev); free_dtb: if (dev->fdt_root) opae_free(dev->fdt_root); if (dev->spi_tran_dev) spi_transaction_remove(dev->spi_tran_dev); free_dev: - g_max10 = NULL; opae_free(dev); return NULL; @@ -629,7 +636,7 @@ int intel_max10_device_remove(struct intel_max10_device *dev) if (!dev) return 0; - max10_sensor_uinit(); + max10_sensor_uinit(dev); if (dev->spi_tran_dev) spi_transaction_remove(dev->spi_tran_dev); @@ -637,7 +644,6 @@ int intel_max10_device_remove(struct intel_max10_device *dev) if (dev->fdt_root) opae_free(dev->fdt_root); - g_max10 = NULL; opae_free(dev); return 0; diff --git a/drivers/raw/ifpga/base/opae_intel_max10.h b/drivers/raw/ifpga/base/opae_intel_max10.h index e632941..123cdc4 100644 --- a/drivers/raw/ifpga/base/opae_intel_max10.h +++ b/drivers/raw/ifpga/base/opae_intel_max10.h @@ -26,6 +26,9 @@ struct max10_compatible_id { #define MAX10_FLAGS_SECURE BIT(6) #define MAX10_FLAGS_MAC_CACHE BIT(7) +/** List of opae sensors */ +TAILQ_HEAD(opae_sensor_list, opae_sensor_info); + struct intel_max10_device { unsigned int flags; /*max10 hardware capability*/ struct altera_spi_device *spi_master; @@ -33,6 +36,8 @@ struct intel_max10_device { struct max10_compatible_id *id; /*max10 compatible*/ char *fdt_root; unsigned int base; /* max10 base address */ + u16 bus; + struct opae_sensor_list opae_sensor_list; }; /* retimer speed */ @@ -136,17 +141,19 @@ struct opae_retimer_status { #define DFT_MAX_SIZE 0x7e0000 -int max10_reg_read(unsigned int reg, unsigned int *val); -int max10_reg_write(unsigned int reg, unsigned int val); -int max10_sys_read(unsigned int offset, unsigned int *val); -int max10_sys_write(unsigned int offset, unsigned int val); +int max10_reg_read(struct intel_max10_device *dev, + unsigned int reg, unsigned int *val); +int max10_reg_write(struct intel_max10_device *dev, + unsigned int reg, unsigned int val); +int max10_sys_read(struct intel_max10_device *dev, + unsigned int offset, unsigned int *val); +int max10_sys_write(struct intel_max10_device *dev, + unsigned int offset, unsigned int val); struct intel_max10_device * intel_max10_device_probe(struct altera_spi_device *spi, int chipselect); int intel_max10_device_remove(struct intel_max10_device *dev); -/** List of opae sensors */ -TAILQ_HEAD(opae_sensor_list, opae_sensor_info); #define SENSOR_REG_VALUE 0x0 #define SENSOR_REG_HIGH_WARN 0x1 diff --git a/drivers/raw/ifpga/base/opae_spi.c b/drivers/raw/ifpga/base/opae_spi.c index cc52782..bfdc83e 100644 --- a/drivers/raw/ifpga/base/opae_spi.c +++ b/drivers/raw/ifpga/base/opae_spi.c @@ -181,7 +181,6 @@ static int spi_txrx(struct altera_spi_device *dev) u32 rxd; unsigned int tx_data; u32 status; - int retry = 0; int ret; while (count < dev->len) { @@ -194,10 +193,6 @@ static int spi_txrx(struct altera_spi_device *dev) return -EIO; if (status & ALTERA_SPI_STATUS_RRDY_MSK) break; - if (retry++ > SPI_MAX_RETRY) { - dev_err(dev, "%s, read timeout\n", __func__); - return -EBUSY; - } } ret = spi_reg_read(dev, ALTERA_SPI_RXDATA, &rxd); diff --git a/drivers/raw/ifpga/base/opae_spi.h b/drivers/raw/ifpga/base/opae_spi.h index 6355deb..d20a4c3 100644 --- a/drivers/raw/ifpga/base/opae_spi.h +++ b/drivers/raw/ifpga/base/opae_spi.h @@ -38,7 +38,7 @@ #define SPI_WRITE 0x20 #define WRITE_DATA_MASK GENMASK_ULL(31, 0) -#define SPI_MAX_RETRY 100000 +#define SPI_MAX_RETRY 1000000 #define TYPE_SPI 0 #define TYPE_NIOS_SPI 1 @@ -102,6 +102,7 @@ struct spi_transaction_dev { struct altera_spi_device *dev; int chipselect; struct spi_tran_buffer *buffer; + pthread_mutex_t lock; }; struct spi_tran_header { diff --git a/drivers/raw/ifpga/base/opae_spi_transaction.c b/drivers/raw/ifpga/base/opae_spi_transaction.c index 06ca625..013efee 100644 --- a/drivers/raw/ifpga/base/opae_spi_transaction.c +++ b/drivers/raw/ifpga/base/opae_spi_transaction.c @@ -154,6 +154,8 @@ static int byte_to_core_convert(struct spi_transaction_dev *dev, unsigned int rx_len = 0; int retry = 0; int spi_flags; + unsigned long timeout = msecs_to_timer_cycles(1000); + unsigned long ticks; unsigned int resp_max_len = 2 * resp_len; print_buffer("before bytes:", send_data, send_len); @@ -207,8 +209,11 @@ static int byte_to_core_convert(struct spi_transaction_dev *dev, if (ret != SPI_FOUND_EOP) { tx_buffer = NULL; tx_len = 0; - if (retry++ > 10) { - dev_err(NULL, "cannot found valid data from SPI\n"); + ticks = rte_get_timer_cycles(); + if (time_after(ticks, timeout) && + retry++ > SPI_MAX_RETRY) { + dev_err(NULL, "Have retry %d, found invalid packet data\n", + retry); return -EBUSY; } @@ -427,23 +432,36 @@ static int do_transaction(struct spi_transaction_dev *dev, unsigned int addr, int spi_transaction_read(struct spi_transaction_dev *dev, unsigned int addr, unsigned int size, unsigned char *data) { - return do_transaction(dev, addr, size, data, + int ret; + + pthread_mutex_lock(&dev->lock); + ret = do_transaction(dev, addr, size, data, (size > SPI_REG_BYTES) ? SPI_TRAN_SEQ_READ : SPI_TRAN_NON_SEQ_READ); + pthread_mutex_unlock(&dev->lock); + + return ret; } int spi_transaction_write(struct spi_transaction_dev *dev, unsigned int addr, unsigned int size, unsigned char *data) { - return do_transaction(dev, addr, size, data, + int ret; + + pthread_mutex_lock(&dev->lock); + ret = do_transaction(dev, addr, size, data, (size > SPI_REG_BYTES) ? SPI_TRAN_SEQ_WRITE : SPI_TRAN_NON_SEQ_WRITE); + pthread_mutex_unlock(&dev->lock); + + return ret; } struct spi_transaction_dev *spi_transaction_init(struct altera_spi_device *dev, int chipselect) { struct spi_transaction_dev *spi_tran_dev; + int ret; spi_tran_dev = opae_malloc(sizeof(struct spi_transaction_dev)); if (!spi_tran_dev) @@ -453,18 +471,28 @@ struct spi_transaction_dev *spi_transaction_init(struct altera_spi_device *dev, spi_tran_dev->chipselect = chipselect; spi_tran_dev->buffer = opae_malloc(sizeof(struct spi_tran_buffer)); - if (!spi_tran_dev->buffer) { - opae_free(spi_tran_dev); - return NULL; + if (!spi_tran_dev->buffer) + goto err; + + ret = pthread_mutex_init(&spi_tran_dev->lock, NULL); + if (ret) { + dev_err(spi_tran_dev, "fail to init mutex lock\n"); + goto err; } return spi_tran_dev; + +err: + opae_free(spi_tran_dev); + return NULL; } void spi_transaction_remove(struct spi_transaction_dev *dev) { if (dev && dev->buffer) opae_free(dev->buffer); - if (dev) + if (dev) { + pthread_mutex_destroy(&dev->lock); opae_free(dev); + } } diff --git a/drivers/raw/ifpga/ifpga_rawdev.c b/drivers/raw/ifpga/ifpga_rawdev.c index 5701e2d..88d632d 100644 --- a/drivers/raw/ifpga/ifpga_rawdev.c +++ b/drivers/raw/ifpga/ifpga_rawdev.c @@ -361,7 +361,7 @@ static int ifpga_rawdev_fill_info(struct ifpga_rawdev *ifpga_dev, if (!mgr) return -ENODEV; - opae_mgr_for_each_sensor(sensor) { + opae_mgr_for_each_sensor(mgr, sensor) { if (!(sensor->flags & OPAE_SENSOR_VALID)) goto fail; @@ -370,8 +370,8 @@ static int ifpga_rawdev_fill_info(struct ifpga_rawdev *ifpga_dev, goto fail; if (value == 0xdeadbeef) { - IFPGA_RAWDEV_PMD_ERR("sensor %s is invalid value %x\n", - sensor->name, value); + IFPGA_RAWDEV_PMD_ERR("dev_id %d sensor %s value %x\n", + raw_dev->dev_id, sensor->name, value); continue; } @@ -394,8 +394,9 @@ static int ifpga_rawdev_fill_info(struct ifpga_rawdev *ifpga_dev, /* monitor 12V AUX sensor */ if (!strcmp(sensor->name, "12V AUX Voltage")) { if (value < AUX_VOLTAGE_WARN) { - IFPGA_RAWDEV_PMD_INFO("%s reach theshold %d\n", - sensor->name, value); + IFPGA_RAWDEV_PMD_INFO( + "%s reach theshold %d mV\n", + sensor->name, value); *gsd_start = true; break; } @@ -1437,6 +1438,9 @@ static int ifpga_register_fme_interrupt(struct opae_manager *mgr) } data->device_id = pci_dev->id.device_id; data->vendor_id = pci_dev->id.vendor_id; + data->bus = pci_dev->addr.bus; + data->devid = pci_dev->addr.devid; + data->function = pci_dev->addr.function; data->vfio_dev_fd = pci_dev->intr_handle.vfio_dev_fd; adapter = rawdev->dev_private; -- 1.8.3.1
next prev parent reply index Thread overview: 373+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-07-31 7:05 [dpdk-dev] [PATCH 00/12] Add PCIe AER disable and IRQ support for ipn3ke Rosen Xu 2019-07-31 7:05 ` [dpdk-dev] [PATCH 01/12] net/i40e: i40e support ipn3ke FPGA port bonding Rosen Xu 2019-08-02 1:18 ` [dpdk-dev] [PATCH v2 00/12] Add PCIe AER disable and IRQ support for ipn3ke Rosen Xu 2019-08-02 1:18 ` [dpdk-dev] [PATCH v2 01/12] net/i40e: i40e support ipn3ke FPGA port bonding Rosen Xu 2019-08-02 1:18 ` [dpdk-dev] [PATCH v2 02/12] raw/ifpga_rawdev/base: add irq support Rosen Xu 2019-08-02 3:58 ` Jerin Jacob Kollanukkaran 2019-08-02 10:05 ` Zhang, Tianfei 2019-08-02 10:41 ` Jerin Jacob Kollanukkaran 2019-08-02 1:18 ` [dpdk-dev] [PATCH v2 03/12] raw/ifpga_rawdev/base: clear pending bit Rosen Xu 2019-08-02 1:18 ` [dpdk-dev] [PATCH v2 04/12] raw/ifpga_rawdev/base: add SEU error support Rosen Xu 2019-08-02 1:18 ` [dpdk-dev] [PATCH v2 05/12] raw/ifpga_rawdev/base: add device tree support Rosen Xu 2019-08-02 1:18 ` [dpdk-dev] [PATCH v2 06/12] raw/ifpga_rawdev/base: align the send buffer for SPI Rosen Xu 2019-08-02 1:18 ` [dpdk-dev] [PATCH v2 07/12] raw/ifpga_rawdev/base: add sensor support Rosen Xu 2019-08-02 1:18 ` [dpdk-dev] [PATCH v2 08/12] raw/ifpga_rawdev/base: introducing sensor APIs Rosen Xu 2019-08-02 1:18 ` [dpdk-dev] [PATCH v2 09/12] raw/ifpga_rawdev/base: update SEU register definition Rosen Xu 2019-08-02 1:18 ` [dpdk-dev] [PATCH v2 10/12] raw/ifpga_rawdev: add SEU error handler Rosen Xu 2019-08-02 1:18 ` [dpdk-dev] [PATCH v2 11/12] raw/ifpga_rawdev: add PCIe BDF devices tree scan Rosen Xu 2019-08-02 1:18 ` [dpdk-dev] [PATCH v2 12/12] net/ipn3ke: remove configuration for i40e port bonding Rosen Xu 2019-08-02 4:14 ` [dpdk-dev] [PATCH v2 00/12] Add PCIe AER disable and IRQ support for ipn3ke Jerin Jacob Kollanukkaran 2019-08-02 7:04 ` Xu, Rosen 2019-08-08 8:46 ` [dpdk-dev] [PATCH v3 00/13] " Rosen Xu 2019-08-08 8:46 ` [dpdk-dev] [PATCH v3 01/13] net/i40e: i40e support ipn3ke FPGA port bonding Rosen Xu 2019-08-08 8:46 ` [dpdk-dev] [PATCH v3 02/13] raw/ifpga_rawdev/base: add irq support Rosen Xu 2019-08-08 8:46 ` [dpdk-dev] [PATCH v3 03/13] raw/ifpga_rawdev/base: clear pending bit Rosen Xu 2019-08-08 8:46 ` [dpdk-dev] [PATCH v3 04/13] raw/ifpga_rawdev/base: add SEU error support Rosen Xu 2019-08-08 8:46 ` [dpdk-dev] [PATCH v3 05/13] raw/ifpga_rawdev/base: add device tree support Rosen Xu 2019-08-08 8:46 ` [dpdk-dev] [PATCH v3 06/13] raw/ifpga_rawdev/base: align the send buffer for SPI Rosen Xu 2019-08-08 8:46 ` [dpdk-dev] [PATCH v3 07/13] raw/ifpga_rawdev/base: add sensor support Rosen Xu 2019-08-08 8:46 ` [dpdk-dev] [PATCH v3 08/13] raw/ifpga_rawdev/base: introducing sensor APIs Rosen Xu 2019-08-08 8:46 ` [dpdk-dev] [PATCH v3 09/13] raw/ifpga_rawdev/base: update SEU register definition Rosen Xu 2019-08-08 8:46 ` [dpdk-dev] [PATCH v3 10/13] raw/ifpga_rawdev: add SEU error handler Rosen Xu 2019-08-08 8:46 ` [dpdk-dev] [PATCH v3 11/13] raw/ifpga_rawdev: add PCIe BDF devices tree scan Rosen Xu 2019-08-08 8:46 ` [dpdk-dev] [PATCH v3 12/13] net/ipn3ke: remove configuration for i40e port bonding Rosen Xu 2019-08-08 8:46 ` [dpdk-dev] [PATCH v3 13/13] net/ipn3ke: add FPGA network side port MTU configuration Rosen Xu 2019-08-08 8:53 ` Pei, Andy 2019-09-05 2:59 ` [dpdk-dev] [PATCH v4 00/12] Add PCIe AER disable and IRQ support for ipn3ke Andy Pei 2019-09-05 2:59 ` [dpdk-dev] [PATCH v4 01/12] net/i40e: i40e support ipn3ke FPGA port bonding Andy Pei 2019-09-19 8:19 ` [dpdk-dev] [PATCH v5 00/17] Add PCIe AER disable and IRQ support for ipn3ke Andy Pei 2019-09-19 8:19 ` [dpdk-dev] [PATCH v5 01/17] net/i40e: i40e support ipn3ke FPGA port bonding Andy Pei 2019-09-19 9:02 ` [dpdk-dev] [PATCH v6 00/17] add PCIe AER disable and IRQ support for ipn3ke Andy Pei 2019-09-19 9:02 ` [dpdk-dev] [PATCH v6 01/17] net/i40e: i40e support ipn3ke FPGA port bonding Andy Pei 2019-09-20 0:55 ` Zhang, Qi Z 2019-09-25 7:08 ` Pei, Andy 2019-09-24 15:00 ` Ye Xiaolong 2019-09-26 8:07 ` [dpdk-dev] [PATCH v7 00/17] add PCIe AER disable and IRQ support for ipn3ke Andy Pei 2019-09-26 8:07 ` [dpdk-dev] [PATCH v7 01/17] net/i40e: i40e support ipn3ke FPGA port bonding Andy Pei 2019-10-11 8:21 ` [dpdk-dev] [PATCH v8 00/18] add PCIe AER disable and IRQ support for ipn3ke Andy Pei 2019-10-11 8:21 ` [dpdk-dev] [PATCH v8 01/18] net/i40e: i40e support ipn3ke FPGA port bonding Andy Pei 2019-10-14 7:10 ` [dpdk-dev] [PATCH v9 00/18] add PCIe AER disable and IRQ support for ipn3ke Andy Pei 2019-10-14 7:10 ` [dpdk-dev] [PATCH v9 01/18] net/i40e: i40e support ipn3ke FPGA port bonding Andy Pei 2019-10-21 6:23 ` [dpdk-dev] [PATCH v10 00/19] add PCIe AER disable and IRQ support for ipn3ke Andy Pei 2019-10-21 6:23 ` [dpdk-dev] [PATCH v10 01/19] net/i40e: i40e support ipn3ke FPGA port bonding Andy Pei 2019-10-21 6:56 ` [dpdk-dev] [PATCH v11 00/19] add PCIe AER disable and IRQ support for ipn3ke Andy Pei 2019-10-21 6:56 ` [dpdk-dev] [PATCH v11 01/19] net/i40e: i40e support ipn3ke FPGA port bonding Andy Pei 2019-10-23 10:26 ` [dpdk-dev] [PATCH v12 00/19] add PCIe AER disable and IRQ support for ipn3ke Andy Pei 2019-10-23 10:26 ` [dpdk-dev] [PATCH v12 01/19] net/i40e: i40e support ipn3ke FPGA port bonding Andy Pei 2019-10-24 7:56 ` Ye Xiaolong 2019-10-24 11:38 ` [dpdk-dev] [PATCH v13 00/19] add PCIe AER disable and IRQ support for ipn3ke Andy Pei 2019-10-24 11:38 ` [dpdk-dev] [PATCH v13 01/19] net/i40e: i40e support ipn3ke FPGA port bonding Andy Pei 2019-10-28 8:50 ` [dpdk-dev] [PATCH v14 00/19] add PCIe AER disable and IRQ support for ipn3ke Andy Pei 2019-10-28 8:50 ` [dpdk-dev] [PATCH v14 01/19] net/i40e: i40e support ipn3ke FPGA port bonding Andy Pei 2019-10-28 8:50 ` [dpdk-dev] [PATCH v14 02/19] raw/ifpga/base: add irq support Andy Pei 2019-10-28 8:50 ` [dpdk-dev] [PATCH v14 03/19] raw/ifpga/base: clear pending bit Andy Pei 2019-10-28 8:50 ` [dpdk-dev] [PATCH v14 04/19] raw/ifpga/base: add SEU error support Andy Pei 2019-10-28 8:50 ` [dpdk-dev] [PATCH v14 05/19] raw/ifpga/base: add device tree support Andy Pei 2019-10-28 8:50 ` [dpdk-dev] [PATCH v14 06/19] raw/ifpga/base: align the send buffer for SPI Andy Pei 2019-10-28 8:50 ` [dpdk-dev] [PATCH v14 07/19] raw/ifpga/base: add sensor support Andy Pei 2019-10-28 8:50 ` [dpdk-dev] [PATCH v14 08/19] raw/ifpga/base: introducing sensor APIs Andy Pei 2019-10-28 8:50 ` [dpdk-dev] [PATCH v14 09/19] raw/ifpga/base: update SEU register definition Andy Pei 2019-10-28 8:50 ` [dpdk-dev] [PATCH v14 10/19] raw/ifpga: add SEU error handler Andy Pei 2019-10-28 8:50 ` [dpdk-dev] [PATCH v14 11/19] raw/ifpga: add PCIe BDF devices tree scan Andy Pei 2019-10-28 8:50 ` [dpdk-dev] [PATCH v14 12/19] net/ipn3ke: remove configuration for i40e port bonding Andy Pei 2019-10-28 8:50 ` [dpdk-dev] [PATCH v14 13/19] raw/ifpga/base: add secure support Andy Pei 2019-10-28 8:50 ` [dpdk-dev] [PATCH v14 14/19] raw/ifpga/base: configure FEC mode Andy Pei 2019-10-28 8:50 ` [dpdk-dev] [PATCH v14 15/19] raw/ifpga/base: clean fme errors Andy Pei 2019-10-28 8:50 ` [dpdk-dev] [PATCH v14 16/19] raw/ifpga/base: add new API get board info Andy Pei 2019-10-28 8:50 ` [dpdk-dev] [PATCH v14 17/19] raw/ifpga: add lightweight fpga image support Andy Pei 2019-10-28 8:50 ` [dpdk-dev] [PATCH v14 18/19] raw/ifpga/base: add multiple cards support Andy Pei 2019-10-28 8:50 ` [dpdk-dev] [PATCH v14 19/19] raw/ifpga: introducing new irq API Andy Pei 2019-10-31 2:01 ` [dpdk-dev] [PATCH v14 00/19] add PCIe AER disable and IRQ support for ipn3ke Ye Xiaolong 2019-10-31 2:38 ` Xu, Rosen 2019-10-31 2:39 ` Pei, Andy 2019-11-08 10:19 ` [dpdk-dev] [PATCH v15 " Rosen Xu 2019-11-08 10:19 ` [dpdk-dev] [PATCH v15 01/19] net/i40e: i40e support ipn3ke FPGA port bonding Rosen Xu 2019-11-08 10:19 ` [dpdk-dev] [PATCH v15 02/19] raw/ifpga/base: add irq support Rosen Xu 2019-11-08 10:19 ` [dpdk-dev] [PATCH v15 03/19] raw/ifpga/base: clear pending bit Rosen Xu 2019-11-08 10:19 ` [dpdk-dev] [PATCH v15 04/19] raw/ifpga/base: add SEU error support Rosen Xu 2019-11-08 10:19 ` [dpdk-dev] [PATCH v15 05/19] raw/ifpga/base: add device tree support Rosen Xu 2019-11-08 10:19 ` [dpdk-dev] [PATCH v15 06/19] raw/ifpga/base: align the send buffer for SPI Rosen Xu 2019-11-08 10:19 ` [dpdk-dev] [PATCH v15 07/19] raw/ifpga/base: add sensor support Rosen Xu 2019-11-08 10:19 ` [dpdk-dev] [PATCH v15 08/19] raw/ifpga/base: introducing sensor APIs Rosen Xu 2019-11-08 10:19 ` [dpdk-dev] [PATCH v15 09/19] raw/ifpga/base: update SEU register definition Rosen Xu 2019-11-08 10:19 ` [dpdk-dev] [PATCH v15 10/19] raw/ifpga: add SEU error handler Rosen Xu 2019-11-08 10:19 ` [dpdk-dev] [PATCH v15 11/19] raw/ifpga: add PCIe BDF devices tree scan Rosen Xu 2019-11-08 10:19 ` [dpdk-dev] [PATCH v15 12/19] net/ipn3ke: remove configuration for i40e port bonding Rosen Xu 2019-11-08 10:19 ` [dpdk-dev] [PATCH v15 13/19] raw/ifpga/base: add secure support Rosen Xu 2019-11-08 10:19 ` [dpdk-dev] [PATCH v15 14/19] raw/ifpga/base: configure FEC mode Rosen Xu 2019-11-08 10:19 ` [dpdk-dev] [PATCH v15 15/19] raw/ifpga/base: clean fme errors Rosen Xu 2019-11-08 10:19 ` [dpdk-dev] [PATCH v15 16/19] raw/ifpga/base: add new API get board info Rosen Xu 2019-11-08 10:19 ` [dpdk-dev] [PATCH v15 17/19] raw/ifpga: add lightweight fpga image support Rosen Xu 2019-11-08 10:19 ` [dpdk-dev] [PATCH v15 18/19] raw/ifpga/base: add multiple cards support Rosen Xu 2019-11-08 10:19 ` [dpdk-dev] [PATCH v15 19/19] raw/ifpga: introducing new irq API Rosen Xu 2019-11-13 7:07 ` [dpdk-dev] [PATCH v16 00/19] add PCIe AER disable and IRQ support for ipn3ke Rosen Xu 2019-11-13 7:08 ` [dpdk-dev] [PATCH v16 01/19] net/i40e: i40e support ipn3ke FPGA port bonding Rosen Xu 2019-11-13 14:38 ` Ferruh Yigit 2019-11-13 14:50 ` Ferruh Yigit 2019-11-14 7:15 ` Xu, Rosen 2019-11-13 7:08 ` [dpdk-dev] [PATCH v16 02/19] raw/ifpga/base: add irq support Rosen Xu 2019-11-13 7:08 ` [dpdk-dev] [PATCH v16 03/19] raw/ifpga/base: clear pending bit Rosen Xu 2019-11-13 7:08 ` [dpdk-dev] [PATCH v16 04/19] raw/ifpga/base: add SEU error support Rosen Xu 2019-11-13 7:08 ` [dpdk-dev] [PATCH v16 05/19] raw/ifpga/base: add device tree support Rosen Xu 2019-11-13 7:08 ` [dpdk-dev] [PATCH v16 06/19] raw/ifpga/base: align the send buffer for SPI Rosen Xu 2019-11-13 7:08 ` [dpdk-dev] [PATCH v16 07/19] raw/ifpga/base: add sensor support Rosen Xu 2019-11-13 7:08 ` [dpdk-dev] [PATCH v16 08/19] raw/ifpga/base: introducing sensor APIs Rosen Xu 2019-11-13 7:08 ` [dpdk-dev] [PATCH v16 09/19] raw/ifpga/base: update SEU register definition Rosen Xu 2019-11-13 7:08 ` [dpdk-dev] [PATCH v16 10/19] raw/ifpga: add SEU error handler Rosen Xu 2019-11-13 14:50 ` Ferruh Yigit 2019-11-14 7:14 ` Xu, Rosen 2019-11-13 7:08 ` [dpdk-dev] [PATCH v16 11/19] raw/ifpga: add PCIe BDF devices tree scan Rosen Xu 2019-11-13 7:08 ` [dpdk-dev] [PATCH v16 12/19] net/ipn3ke: remove configuration for i40e port bonding Rosen Xu 2019-11-13 7:08 ` [dpdk-dev] [PATCH v16 13/19] raw/ifpga/base: add secure support Rosen Xu 2019-11-13 7:08 ` [dpdk-dev] [PATCH v16 14/19] raw/ifpga/base: configure FEC mode Rosen Xu 2019-11-13 7:08 ` [dpdk-dev] [PATCH v16 15/19] raw/ifpga/base: clean fme errors Rosen Xu 2019-11-13 7:08 ` [dpdk-dev] [PATCH v16 16/19] raw/ifpga/base: add new API get board info Rosen Xu 2019-11-13 7:08 ` [dpdk-dev] [PATCH v16 17/19] raw/ifpga: add lightweight fpga image support Rosen Xu 2019-11-13 7:08 ` Rosen Xu [this message] 2019-11-13 7:08 ` [dpdk-dev] [PATCH v16 19/19] raw/ifpga: introducing new irq API Rosen Xu 2019-11-14 7:14 ` [dpdk-dev] [PATCH v17 00/19] add PCIe AER disable and IRQ support for ipn3ke Rosen Xu 2019-11-14 7:14 ` [dpdk-dev] [PATCH v17 01/19] net/i40e: i40e support ipn3ke FPGA port bonding Rosen Xu 2019-11-14 7:14 ` [dpdk-dev] [PATCH v17 02/19] raw/ifpga/base: add irq support Rosen Xu 2019-11-14 7:14 ` [dpdk-dev] [PATCH v17 03/19] raw/ifpga/base: clear pending bit Rosen Xu 2019-11-14 7:14 ` [dpdk-dev] [PATCH v17 04/19] raw/ifpga/base: add SEU error support Rosen Xu 2019-11-14 7:14 ` [dpdk-dev] [PATCH v17 05/19] raw/ifpga/base: add device tree support Rosen Xu 2019-11-14 7:14 ` [dpdk-dev] [PATCH v17 06/19] raw/ifpga/base: align the send buffer for SPI Rosen Xu 2019-11-14 7:14 ` [dpdk-dev] [PATCH v17 07/19] raw/ifpga/base: add sensor support Rosen Xu 2019-11-14 7:14 ` [dpdk-dev] [PATCH v17 08/19] raw/ifpga/base: introducing sensor APIs Rosen Xu 2019-11-14 7:14 ` [dpdk-dev] [PATCH v17 09/19] raw/ifpga/base: update SEU register definition Rosen Xu 2019-11-14 7:14 ` [dpdk-dev] [PATCH v17 10/19] raw/ifpga: add SEU error handler Rosen Xu 2019-11-14 7:14 ` [dpdk-dev] [PATCH v17 11/19] raw/ifpga: add PCIe BDF devices tree scan Rosen Xu 2019-11-14 7:14 ` [dpdk-dev] [PATCH v17 12/19] net/ipn3ke: remove configuration for i40e port bonding Rosen Xu 2019-11-14 7:14 ` [dpdk-dev] [PATCH v17 13/19] raw/ifpga/base: add secure support Rosen Xu 2019-11-14 7:14 ` [dpdk-dev] [PATCH v17 14/19] raw/ifpga/base: configure FEC mode Rosen Xu 2019-11-14 7:14 ` [dpdk-dev] [PATCH v17 15/19] raw/ifpga/base: clean fme errors Rosen Xu 2019-11-14 7:14 ` [dpdk-dev] [PATCH v17 16/19] raw/ifpga/base: add new API get board info Rosen Xu 2019-11-14 7:14 ` [dpdk-dev] [PATCH v17 17/19] raw/ifpga: add lightweight fpga image support Rosen Xu 2019-11-14 7:14 ` [dpdk-dev] [PATCH v17 18/19] raw/ifpga/base: add multiple cards support Rosen Xu 2019-11-14 7:14 ` [dpdk-dev] [PATCH v17 19/19] raw/ifpga: introducing new irq API Rosen Xu 2019-11-14 9:02 ` [dpdk-dev] [PATCH v18 00/19] add PCIe AER disable and IRQ support for ipn3ke Rosen Xu 2019-11-14 9:02 ` [dpdk-dev] [PATCH v18 01/19] net/i40e: i40e support ipn3ke FPGA port bonding Rosen Xu 2019-11-14 9:02 ` [dpdk-dev] [PATCH v18 02/19] raw/ifpga/base: add irq support Rosen Xu 2019-11-14 9:02 ` [dpdk-dev] [PATCH v18 03/19] raw/ifpga/base: clear pending bit Rosen Xu 2019-11-14 9:02 ` [dpdk-dev] [PATCH v18 04/19] raw/ifpga/base: add SEU error support Rosen Xu 2019-11-14 9:02 ` [dpdk-dev] [PATCH v18 05/19] raw/ifpga/base: add device tree support Rosen Xu 2019-11-14 9:02 ` [dpdk-dev] [PATCH v18 06/19] raw/ifpga/base: align the send buffer for SPI Rosen Xu 2019-11-14 9:02 ` [dpdk-dev] [PATCH v18 07/19] raw/ifpga/base: add sensor support Rosen Xu 2019-11-14 9:02 ` [dpdk-dev] [PATCH v18 08/19] raw/ifpga/base: introducing sensor APIs Rosen Xu 2019-11-14 9:02 ` [dpdk-dev] [PATCH v18 09/19] raw/ifpga/base: update SEU register definition Rosen Xu 2019-11-14 9:02 ` [dpdk-dev] [PATCH v18 10/19] raw/ifpga: add SEU error handler Rosen Xu 2019-11-20 21:23 ` Thomas Monjalon 2019-11-20 21:30 ` David Marchand 2019-11-21 6:04 ` Zhang, Tianfei 2019-11-21 3:08 ` Ye Xiaolong 2019-11-21 5:32 ` Xu, Rosen 2019-11-14 9:02 ` [dpdk-dev] [PATCH v18 11/19] raw/ifpga: add PCIe BDF devices tree scan Rosen Xu 2019-11-14 9:03 ` [dpdk-dev] [PATCH v18 12/19] net/ipn3ke: remove configuration for i40e port bonding Rosen Xu 2019-11-14 9:03 ` [dpdk-dev] [PATCH v18 13/19] raw/ifpga/base: add secure support Rosen Xu 2019-11-14 23:05 ` Zhang, Tianfei 2019-11-15 9:54 ` Ferruh Yigit 2019-11-15 12:40 ` Zhang, Tianfei 2019-11-14 9:03 ` [dpdk-dev] [PATCH v18 14/19] raw/ifpga/base: configure FEC mode Rosen Xu 2019-11-14 9:03 ` [dpdk-dev] [PATCH v18 15/19] raw/ifpga/base: clean fme errors Rosen Xu 2019-11-14 9:03 ` [dpdk-dev] [PATCH v18 16/19] raw/ifpga/base: add new API get board info Rosen Xu 2019-11-14 9:03 ` [dpdk-dev] [PATCH v18 17/19] raw/ifpga: add lightweight fpga image support Rosen Xu 2019-11-14 9:03 ` [dpdk-dev] [PATCH v18 18/19] raw/ifpga/base: add multiple cards support Rosen Xu 2019-11-14 9:03 ` [dpdk-dev] [PATCH v18 19/19] raw/ifpga: introducing new irq API Rosen Xu 2019-10-24 11:38 ` [dpdk-dev] [PATCH v13 02/19] raw/ifpga/base: add irq support Andy Pei 2019-10-24 11:38 ` [dpdk-dev] [PATCH v13 03/19] raw/ifpga/base: clear pending bit Andy Pei 2019-10-24 11:38 ` [dpdk-dev] [PATCH v13 04/19] raw/ifpga/base: add SEU error support Andy Pei 2019-10-24 11:38 ` [dpdk-dev] [PATCH v13 05/19] raw/ifpga/base: add device tree support Andy Pei 2019-10-24 13:09 ` Bruce Richardson 2019-10-25 1:16 ` Xu, Rosen 2019-10-25 2:02 ` Ye Xiaolong 2019-10-24 11:38 ` [dpdk-dev] [PATCH v13 06/19] raw/ifpga/base: align the send buffer for SPI Andy Pei 2019-10-24 11:38 ` [dpdk-dev] [PATCH v13 07/19] raw/ifpga/base: add sensor support Andy Pei 2019-10-24 11:38 ` [dpdk-dev] [PATCH v13 08/19] raw/ifpga/base: introducing sensor APIs Andy Pei 2019-10-24 11:38 ` [dpdk-dev] [PATCH v13 09/19] raw/ifpga/base: update SEU register definition Andy Pei 2019-10-24 11:38 ` [dpdk-dev] [PATCH v13 10/19] raw/ifpga: add SEU error handler Andy Pei 2019-10-24 11:38 ` [dpdk-dev] [PATCH v13 11/19] raw/ifpga: add PCIe BDF devices tree scan Andy Pei 2019-10-24 11:38 ` [dpdk-dev] [PATCH v13 12/19] net/ipn3ke: remove configuration for i40e port bonding Andy Pei 2019-10-24 11:38 ` [dpdk-dev] [PATCH v13 13/19] raw/ifpga/base: add secure support Andy Pei 2019-10-24 11:38 ` [dpdk-dev] [PATCH v13 14/19] raw/ifpga/base: configure FEC mode Andy Pei 2019-10-24 11:38 ` [dpdk-dev] [PATCH v13 15/19] raw/ifpga/base: clean fme errors Andy Pei 2019-10-24 11:38 ` [dpdk-dev] [PATCH v13 16/19] raw/ifpga/base: add new API get board info Andy Pei 2019-10-24 11:38 ` [dpdk-dev] [PATCH v13 17/19] raw/ifpga: add lightweight fpga image support Andy Pei 2019-10-24 11:38 ` [dpdk-dev] [PATCH v13 18/19] raw/ifpga/base: add multiple cards support Andy Pei 2019-10-24 11:38 ` [dpdk-dev] [PATCH v13 19/19] raw/ifpga: introducing new irq API Andy Pei 2019-10-25 2:10 ` [dpdk-dev] [PATCH v13 00/19] add PCIe AER disable and IRQ support for ipn3ke Ye Xiaolong 2019-10-25 8:43 ` Pei, Andy 2019-10-23 10:26 ` [dpdk-dev] [PATCH v12 02/19] raw/ifpga/base: add irq support Andy Pei 2019-10-23 10:26 ` [dpdk-dev] [PATCH v12 03/19] raw/ifpga/base: clear pending bit Andy Pei 2019-10-23 10:26 ` [dpdk-dev] [PATCH v12 04/19] raw/ifpga/base: add SEU error support Andy Pei 2019-10-23 10:26 ` [dpdk-dev] [PATCH v12 05/19] raw/ifpga/base: add device tree support Andy Pei 2019-10-23 10:26 ` [dpdk-dev] [PATCH v12 06/19] raw/ifpga/base: align the send buffer for SPI Andy Pei 2019-10-23 10:26 ` [dpdk-dev] [PATCH v12 07/19] raw/ifpga/base: add sensor support Andy Pei 2019-10-23 10:26 ` [dpdk-dev] [PATCH v12 08/19] raw/ifpga/base: introducing sensor APIs Andy Pei 2019-10-23 10:26 ` [dpdk-dev] [PATCH v12 09/19] raw/ifpga/base: update SEU register definition Andy Pei 2019-10-23 10:26 ` [dpdk-dev] [PATCH v12 10/19] raw/ifpga: add SEU error handler Andy Pei 2019-10-23 10:26 ` [dpdk-dev] [PATCH v12 11/19] raw/ifpga: add PCIe BDF devices tree scan Andy Pei 2019-10-23 10:26 ` [dpdk-dev] [PATCH v12 12/19] net/ipn3ke: remove configuration for i40e port bonding Andy Pei 2019-10-23 10:26 ` [dpdk-dev] [PATCH v12 13/19] raw/ifpga/base: add secure support Andy Pei 2019-10-23 10:26 ` [dpdk-dev] [PATCH v12 14/19] raw/ifpga/base: configure FEC mode Andy Pei 2019-10-23 10:26 ` [dpdk-dev] [PATCH v12 15/19] raw/ifpga/base: clean fme errors Andy Pei 2019-10-23 10:26 ` [dpdk-dev] [PATCH v12 16/19] raw/ifpga/base: add new API get board info Andy Pei 2019-10-23 10:26 ` [dpdk-dev] [PATCH v12 17/19] raw/ifpga: add lightweight fpga image support Andy Pei 2019-10-23 10:26 ` [dpdk-dev] [PATCH v12 18/19] raw/ifpga/base: add multiple cards support Andy Pei 2019-10-23 10:26 ` [dpdk-dev] [PATCH v12 19/19] raw/ifpga: introducing new irq API Andy Pei 2019-10-21 6:56 ` [dpdk-dev] [PATCH v11 02/19] raw/ifpga/base: add irq support Andy Pei 2019-10-21 6:56 ` [dpdk-dev] [PATCH v11 03/19] raw/ifpga/base: clear pending bit Andy Pei 2019-10-21 6:56 ` [dpdk-dev] [PATCH v11 04/19] raw/ifpga/base: add SEU error support Andy Pei 2019-10-21 6:56 ` [dpdk-dev] [PATCH v11 05/19] raw/ifpga/base: add device tree support Andy Pei 2019-10-21 6:56 ` [dpdk-dev] [PATCH v11 06/19] raw/ifpga/base: align the send buffer for SPI Andy Pei 2019-10-21 6:56 ` [dpdk-dev] [PATCH v11 07/19] raw/ifpga/base: add sensor support Andy Pei 2019-10-21 6:56 ` [dpdk-dev] [PATCH v11 08/19] raw/ifpga/base: introducing sensor APIs Andy Pei 2019-10-21 6:56 ` [dpdk-dev] [PATCH v11 09/19] raw/ifpga/base: update SEU register definition Andy Pei 2019-10-21 6:56 ` [dpdk-dev] [PATCH v11 10/19] raw/ifpga: add SEU error handler Andy Pei 2019-10-21 6:56 ` [dpdk-dev] [PATCH v11 11/19] raw/ifpga: add PCIe BDF devices tree scan Andy Pei 2019-10-21 6:56 ` [dpdk-dev] [PATCH v11 12/19] net/ipn3ke: remove configuration for i40e port bonding Andy Pei 2019-10-21 7:23 ` Ye Xiaolong 2019-10-22 11:00 ` Bruce Richardson 2019-10-21 6:56 ` [dpdk-dev] [PATCH v11 13/19] raw/ifpga/base: add secure support Andy Pei 2019-10-21 6:56 ` [dpdk-dev] [PATCH v11 14/19] raw/ifpga/base: configure FEC mode Andy Pei 2019-10-21 6:57 ` [dpdk-dev] [PATCH v11 15/19] raw/ifpga/base: clean fme errors Andy Pei 2019-10-21 6:57 ` [dpdk-dev] [PATCH v11 16/19] raw/ifpga/base: add new API get board info Andy Pei 2019-10-21 6:57 ` [dpdk-dev] [PATCH v11 17/19] raw/ifpga: add lightweight fpga image support Andy Pei 2019-10-21 6:57 ` [dpdk-dev] [PATCH v11 18/19] raw/ifpga/base: add multiple cards support Andy Pei 2019-10-21 6:57 ` [dpdk-dev] [PATCH v11 19/19] raw/ifpga: introducing new irq API Andy Pei 2019-10-21 6:23 ` [dpdk-dev] [PATCH v10 02/19] raw/ifpga/base: add irq support Andy Pei 2019-10-21 6:23 ` [dpdk-dev] [PATCH v10 03/19] raw/ifpga/base: clear pending bit Andy Pei 2019-10-21 6:23 ` [dpdk-dev] [PATCH v10 04/19] raw/ifpga/base: add SEU error support Andy Pei 2019-10-21 6:23 ` [dpdk-dev] [PATCH v10 05/19] raw/ifpga/base: add device tree support Andy Pei 2019-10-21 6:23 ` [dpdk-dev] [PATCH v10 06/19] raw/ifpga/base: align the send buffer for SPI Andy Pei 2019-10-21 6:23 ` [dpdk-dev] [PATCH v10 07/19] raw/ifpga/base: add sensor support Andy Pei 2019-10-21 6:23 ` [dpdk-dev] [PATCH v10 08/19] raw/ifpga/base: introducing sensor APIs Andy Pei 2019-10-21 6:23 ` [dpdk-dev] [PATCH v10 09/19] raw/ifpga/base: update SEU register definition Andy Pei 2019-10-21 6:23 ` [dpdk-dev] [PATCH v10 10/19] raw/ifpga: add SEU error handler Andy Pei 2019-10-21 6:23 ` [dpdk-dev] [PATCH v10 11/19] raw/ifpga: add PCIe BDF devices tree scan Andy Pei 2019-10-21 6:23 ` [dpdk-dev] [PATCH v10 12/19] net/ipn3ke: remove configuration for i40e port bonding Andy Pei 2019-10-21 6:23 ` [dpdk-dev] [PATCH v10 13/19] raw/ifpga/base: add secure support Andy Pei 2019-10-21 6:23 ` [dpdk-dev] [PATCH v10 14/19] raw/ifpga/base: configure FEC mode Andy Pei 2019-10-21 6:23 ` [dpdk-dev] [PATCH v10 15/19] raw/ifpga/base: clean fme errors Andy Pei 2019-10-21 6:23 ` [dpdk-dev] [PATCH v10 16/19] raw/ifpga/base: add new API get board info Andy Pei 2019-10-21 6:23 ` [dpdk-dev] [PATCH v10 17/19] raw/ifpga: add lightweight fpga image support Andy Pei 2019-10-21 6:23 ` [dpdk-dev] [PATCH v10 18/19] raw/ifpga/base: add multiple cards support Andy Pei 2019-10-21 6:23 ` [dpdk-dev] [PATCH v10 19/19] raw/ifpga: introducing new irq API Andy Pei 2019-10-14 7:10 ` [dpdk-dev] [PATCH v9 02/18] raw/ifpga/base: add irq support Andy Pei 2019-10-14 7:10 ` [dpdk-dev] [PATCH v9 03/18] raw/ifpga/base: clear pending bit Andy Pei 2019-10-14 7:10 ` [dpdk-dev] [PATCH v9 04/18] raw/ifpga/base: add SEU error support Andy Pei 2019-10-14 7:10 ` [dpdk-dev] [PATCH v9 05/18] raw/ifpga/base: add device tree support Andy Pei 2019-10-14 7:10 ` [dpdk-dev] [PATCH v9 06/18] raw/ifpga/base: align the send buffer for SPI Andy Pei 2019-10-14 7:10 ` [dpdk-dev] [PATCH v9 07/18] raw/ifpga/base: add sensor support Andy Pei 2019-10-14 7:10 ` [dpdk-dev] [PATCH v9 08/18] raw/ifpga/base: introducing sensor APIs Andy Pei 2019-10-14 7:10 ` [dpdk-dev] [PATCH v9 09/18] raw/ifpga/base: update SEU register definition Andy Pei 2019-10-14 7:10 ` [dpdk-dev] [PATCH v9 10/18] raw/ifpga: add SEU error handler Andy Pei 2019-10-14 7:10 ` [dpdk-dev] [PATCH v9 11/18] raw/ifpga: add PCIe BDF devices tree scan Andy Pei 2019-10-14 7:10 ` [dpdk-dev] [PATCH v9 12/18] net/ipn3ke: remove configuration for i40e port bonding Andy Pei 2019-10-14 14:40 ` Aaron Conole 2019-10-21 5:03 ` Pei, Andy 2019-10-14 7:10 ` [dpdk-dev] [PATCH v9 13/18] raw/ifpga/base: add secure support Andy Pei 2019-10-19 0:56 ` Ye Xiaolong 2019-10-21 5:38 ` Pei, Andy 2019-10-14 7:11 ` [dpdk-dev] [PATCH v9 14/18] raw/ifpga/base: configure FEC mode Andy Pei 2019-10-14 7:11 ` [dpdk-dev] [PATCH v9 15/18] raw/ifpga/base: clean fme errors Andy Pei 2019-10-14 7:11 ` [dpdk-dev] [PATCH v9 16/18] raw/ifpga/base: add new API get board info Andy Pei 2019-10-14 7:11 ` [dpdk-dev] [PATCH v9 17/18] raw/ifpga: add lightweight fpga image support Andy Pei 2019-10-14 7:11 ` [dpdk-dev] [PATCH v9 18/18] raw/ifpga/base: add multiple cards support Andy Pei 2019-10-16 8:55 ` [dpdk-dev] [PATCH v9 00/18] add PCIe AER disable and IRQ support for ipn3ke Ye Xiaolong 2019-10-11 8:21 ` [dpdk-dev] [PATCH v8 02/18] raw/ifpga/base: add irq support Andy Pei 2019-10-11 8:21 ` [dpdk-dev] [PATCH v8 03/18] raw/ifpga/base: clear pending bit Andy Pei 2019-10-11 8:21 ` [dpdk-dev] [PATCH v8 04/18] raw/ifpga/base: add SEU error support Andy Pei 2019-10-11 8:21 ` [dpdk-dev] [PATCH v8 05/18] raw/ifpga/base: add device tree support Andy Pei 2019-10-11 8:21 ` [dpdk-dev] [PATCH v8 06/18] raw/ifpga/base: align the send buffer for SPI Andy Pei 2019-10-11 8:21 ` [dpdk-dev] [PATCH v8 07/18] raw/ifpga/base: add sensor support Andy Pei 2019-10-11 8:21 ` [dpdk-dev] [PATCH v8 08/18] raw/ifpga/base: introducing sensor APIs Andy Pei 2019-10-11 8:21 ` [dpdk-dev] [PATCH v8 09/18] raw/ifpga/base: update SEU register definition Andy Pei 2019-10-11 8:21 ` [dpdk-dev] [PATCH v8 10/18] raw/ifpga: add SEU error handler Andy Pei 2019-10-11 8:21 ` [dpdk-dev] [PATCH v8 11/18] raw/ifpga: add PCIe BDF devices tree scan Andy Pei 2019-10-11 8:21 ` [dpdk-dev] [PATCH v8 12/18] net/ipn3ke: remove configuration for i40e port bonding Andy Pei 2019-10-11 8:21 ` [dpdk-dev] [PATCH v8 13/18] raw/ifpga/base: add secure support Andy Pei 2019-10-11 8:21 ` [dpdk-dev] [PATCH v8 14/18] raw/ifpga/base: configure FEC mode Andy Pei 2019-10-11 8:21 ` [dpdk-dev] [PATCH v8 15/18] raw/ifpga/base: clean fme errors Andy Pei 2019-10-11 8:21 ` [dpdk-dev] [PATCH v8 16/18] raw/ifpga/base: add new API get board info Andy Pei 2019-10-11 8:21 ` [dpdk-dev] [PATCH v8 17/18] raw/ifpga: add lightweight fpga image support Andy Pei 2019-10-11 8:21 ` [dpdk-dev] [PATCH v8 18/18] raw/ifpga/base: add multiple cards support Andy Pei 2019-09-26 8:07 ` [dpdk-dev] [PATCH v7 02/17] raw/ifpga/base: add irq support Andy Pei 2019-09-26 8:07 ` [dpdk-dev] [PATCH v7 03/17] raw/ifpga/base: clear pending bit Andy Pei 2019-09-26 8:07 ` [dpdk-dev] [PATCH v7 04/17] raw/ifpga/base: add SEU error support Andy Pei 2019-09-26 8:07 ` [dpdk-dev] [PATCH v7 05/17] raw/ifpga/base: add device tree support Andy Pei 2019-09-27 10:33 ` Ye Xiaolong 2019-10-10 9:37 ` Pei, Andy 2019-09-26 8:07 ` [dpdk-dev] [PATCH v7 06/17] raw/ifpga/base: align the send buffer for SPI Andy Pei 2019-09-26 8:07 ` [dpdk-dev] [PATCH v7 07/17] raw/ifpga/base: add sensor support Andy Pei 2019-09-26 8:07 ` [dpdk-dev] [PATCH v7 08/17] raw/ifpga/base: introducing sensor APIs Andy Pei 2019-09-26 8:07 ` [dpdk-dev] [PATCH v7 09/17] raw/ifpga/base: update SEU register definition Andy Pei 2019-09-26 8:07 ` [dpdk-dev] [PATCH v7 10/17] raw/ifpga: add SEU error handler Andy Pei 2019-09-26 8:07 ` [dpdk-dev] [PATCH v7 11/17] raw/ifpga: add PCIe BDF devices tree scan Andy Pei 2019-09-26 8:07 ` [dpdk-dev] [PATCH v7 12/17] net/ipn3ke: remove configuration for i40e port bonding Andy Pei 2019-09-26 8:07 ` [dpdk-dev] [PATCH v7 13/17] raw/ifpga/base: add secure support Andy Pei 2019-09-26 8:07 ` [dpdk-dev] [PATCH v7 14/17] raw/ifpga/base: configure FEC mode Andy Pei 2019-09-26 8:07 ` [dpdk-dev] [PATCH v7 15/17] raw/ifpga/base: clean fme errors Andy Pei 2019-09-26 8:07 ` [dpdk-dev] [PATCH v7 16/17] raw/ifpga/base: add new API get board info Andy Pei 2019-09-26 8:07 ` [dpdk-dev] [PATCH v7 17/17] raw/ifpga: add lightweight fpga image support Andy Pei 2019-09-19 9:02 ` [dpdk-dev] [PATCH v6 02/17] raw/ifpga/base: add irq support Andy Pei 2019-09-24 16:02 ` Ye Xiaolong 2019-09-24 16:13 ` Ye Xiaolong 2019-09-25 0:58 ` Zhang, Tianfei 2019-09-19 9:02 ` [dpdk-dev] [PATCH v6 03/17] raw/ifpga/base: clear pending bit Andy Pei 2019-09-19 9:02 ` [dpdk-dev] [PATCH v6 04/17] raw/ifpga/base: add SEU error support Andy Pei 2019-09-24 16:37 ` Ye Xiaolong 2019-09-25 0:55 ` Zhang, Tianfei 2019-09-19 9:02 ` [dpdk-dev] [PATCH v6 05/17] raw/ifpga/base: add device tree support Andy Pei 2019-09-19 9:02 ` [dpdk-dev] [PATCH v6 06/17] raw/ifpga/base: align the send buffer for SPI Andy Pei 2019-09-19 9:02 ` [dpdk-dev] [PATCH v6 07/17] raw/ifpga/base: add sensor support Andy Pei 2019-09-19 9:02 ` [dpdk-dev] [PATCH v6 08/17] raw/ifpga/base: introducing sensor APIs Andy Pei 2019-09-19 9:02 ` [dpdk-dev] [PATCH v6 09/17] raw/ifpga/base: update SEU register definition Andy Pei 2019-09-19 9:02 ` [dpdk-dev] [PATCH v6 10/17] raw/ifpga: add SEU error handler Andy Pei 2019-09-19 9:02 ` [dpdk-dev] [PATCH v6 11/17] raw/ifpga: add PCIe BDF devices tree scan Andy Pei 2019-09-19 9:02 ` [dpdk-dev] [PATCH v6 12/17] net/ipn3ke: remove configuration for i40e port bonding Andy Pei 2019-09-19 9:02 ` [dpdk-dev] [PATCH v6 13/17] raw/ifpga/base: add secure support Andy Pei 2019-09-19 9:02 ` [dpdk-dev] [PATCH v6 14/17] raw/ifpga/base: configure FEC mode Andy Pei 2019-09-19 9:02 ` [dpdk-dev] [PATCH v6 15/17] raw/ifpga/base: clean fme errors Andy Pei 2019-09-19 9:02 ` [dpdk-dev] [PATCH v6 16/17] raw/ifpga/base: add new API get board info Andy Pei 2019-09-19 9:02 ` [dpdk-dev] [PATCH v6 17/17] raw/ifpga: add lightweight fpga image support Andy Pei 2019-09-24 15:49 ` [dpdk-dev] [PATCH v6 00/17] add PCIe AER disable and IRQ support for ipn3ke Ye Xiaolong 2019-09-26 8:21 ` Pei, Andy 2019-09-19 8:19 ` [dpdk-dev] [PATCH v5 02/17] raw/ifpga/base: add irq support Andy Pei 2019-09-19 8:19 ` [dpdk-dev] [PATCH v5 03/17] raw/ifpga/base: clear pending bit Andy Pei 2019-09-19 8:19 ` [dpdk-dev] [PATCH v5 04/17] raw/ifpga/base: add SEU error support Andy Pei 2019-09-19 8:19 ` [dpdk-dev] [PATCH v5 05/17] raw/ifpga/base: add device tree support Andy Pei 2019-09-19 8:19 ` [dpdk-dev] [PATCH v5 06/17] raw/ifpga/base: align the send buffer for SPI Andy Pei 2019-09-19 8:19 ` [dpdk-dev] [PATCH v5 07/17] raw/ifpga/base: add sensor support Andy Pei 2019-09-19 8:19 ` [dpdk-dev] [PATCH v5 08/17] raw/ifpga/base: introducing sensor APIs Andy Pei 2019-09-19 8:19 ` [dpdk-dev] [PATCH v5 09/17] raw/ifpga/base: update SEU register definition Andy Pei 2019-09-19 8:19 ` [dpdk-dev] [PATCH v5 10/17] raw/ifpga: add SEU error handler Andy Pei 2019-09-19 8:19 ` [dpdk-dev] [PATCH v5 11/17] raw/ifpga: add PCIe BDF devices tree scan Andy Pei 2019-09-19 8:19 ` [dpdk-dev] [PATCH v5 12/17] net/ipn3ke: remove configuration for i40e port bonding Andy Pei 2019-09-19 8:19 ` [dpdk-dev] [PATCH v5 13/17] raw/ifpga/base: add secure support Andy Pei 2019-09-19 8:19 ` [dpdk-dev] [PATCH v5 14/17] raw/ifpga/base: configure FEC mode Andy Pei 2019-09-19 8:19 ` [dpdk-dev] [PATCH v5 15/17] raw/ifpga/base: clean fme errors Andy Pei 2019-09-19 8:19 ` [dpdk-dev] [PATCH v5 16/17] raw/ifpga/base: add new API get board info Andy Pei 2019-09-19 8:19 ` [dpdk-dev] [PATCH v5 17/17] raw/ifpga: add lightweight fpga image support Andy Pei 2019-09-05 2:59 ` [dpdk-dev] [PATCH v4 02/12] raw/ifpga/base: add irq support Andy Pei 2019-09-05 2:59 ` [dpdk-dev] [PATCH v4 03/12] raw/ifpga/base: clear pending bit Andy Pei 2019-09-05 2:59 ` [dpdk-dev] [PATCH v4 04/12] raw/ifpga/base: add SEU error support Andy Pei 2019-09-05 2:59 ` [dpdk-dev] [PATCH v4 05/12] raw/ifpga/base: add device tree support Andy Pei 2019-09-05 2:59 ` [dpdk-dev] [PATCH v4 06/12] raw/ifpga/base: align the send buffer for SPI Andy Pei 2019-09-05 2:59 ` [dpdk-dev] [PATCH v4 07/12] raw/ifpga/base: add sensor support Andy Pei 2019-09-05 2:59 ` [dpdk-dev] [PATCH v4 08/12] raw/ifpga/base: introducing sensor APIs Andy Pei 2019-09-05 2:59 ` [dpdk-dev] [PATCH v4 09/12] raw/ifpga/base: update SEU register definition Andy Pei 2019-09-05 2:59 ` [dpdk-dev] [PATCH v4 10/12] raw/ifpga: add SEU error handler Andy Pei 2019-09-05 2:59 ` [dpdk-dev] [PATCH v4 11/12] raw/ifpga: add PCIe BDF devices tree scan Andy Pei 2019-09-05 2:59 ` [dpdk-dev] [PATCH v4 12/12] net/ipn3ke: remove configuration for i40e port bonding Andy Pei 2019-09-05 12:36 ` [dpdk-dev] [PATCH v4 00/12] Add PCIe AER disable and IRQ support for ipn3ke Ye Xiaolong 2019-07-31 7:05 ` [dpdk-dev] [PATCH 02/12] raw/ifpga_rawdev/base: add irq support Rosen Xu 2019-07-31 7:05 ` [dpdk-dev] [PATCH 03/12] raw/ifpga_rawdev/base: clear pending bit Rosen Xu 2019-07-31 7:05 ` [dpdk-dev] [PATCH 04/12] raw/ifpga_rawdev/base: add SEU error support Rosen Xu 2019-07-31 7:05 ` [dpdk-dev] [PATCH 05/12] raw/ifpga_rawdev/base: add device tree support Rosen Xu 2019-07-31 7:05 ` [dpdk-dev] [PATCH 06/12] raw/ifpga_rawdev/base: align the send buffer for SPI Rosen Xu 2019-07-31 7:05 ` [dpdk-dev] [PATCH 07/12] raw/ifpga_rawdev/base: add sensor support Rosen Xu 2019-07-31 7:05 ` [dpdk-dev] [PATCH 08/12] raw/ifpga_rawdev/base: introducing sensor APIs Rosen Xu 2019-07-31 7:05 ` [dpdk-dev] [PATCH 09/12] raw/ifpga_rawdev/base: update SEU register definition Rosen Xu 2019-07-31 7:05 ` [dpdk-dev] [PATCH 10/12] raw/ifpga_rawdev: add SEU error handler Rosen Xu 2019-07-31 7:05 ` [dpdk-dev] [PATCH 11/12] raw/ifpga_rawdev: add PCIe BDF devices tree scan Rosen Xu 2019-07-31 7:05 ` [dpdk-dev] [PATCH 12/12] net/ipn3ke: remove configuration for i40e port bonding Rosen Xu
Reply instructions: You may reply publically to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1573628898-190337-19-git-send-email-rosen.xu@intel.com \ --to=rosen.xu@intel.com \ --cc=andy.pei@intel.com \ --cc=dev@dpdk.org \ --cc=ferruh.yigit@intel.com \ --cc=tianfei.zhang@intel.com \ --cc=xiaolong.ye@intel.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
DPDK-dev Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/dpdk-dev/0 dpdk-dev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 dpdk-dev dpdk-dev/ https://lore.kernel.org/dpdk-dev \ dev@dpdk.org public-inbox-index dpdk-dev Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.dpdk.dev AGPL code for this site: git clone https://public-inbox.org/public-inbox.git