pci: make device id tables const

The PCI device id table is immutable and should be made const
in all drivers. The pseudo drivers can initialize their local
copy as necessary.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
This commit is contained in:
Stephen Hemminger 2015-04-16 16:23:39 -07:00 committed by Thomas Monjalon
parent be85defeee
commit 6065355a03
14 changed files with 22 additions and 25 deletions

View File

@ -562,6 +562,7 @@ virtual_ethdev_create(const char *name, struct ether_addr *mac_addr,
id_table = rte_zmalloc_socket(name, sizeof(*id_table), 0, socket_id);
if (id_table == NULL)
goto err;
id_table->device_id = 0xBEEF;
dev_private = rte_zmalloc_socket(name, sizeof(*dev_private), 0, socket_id);
if (dev_private == NULL)
@ -627,8 +628,6 @@ virtual_ethdev_create(const char *name, struct ether_addr *mac_addr,
eth_dev->pci_dev = pci_dev;
eth_dev->pci_dev->driver = &eth_drv->pci_drv;
eth_dev->pci_dev->driver->id_table->device_id = 0xBEEF;
eth_dev->rx_pkt_burst = virtual_ethdev_rx_burst_success;
eth_dev->tx_pkt_burst = virtual_ethdev_tx_burst_success;

View File

@ -204,7 +204,7 @@ struct rte_pci_driver {
const char *name; /**< Driver name. */
pci_devinit_t *devinit; /**< Device init. function. */
pci_devuninit_t *devuninit; /**< Device uninit function. */
struct rte_pci_id *id_table; /**< ID table, NULL terminated. */
const struct rte_pci_id *id_table; /**< ID table, NULL terminated. */
uint32_t drv_flags; /**< Flags contolling handling of device. */
};

View File

@ -624,9 +624,9 @@ int
rte_eal_pci_probe_one_driver(struct rte_pci_driver *dr, struct rte_pci_device *dev)
{
int ret;
struct rte_pci_id *id_table;
const struct rte_pci_id *id_table;
for (id_table = dr->id_table ; id_table->vendor_id != 0; id_table++) {
for (id_table = dr->id_table; id_table->vendor_id != 0; id_table++) {
/* check if device's identifiers match the driver's ones */
if (id_table->vendor_id != dev->id.vendor_id &&
@ -696,12 +696,12 @@ int
rte_eal_pci_close_one_driver(struct rte_pci_driver *dr,
struct rte_pci_device *dev)
{
struct rte_pci_id *id_table;
const struct rte_pci_id *id_table;
if ((dr == NULL) || (dev == NULL))
return -EINVAL;
for (id_table = dr->id_table ; id_table->vendor_id != 0; id_table++) {
for (id_table = dr->id_table; id_table->vendor_id != 0; id_table++) {
/* check if device's identifiers match the driver's ones */
if (id_table->vendor_id != dev->id.vendor_id &&

View File

@ -237,14 +237,12 @@ rte_eth_bond_create(const char *name, uint8_t mode, uint8_t socket_id)
RTE_BOND_LOG(ERR, "Unable to malloc pci_id_table on socket");
goto err;
}
pci_id_table->device_id = PCI_ANY_ID;
pci_id_table->subsystem_device_id = PCI_ANY_ID;
pci_id_table->vendor_id = PCI_ANY_ID;
pci_id_table->subsystem_vendor_id = PCI_ANY_ID;
pci_drv->id_table = pci_id_table;
pci_drv->id_table->device_id = PCI_ANY_ID;
pci_drv->id_table->subsystem_device_id = PCI_ANY_ID;
pci_drv->id_table->vendor_id = PCI_ANY_ID;
pci_drv->id_table->subsystem_vendor_id = PCI_ANY_ID;
pci_drv->drv_flags = RTE_PCI_DRV_INTR_LSC;
internals = rte_zmalloc_socket(name, sizeof(*internals), 0, socket_id);

View File

@ -125,7 +125,7 @@ static enum e1000_fc_mode em_fc_setting = e1000_fc_full;
/*
* The set of PCI devices this driver supports
*/
static struct rte_pci_id pci_id_em_map[] = {
static const struct rte_pci_id pci_id_em_map[] = {
#define RTE_PCI_DEV_ID_DECL_EM(vend, dev) {RTE_PCI_DEVICE(vend, dev)},
#include "rte_pci_dev_ids.h"

View File

@ -216,7 +216,7 @@ static enum e1000_fc_mode igb_fc_setting = e1000_fc_full;
/*
* The set of PCI devices this driver supports
*/
static struct rte_pci_id pci_id_igb_map[] = {
static const struct rte_pci_id pci_id_igb_map[] = {
#define RTE_PCI_DEV_ID_DECL_IGB(vend, dev) {RTE_PCI_DEVICE(vend, dev)},
#include "rte_pci_dev_ids.h"
@ -227,7 +227,7 @@ static struct rte_pci_id pci_id_igb_map[] = {
/*
* The set of PCI devices this driver supports (for 82576&I350 VF)
*/
static struct rte_pci_id pci_id_igbvf_map[] = {
static const struct rte_pci_id pci_id_igbvf_map[] = {
#define RTE_PCI_DEV_ID_DECL_IGBVF(vend, dev) {RTE_PCI_DEVICE(vend, dev)},
#include "rte_pci_dev_ids.h"

View File

@ -58,7 +58,7 @@
/*
* The set of PCI devices this driver supports
*/
static struct rte_pci_id pci_id_enic_map[] = {
static const struct rte_pci_id pci_id_enic_map[] = {
#define RTE_PCI_DEV_ID_DECL_ENIC(vend, dev) {RTE_PCI_DEVICE(vend, dev)},
#ifndef PCI_VENDOR_ID_CISCO
#define PCI_VENDOR_ID_CISCO 0x1137

View File

@ -1835,7 +1835,7 @@ eth_fm10k_dev_init(struct rte_eth_dev *dev)
* The set of PCI devices this driver supports. This driver will enable both PF
* and SRIOV-VF devices.
*/
static struct rte_pci_id pci_id_fm10k_map[] = {
static const struct rte_pci_id pci_id_fm10k_map[] = {
#define RTE_PCI_DEV_ID_DECL_FM10K(vend, dev) { RTE_PCI_DEVICE(vend, dev) },
#define RTE_PCI_DEV_ID_DECL_FM10KVF(vend, dev) { RTE_PCI_DEVICE(vend, dev) },
#include "rte_pci_dev_ids.h"

View File

@ -212,7 +212,7 @@ static int i40e_dev_filter_ctrl(struct rte_eth_dev *dev,
static void i40e_configure_registers(struct i40e_hw *hw);
static void i40e_hw_init(struct i40e_hw *hw);
static struct rte_pci_id pci_id_i40e_map[] = {
static const struct rte_pci_id pci_id_i40e_map[] = {
#define RTE_PCI_DEV_ID_DECL_I40E(vend, dev) {RTE_PCI_DEVICE(vend, dev)},
#include "rte_pci_dev_ids.h"
{ .vendor_id = 0, /* sentinel */ },

View File

@ -999,7 +999,7 @@ i40evf_get_link_status(struct rte_eth_dev *dev, struct rte_eth_link *link)
return 0;
}
static struct rte_pci_id pci_id_i40evf_map[] = {
static const struct rte_pci_id pci_id_i40evf_map[] = {
#define RTE_PCI_DEV_ID_DECL_I40EVF(vend, dev) {RTE_PCI_DEVICE(vend, dev)},
#include "rte_pci_dev_ids.h"
{ .vendor_id = 0, /* sentinel */ },

View File

@ -297,7 +297,7 @@ static int ixgbevf_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu);
/*
* The set of PCI devices this driver supports
*/
static struct rte_pci_id pci_id_ixgbe_map[] = {
static const struct rte_pci_id pci_id_ixgbe_map[] = {
#define RTE_PCI_DEV_ID_DECL_IXGBE(vend, dev) {RTE_PCI_DEVICE(vend, dev)},
#include "rte_pci_dev_ids.h"
@ -309,7 +309,7 @@ static struct rte_pci_id pci_id_ixgbe_map[] = {
/*
* The set of PCI devices this driver supports (for 82599 VF)
*/
static struct rte_pci_id pci_id_ixgbevf_map[] = {
static const struct rte_pci_id pci_id_ixgbevf_map[] = {
#define RTE_PCI_DEV_ID_DECL_IXGBEVF(vend, dev) {RTE_PCI_DEVICE(vend, dev)},
#include "rte_pci_dev_ids.h"

View File

@ -4632,7 +4632,7 @@ mlx4_pci_devinit(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev)
return -err;
}
static struct rte_pci_id mlx4_pci_id_map[] = {
static const struct rte_pci_id mlx4_pci_id_map[] = {
{
.vendor_id = PCI_VENDOR_ID_MELLANOX,
.device_id = PCI_DEVICE_ID_MELLANOX_CONNECTX3,

View File

@ -102,7 +102,7 @@ static int virtio_dev_queue_stats_mapping_set(
/*
* The set of PCI devices this driver supports
*/
static struct rte_pci_id pci_id_virtio_map[] = {
static const struct rte_pci_id pci_id_virtio_map[] = {
#define RTE_PCI_DEV_ID_DECL_VIRTIO(vend, dev) {RTE_PCI_DEVICE(vend, dev)},
#include "rte_pci_dev_ids.h"

View File

@ -91,7 +91,7 @@ static void vmxnet3_process_events(struct vmxnet3_hw *);
/*
* The set of PCI devices this driver supports
*/
static struct rte_pci_id pci_id_vmxnet3_map[] = {
static const struct rte_pci_id pci_id_vmxnet3_map[] = {
#define RTE_PCI_DEV_ID_DECL_VMXNET3(vend, dev) {RTE_PCI_DEVICE(vend, dev)},
#include "rte_pci_dev_ids.h"