[dpdk-dev,RFC,1/2] Added ETH_SPEED_CAP bitmap in rte_eth_dev_info
Commit Message
Added constants and bitmap to struct rte_eth_dev_info to be used by PMDs.
Signed-off-by: Marc Sune <marc.sune@bisdn.de>
---
lib/librte_ether/rte_ethdev.h | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
Comments
On Tue, 12 May 2015 01:45:45 +0200
Marc Sune <marc.sune@bisdn.de> wrote:
> +/**
> + * Ethernet device information
> + */
> struct rte_eth_dev_info {
> struct rte_pci_device *pci_dev; /**< Device PCI information. */
> const char *driver_name; /**< Device Driver name. */
> @@ -924,6 +947,7 @@ struct rte_eth_dev_info {
> uint16_t vmdq_queue_base; /**< First queue ID for VMDQ pools. */
> uint16_t vmdq_queue_num; /**< Queue number for VMDQ pools. */
> uint16_t vmdq_pool_base; /**< First ID of VMDQ pools. */
> + uint16_t speed_capa; /**< Supported speeds bitmap. */
Since you are likely to run out of 16 bits in future, why not 32 bits now?
On 25/05/15 19:46, Stephen Hemminger wrote:
> On Tue, 12 May 2015 01:45:45 +0200
> Marc Sune <marc.sune@bisdn.de> wrote:
>
>> +/**
>> + * Ethernet device information
>> + */
>> struct rte_eth_dev_info {
>> struct rte_pci_device *pci_dev; /**< Device PCI information. */
>> const char *driver_name; /**< Device Driver name. */
>> @@ -924,6 +947,7 @@ struct rte_eth_dev_info {
>> uint16_t vmdq_queue_base; /**< First queue ID for VMDQ pools. */
>> uint16_t vmdq_queue_num; /**< Queue number for VMDQ pools. */
>> uint16_t vmdq_pool_base; /**< First ID of VMDQ pools. */
>> + uint16_t speed_capa; /**< Supported speeds bitmap. */
> Since you are likely to run out of 16 bits in future, why not 32 bits now?
Indeed, why not. I will convert it to uint32_t when I send the new version.
Thanks
marc
On Tue, 12 May 2015 01:45:45 +0200
Marc Sune <marc.sune@bisdn.de> wrote:
> +/**
> + * Ethernet device information
> + */
> struct rte_eth_dev_info {
> struct rte_pci_device *pci_dev; /**< Device PCI information. */
> const char *driver_name; /**< Device Driver name. */
> @@ -924,6 +947,7 @@ struct rte_eth_dev_info {
> uint16_t vmdq_queue_base; /**< First queue ID for VMDQ pools. */
> uint16_t vmdq_queue_num; /**< Queue number for VMDQ pools. */
> uint16_t vmdq_pool_base; /**< First ID of VMDQ pools. */
> + uint16_t speed_capa; /**< Supported speeds bitmap. */
> };
>
Since you are changing size of key structure, this is an ABI change.
On 26/05/15 17:03, Stephen Hemminger wrote:
> On Tue, 12 May 2015 01:45:45 +0200
> Marc Sune <marc.sune@bisdn.de> wrote:
>
>> +/**
>> + * Ethernet device information
>> + */
>> struct rte_eth_dev_info {
>> struct rte_pci_device *pci_dev; /**< Device PCI information. */
>> const char *driver_name; /**< Device Driver name. */
>> @@ -924,6 +947,7 @@ struct rte_eth_dev_info {
>> uint16_t vmdq_queue_base; /**< First queue ID for VMDQ pools. */
>> uint16_t vmdq_queue_num; /**< Queue number for VMDQ pools. */
>> uint16_t vmdq_pool_base; /**< First ID of VMDQ pools. */
>> + uint16_t speed_capa; /**< Supported speeds bitmap. */
>> };
>>
> Since you are changing size of key structure, this is an ABI change.
Yes. This means target would be 2.2?
I will send the new version anyway to further discuss, and will rebase
again once necessary.
Marc
@@ -899,6 +899,29 @@ struct rte_eth_conf {
#define DEV_TX_OFFLOAD_UDP_TSO 0x00000040
#define DEV_TX_OFFLOAD_OUTER_IPV4_CKSUM 0x00000080 /**< Used for tunneling packet. */
+/**
+ * Device supported speeds
+ */
+#define ETH_SPEED_CAP_NOT_PHY (0) /*< No phy media > */
+#define ETH_SPEED_CAP_10M_HD (1 << 0) /*< 10 Mbps half-duplex> */
+#define ETH_SPEED_CAP_10M_FD (1 << 1) /*< 10 Mbps full-duplex> */
+#define ETH_SPEED_CAP_100M_HD (1 << 2) /*< 100 Mbps half-duplex> */
+#define ETH_SPEED_CAP_100M_FD (1 << 3) /*< 100 Mbps full-duplex> */
+#define ETH_SPEED_CAP_1G (1 << 4) /*< 1 Gbps > */
+#define ETH_SPEED_CAP_2_5G (1 << 5) /*< 2.5 Gbps > */
+#define ETH_SPEED_CAP_5G (1 << 6) /*< 5 Gbps > */
+#define ETH_SPEED_CAP_10G (1 << 7) /*< 10 Mbps > */
+#define ETH_SPEED_CAP_20G (1 << 8) /*< 20 Gbps > */
+#define ETH_SPEED_CAP_25G (1 << 9) /*< 25 Gbps > */
+#define ETH_SPEED_CAP_40G (1 << 10) /*< 40 Gbps > */
+#define ETH_SPEED_CAP_50G (1 << 11) /*< 50 Gbps > */
+#define ETH_SPEED_CAP_56G (1 << 12) /*< 56 Gbps > */
+#define ETH_SPEED_CAP_100G (1 << 13) /*< 100 Gbps > */
+
+
+/**
+ * Ethernet device information
+ */
struct rte_eth_dev_info {
struct rte_pci_device *pci_dev; /**< Device PCI information. */
const char *driver_name; /**< Device Driver name. */
@@ -924,6 +947,7 @@ struct rte_eth_dev_info {
uint16_t vmdq_queue_base; /**< First queue ID for VMDQ pools. */
uint16_t vmdq_queue_num; /**< Queue number for VMDQ pools. */
uint16_t vmdq_pool_base; /**< First ID of VMDQ pools. */
+ uint16_t speed_capa; /**< Supported speeds bitmap. */
};
/** Maximum name length for extended statistics counters */