X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_ether%2Frte_ethdev.h;h=f860601082ede0bc7a13292aa35be174571b6419;hb=3031749c2df04a63cdcef186dcce3781e61436e8;hp=9621be7f53a501f2995120cfacc35a156e9acd06;hpb=7b9d82208b5ed4b09cb686a5a6b7643827f1d9ad;p=dpdk.git diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h index 9621be7f53..f860601082 100644 --- a/lib/librte_ether/rte_ethdev.h +++ b/lib/librte_ether/rte_ethdev.h @@ -1,13 +1,13 @@ /*- * BSD LICENSE - * + * * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. * All rights reserved. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: - * + * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright @@ -17,7 +17,7 @@ * * Neither the name of Intel Corporation nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR @@ -263,25 +263,25 @@ enum rte_eth_rx_mq_mode { }; /** - * for rx mq mode backward compatible + * for rx mq mode backward compatible */ #define ETH_RSS ETH_MQ_RX_RSS #define VMDQ_DCB ETH_MQ_RX_VMDQ_DCB #define ETH_DCB_RX ETH_MQ_RX_DCB /** - * A set of values to identify what method is to be used to transmit + * A set of values to identify what method is to be used to transmit * packets using multi-TCs. */ enum rte_eth_tx_mq_mode { - ETH_MQ_TX_NONE = 0, /**< It is in neither DCB nor VT mode. */ - ETH_MQ_TX_DCB, /**< For TX side,only DCB is on. */ + ETH_MQ_TX_NONE = 0, /**< It is in neither DCB nor VT mode. */ + ETH_MQ_TX_DCB, /**< For TX side,only DCB is on. */ ETH_MQ_TX_VMDQ_DCB, /**< For TX side,both DCB and VT is on. */ ETH_MQ_TX_VMDQ_ONLY, /**< Only VT on, no DCB */ }; /** - * for tx mq mode backward compatible + * for tx mq mode backward compatible */ #define ETH_DCB_NONE ETH_MQ_TX_NONE #define ETH_VMDQ_DCB_TX ETH_MQ_TX_VMDQ_DCB @@ -331,9 +331,11 @@ struct rte_eth_rss_conf { #define ETH_RSS_IPV4_UDP 0x0040 /**< IPv4/UDP packet. */ #define ETH_RSS_IPV6_UDP 0x0080 /**< IPv6/UDP packet. */ #define ETH_RSS_IPV6_UDP_EX 0x0100 /**< IPv6/UDP with extension headers. */ + +#define ETH_RSS_PROTO_MASK 0x01FF /**< Mask of valid RSS hash protocols */ /* Definitions used for redirection table entry size */ #define ETH_RSS_RETA_NUM_ENTRIES 128 -#define ETH_RSS_RETA_MAX_QUEUE 16 +#define ETH_RSS_RETA_MAX_QUEUE 16 /* Definitions used for VMDQ and DCB functionality */ #define ETH_VMDQ_MAX_VLAN_FILTERS 64 /**< Maximum nb. of VMDQ vlan filters. */ @@ -343,7 +345,7 @@ struct rte_eth_rss_conf { /* DCB capability defines */ #define ETH_DCB_PG_SUPPORT 0x00000001 /**< Priority Group(ETS) support. */ -#define ETH_DCB_PFC_SUPPORT 0x00000002 /**< Priority Flow Control support. */ +#define ETH_DCB_PFC_SUPPORT 0x00000002 /**< Priority Flow Control support. */ /* Definitions used for VLAN Offload functionality */ #define ETH_VLAN_STRIP_OFFLOAD 0x0001 /**< VLAN Strip On/Off */ @@ -354,7 +356,7 @@ struct rte_eth_rss_conf { #define ETH_VLAN_STRIP_MASK 0x0001 /**< VLAN Strip setting mask */ #define ETH_VLAN_FILTER_MASK 0x0002 /**< VLAN Filter setting mask*/ #define ETH_VLAN_EXTEND_MASK 0x0004 /**< VLAN Extend setting mask*/ -#define ETH_VLAN_ID_MAX 0x0FFF /**< VLAN ID is in lower 12 bits*/ +#define ETH_VLAN_ID_MAX 0x0FFF /**< VLAN ID is in lower 12 bits*/ /* Definitions used for receive MAC address */ #define ETH_NUM_RECEIVE_MAC_ADDR 128 /**< Maximum nb. of receive mac addr. */ @@ -383,7 +385,7 @@ struct rte_eth_rss_conf { */ struct rte_eth_vlan_mirror { uint64_t vlan_mask; /**< mask for valid VLAN ID. */ - uint16_t vlan_id[ETH_VMDQ_MAX_VLAN_FILTERS]; + uint16_t vlan_id[ETH_VMDQ_MAX_VLAN_FILTERS]; /** VLAN ID list for vlan mirror. */ }; @@ -403,9 +405,9 @@ struct rte_eth_vmdq_mirror_conf { */ struct rte_eth_rss_reta { /** First 64 mask bits indicate which entry(s) need to updated/queried. */ - uint64_t mask_lo; + uint64_t mask_lo; /** Second 64 mask bits indicate which entry(s) need to updated/queried. */ - uint64_t mask_hi; + uint64_t mask_hi; uint8_t reta[ETH_RSS_RETA_NUM_ENTRIES]; /**< 128 RETA entries*/ }; @@ -435,13 +437,13 @@ struct rte_eth_dcb_rx_conf { uint8_t dcb_queue[ETH_DCB_NUM_USER_PRIORITIES]; /**< Possible DCB queue,4 or 8. */ }; - + struct rte_eth_vmdq_dcb_tx_conf { enum rte_eth_nb_pools nb_queue_pools; /**< With DCB, 16 or 32 pools. */ uint8_t dcb_queue[ETH_DCB_NUM_USER_PRIORITIES]; /**< Possible DCB queue,4 or 8. */ }; - + struct rte_eth_dcb_tx_conf { enum rte_eth_nb_tcs nb_tcs; /**< Possible DCB TCs, 4 or 8 TCs. */ uint8_t dcb_queue[ETH_DCB_NUM_USER_PRIORITIES]; @@ -480,6 +482,7 @@ struct rte_eth_vmdq_rx_conf { enum rte_eth_nb_pools nb_queue_pools; /**< VMDq only mode, 8 or 64 pools */ uint8_t enable_default_pool; /**< If non-zero, use a default pool */ uint8_t default_pool; /**< The default pool, if applicable */ + uint8_t enable_loop_back; /**< Enable VT loop back */ uint8_t nb_pool_maps; /**< We can have up to 64 filters/mappings */ struct { uint16_t vlan_id; /**< The vlan id of the received frame */ @@ -501,6 +504,7 @@ struct rte_eth_rxconf { struct rte_eth_thresh rx_thresh; /**< RX ring threshold registers. */ uint16_t rx_free_thresh; /**< Drives the freeing of RX descriptors. */ uint8_t rx_drop_en; /**< Drop packets if no descriptors are available. */ + uint8_t start_rx_per_q; /**< start rx per queue. */ }; #define ETH_TXQ_FLAGS_NOMULTSEGS 0x0001 /**< nb_segs=1 for all mbufs */ @@ -521,6 +525,7 @@ struct rte_eth_txconf { uint16_t tx_rs_thresh; /**< Drives the setting of RS bit on TXDs. */ uint16_t tx_free_thresh; /**< Drives the freeing of TX buffers. */ uint32_t txq_flags; /**< Set flags for the Tx queue */ + uint8_t start_tx_per_q; /**< start tx per queue. */ }; /** @@ -751,9 +756,9 @@ struct rte_eth_conf { struct rte_eth_vmdq_tx_conf vmdq_tx_conf; /**< Port vmdq TX configuration. */ } tx_adv_conf; /**< Port TX DCB configuration (union). */ - /** Currently,Priority Flow Control(PFC) are supported,if DCB with PFC - is needed,and the variable must be set ETH_DCB_PFC_SUPPORT. */ - uint32_t dcb_capability_en; + /** Currently,Priority Flow Control(PFC) are supported,if DCB with PFC + is needed,and the variable must be set ETH_DCB_PFC_SUPPORT. */ + uint32_t dcb_capability_en; struct rte_fdir_conf fdir_conf; /**< FDIR configuration. */ struct rte_intr_conf intr_conf; /**< Interrupt mode configuration. */ }; @@ -794,7 +799,7 @@ struct rte_eth_dev_info { uint16_t max_rx_queues; /**< Maximum number of RX queues. */ uint16_t max_tx_queues; /**< Maximum number of TX queues. */ uint32_t max_mac_addrs; /**< Maximum number of MAC addresses. */ - uint32_t max_hash_mac_addrs; + uint32_t max_hash_mac_addrs; /** Maximum number of hash MAC addresses for MTA and UTA. */ uint16_t max_vfs; /**< Maximum number of VFs. */ uint16_t max_vmdq_pools; /**< Maximum number of VMDq pools. */ @@ -859,6 +864,14 @@ typedef void (*eth_dev_infos_get_t)(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info); /**< @internal Get specific informations of an Ethernet device. */ +typedef int (*eth_queue_start_t)(struct rte_eth_dev *dev, + uint16_t queue_id); +/**< @internal Start rx and tx of a queue of an Ethernet device. */ + +typedef int (*eth_queue_stop_t)(struct rte_eth_dev *dev, + uint16_t queue_id); +/**< @internal Stop rx and tx of a queue of an Ethernet device. */ + typedef int (*eth_rx_queue_setup_t)(struct rte_eth_dev *dev, uint16_t rx_queue_id, uint16_t nb_rx_desc, @@ -966,6 +979,14 @@ typedef int (*reta_query_t)(struct rte_eth_dev *dev, struct rte_eth_rss_reta *reta_conf); /**< @internal Query RSS redirection table on an Ethernet device */ +typedef int (*rss_hash_update_t)(struct rte_eth_dev *dev, + struct rte_eth_rss_conf *rss_conf); +/**< @internal Update RSS hash configuration of an Ethernet device */ + +typedef int (*rss_hash_conf_get_t)(struct rte_eth_dev *dev, + struct rte_eth_rss_conf *rss_conf); +/**< @internal Get current RSS hash configuration of an Ethernet device */ + typedef int (*eth_dev_led_on_t)(struct rte_eth_dev *dev); /**< @internal Turn on SW controllable LED on an Ethernet device */ @@ -979,7 +1000,7 @@ typedef void (*eth_mac_addr_add_t)(struct rte_eth_dev *dev, struct ether_addr *mac_addr, uint32_t index, uint32_t vmdq); -/**< @internal Set a MAC address into Receive Address Address Register */ +/**< @internal Set a MAC address into Receive Address Address Register */ typedef int (*eth_uc_hash_table_set_t)(struct rte_eth_dev *dev, struct ether_addr *mac_addr, @@ -992,7 +1013,7 @@ typedef int (*eth_uc_all_hash_table_set_t)(struct rte_eth_dev *dev, typedef int (*eth_set_vf_rx_mode_t)(struct rte_eth_dev *dev, uint16_t vf, - uint16_t rx_mode, + uint16_t rx_mode, uint8_t on); /**< @internal Set a VF receive mode */ @@ -1006,15 +1027,15 @@ typedef int (*eth_set_vf_tx_t)(struct rte_eth_dev *dev, uint8_t on); /**< @internal Enable or disable a VF transmit */ -typedef int (*eth_set_vf_vlan_filter_t)(struct rte_eth_dev *dev, - uint16_t vlan, +typedef int (*eth_set_vf_vlan_filter_t)(struct rte_eth_dev *dev, + uint16_t vlan, uint64_t vf_mask, uint8_t vlan_on); /**< @internal Set VF VLAN pool filter */ typedef int (*eth_mirror_rule_set_t)(struct rte_eth_dev *dev, struct rte_eth_vmdq_mirror_conf *mirror_conf, - uint8_t rule_id, + uint8_t rule_id, uint8_t on); /**< @internal Add a traffic mirroring rule on an Ethernet device */ @@ -1099,6 +1120,10 @@ struct eth_dev_ops { vlan_tpid_set_t vlan_tpid_set; /**< Outer VLAN TPID Setup. */ vlan_strip_queue_set_t vlan_strip_queue_set; /**< VLAN Stripping on queue. */ vlan_offload_set_t vlan_offload_set; /**< Set VLAN Offload. */ + eth_queue_start_t rx_queue_start;/**< Start RX for a queue.*/ + eth_queue_stop_t rx_queue_stop;/**< Stop RX for a queue.*/ + eth_queue_start_t tx_queue_start;/**< Start TX for a queue.*/ + eth_queue_stop_t tx_queue_stop;/**< Stop TX for a queue.*/ eth_rx_queue_setup_t rx_queue_setup;/**< Set up device RX queue.*/ eth_queue_release_t rx_queue_release;/**< Release RX queue.*/ eth_rx_queue_count_t rx_queue_count; /**< Get Rx queue count. */ @@ -1153,6 +1178,10 @@ struct eth_dev_ops { bypass_wd_reset_t bypass_wd_reset; #endif + /** Configure RSS hash protocols. */ + rss_hash_update_t rss_hash_update; + /** Get current RSS hash configuration. */ + rss_hash_conf_get_t rss_hash_conf_get; }; /** @@ -1195,7 +1224,7 @@ struct rte_eth_dev_data { void **tx_queues; /**< Array of pointers to TX queues. */ uint16_t nb_rx_queues; /**< Number of RX queues. */ uint16_t nb_tx_queues; /**< Number of TX queues. */ - + struct rte_eth_dev_sriov sriov; /**< SRIOV data */ void *dev_private; /**< PMD-specific private data */ @@ -1208,7 +1237,7 @@ struct rte_eth_dev_data { uint64_t rx_mbuf_alloc_failed; /**< RX ring mbuf allocation failures. */ struct ether_addr* mac_addrs;/**< Device Ethernet Link address. */ - uint64_t mac_pool_sel[ETH_NUM_RECEIVE_MAC_ADDR]; + uint64_t mac_pool_sel[ETH_NUM_RECEIVE_MAC_ADDR]; /** bitmap array of associating Ethernet MAC addresses to pools */ struct ether_addr* hash_mac_addrs; /** Device Ethernet MAC addresses of hash filtering. */ @@ -1315,82 +1344,6 @@ struct eth_driver { */ extern void rte_eth_driver_register(struct eth_driver *eth_drv); -/** - * The initialization function of the driver for 10Gbps Intel IXGBE_VF - * Ethernet devices. - * Invoked once at EAL start time. - * @return - * 0 on success - */ -extern int rte_ixgbevf_pmd_init(void); - -/** - * The initialization function of the driver for Qumranet virtio-net - * Ethernet devices. - * Invoked once at EAL start time. - * @return - * 0 on success - */ -extern int rte_virtio_pmd_init(void); - -/** - * The initialization function of the driver for VMware VMXNET3 - * Ethernet devices. - * Invoked once at EAL start time. - * @return - * 0 on success - */ -extern int rte_vmxnet3_pmd_init(void); - - -/** - * The initialization function of *all* supported and enabled drivers. - * Right now, the following PMDs are supported: - * - igb - * - igbvf - * - em - * - ixgbe - * - ixgbevf - * - virtio - * - vmxnet3 - * This function is invoked once at EAL start time. - * @return - * 0 on success. - * Error code of the device initialization failure, - * -ENODEV if there are no drivers available - * (e.g. if all driver config options are = n). - */ -static inline -int rte_pmd_init_all(void) -{ - int ret = -ENODEV; - -#ifdef RTE_LIBRTE_IXGBE_PMD - if ((ret = rte_ixgbevf_pmd_init()) != 0) { - RTE_LOG(ERR, PMD, "Cannot init ixgbevf PMD\n"); - return (ret); - } -#endif /* RTE_LIBRTE_IXGBE_PMD */ - -#ifdef RTE_LIBRTE_VIRTIO_PMD - if ((ret = rte_virtio_pmd_init()) != 0) { - RTE_LOG(ERR, PMD, "Cannot init virtio PMD\n"); - return (ret); - } -#endif /* RTE_LIBRTE_VIRTIO_PMD */ - -#ifdef RTE_LIBRTE_VMXNET3_PMD - if ((ret = rte_vmxnet3_pmd_init()) != 0) { - RTE_LOG(ERR, PMD, "Cannot init vmxnet3 PMD\n"); - return (ret); - } -#endif /* RTE_LIBRTE_VMXNET3_PMD */ - - if (ret == -ENODEV) - RTE_LOG(ERR, PMD, "No PMD(s) are configured\n"); - return (ret); -} - /** * Configure an Ethernet device. * This function must be invoked first before any other function in the @@ -1524,6 +1477,71 @@ extern int rte_eth_tx_queue_setup(uint8_t port_id, uint16_t tx_queue_id, */ extern int rte_eth_dev_socket_id(uint8_t port_id); +/* + * Start specified RX queue of a port + * + * @param port_id + * The port identifier of the Ethernet device + * @param rx_queue_id + * The index of the rx queue to update the ring. + * The value must be in the range [0, nb_rx_queue - 1] previously supplied + * to rte_eth_dev_configure(). + * @return + * - 0: Success, the transmit queue is correctly set up. + * - -EINVAL: The port_id or the queue_id out of range. + * - -ENOTSUP: The function not supported in PMD driver. + */ +extern int rte_eth_dev_rx_queue_start(uint8_t port_id, uint16_t rx_queue_id); + +/* + * Stop specified RX queue of a port + * + * @param port_id + * The port identifier of the Ethernet device + * @param rx_queue_id + * The index of the rx queue to update the ring. + * The value must be in the range [0, nb_rx_queue - 1] previously supplied + * to rte_eth_dev_configure(). + * @return + * - 0: Success, the transmit queue is correctly set up. + * - -EINVAL: The port_id or the queue_id out of range. + * - -ENOTSUP: The function not supported in PMD driver. + */ +extern int rte_eth_dev_rx_queue_stop(uint8_t port_id, uint16_t rx_queue_id); + +/* + * Start specified TX queue of a port + * + * @param port_id + * The port identifier of the Ethernet device + * @param tx_queue_id + * The index of the tx queue to update the ring. + * The value must be in the range [0, nb_tx_queue - 1] previously supplied + * to rte_eth_dev_configure(). + * @return + * - 0: Success, the transmit queue is correctly set up. + * - -EINVAL: The port_id or the queue_id out of range. + * - -ENOTSUP: The function not supported in PMD driver. + */ +extern int rte_eth_dev_tx_queue_start(uint8_t port_id, uint16_t tx_queue_id); + +/* + * Stop specified TX queue of a port + * + * @param port_id + * The port identifier of the Ethernet device + * @param tx_queue_id + * The index of the tx queue to update the ring. + * The value must be in the range [0, nb_tx_queue - 1] previously supplied + * to rte_eth_dev_configure(). + * @return + * - 0: Success, the transmit queue is correctly set up. + * - -EINVAL: The port_id or the queue_id out of range. + * - -ENOTSUP: The function not supported in PMD driver. + */ +extern int rte_eth_dev_tx_queue_stop(uint8_t port_id, uint16_t tx_queue_id); + + /** * Start an Ethernet device. @@ -1940,7 +1958,7 @@ static inline uint32_t rte_eth_rx_queue_count(uint8_t port_id, uint16_t queue_id) { struct rte_eth_dev *dev; - + dev = &rte_eth_devices[port_id]; return (*dev->dev_ops->rx_queue_count)(dev, queue_id); } @@ -2384,9 +2402,9 @@ int rte_eth_dev_flow_ctrl_set(uint8_t port_id, struct rte_eth_fc_conf *fc_conf); /** - * Configure the Ethernet priority flow control under DCB environment - * for Ethernet device. - * + * Configure the Ethernet priority flow control under DCB environment + * for Ethernet device. + * * @param port_id * The port identifier of the Ethernet device. * @param pfc_conf @@ -2439,39 +2457,39 @@ int rte_eth_dev_mac_addr_remove(uint8_t port, struct ether_addr *mac_addr); /** * Update Redirection Table(RETA) of Receive Side Scaling of Ethernet device. - * + * * @param port * The port identifier of the Ethernet device. - * @param reta_conf + * @param reta_conf * RETA to update. * @return - * - (0) if successful. + * - (0) if successful. * - (-ENOTSUP) if hardware doesn't support. * - (-EINVAL) if bad parameter. */ -int rte_eth_dev_rss_reta_update(uint8_t port, +int rte_eth_dev_rss_reta_update(uint8_t port, struct rte_eth_rss_reta *reta_conf); /** * Query Redirection Table(RETA) of Receive Side Scaling of Ethernet device. - * + * * @param port * The port identifier of the Ethernet device. - * @param reta_conf + * @param reta_conf * RETA to query. * @return - * - (0) if successful. + * - (0) if successful. * - (-ENOTSUP) if hardware doesn't support. * - (-EINVAL) if bad parameter. */ -int rte_eth_dev_rss_reta_query(uint8_t port, +int rte_eth_dev_rss_reta_query(uint8_t port, struct rte_eth_rss_reta *reta_conf); - + /** * Updates unicast hash table for receiving packet with the given destination - * MAC address, and the packet is routed to all VFs for which the RX mode is + * MAC address, and the packet is routed to all VFs for which the RX mode is * accept packets that match the unicast hash table. - * + * * @param port * The port identifier of the Ethernet device. * @param addr @@ -2480,7 +2498,7 @@ int rte_eth_dev_rss_reta_query(uint8_t port, * 1 - Set an unicast hash bit for receiving packets with the MAC address. * 0 - Clear an unicast hash bit. * @return - * - (0) if successful. + * - (0) if successful. * - (-ENOTSUP) if hardware doesn't support. * - (-ENODEV) if *port_id* invalid. * - (-EINVAL) if bad parameter. @@ -2489,18 +2507,18 @@ int rte_eth_dev_uc_hash_table_set(uint8_t port,struct ether_addr *addr, uint8_t on); /** - * Updates all unicast hash bitmaps for receiving packet with any Unicast - * Ethernet MAC addresses,the packet is routed to all VFs for which the RX + * Updates all unicast hash bitmaps for receiving packet with any Unicast + * Ethernet MAC addresses,the packet is routed to all VFs for which the RX * mode is accept packets that match the unicast hash table. - * + * * @param port * The port identifier of the Ethernet device. * @param on - * 1 - Set all unicast hash bitmaps for receiving all the Ethernet + * 1 - Set all unicast hash bitmaps for receiving all the Ethernet * MAC addresses * 0 - Clear all unicast hash bitmaps * @return - * - (0) if successful. + * - (0) if successful. * - (-ENOTSUP) if hardware doesn't support. * - (-ENODEV) if *port_id* invalid. * - (-EINVAL) if bad parameter. @@ -2509,13 +2527,13 @@ int rte_eth_dev_uc_all_hash_table_set(uint8_t port,uint8_t on); /** * Set RX L2 Filtering mode of a VF of an Ethernet device. - * + * * @param port * The port identifier of the Ethernet device. - * @param vf + * @param vf * VF id. * @param rx_mode - * The RX mode mask, which is one or more of accepting Untagged Packets, + * The RX mode mask, which is one or more of accepting Untagged Packets, * packets that match the PFUTA table, Broadcast and Multicast Promiscuous. * ETH_VMDQ_ACCEPT_UNTAG,ETH_VMDQ_ACCEPT_HASH_UC, * ETH_VMDQ_ACCEPT_BROADCAST and ETH_VMDQ_ACCEPT_MULTICAST will be used @@ -2524,7 +2542,7 @@ int rte_eth_dev_uc_all_hash_table_set(uint8_t port,uint8_t on); * 1 - Enable a VF RX mode. * 0 - Disable a VF RX mode. * @return - * - (0) if successful. + * - (0) if successful. * - (-ENOTSUP) if hardware doesn't support. * - (-ENOTSUP) if hardware doesn't support. * - (-EINVAL) if bad parameter. @@ -2534,26 +2552,26 @@ int rte_eth_dev_set_vf_rxmode(uint8_t port, uint16_t vf, uint16_t rx_mode, /** * Enable or disable a VF traffic transmit of the Ethernet device. -* +* * @param port * The port identifier of the Ethernet device. -* @param vf +* @param vf * VF id. * @param on * 1 - Enable a VF traffic transmit. * 0 - Disable a VF traffic transmit. * @return -* - (0) if successful. +* - (0) if successful. * - (-ENODEV) if *port_id* invalid. * - (-ENOTSUP) if hardware doesn't support. * - (-EINVAL) if bad parameter. */ -int +int rte_eth_dev_set_vf_tx(uint8_t port,uint16_t vf, uint8_t on); /** * Enable or disable a VF traffic receive of an Ethernet device. -* +* * @param port * The port identifier of the Ethernet device. * @param vf @@ -2562,18 +2580,18 @@ rte_eth_dev_set_vf_tx(uint8_t port,uint16_t vf, uint8_t on); * 1 - Enable a VF traffic receive. * 0 - Disable a VF traffic receive. * @return -* - (0) if successful. +* - (0) if successful. * - (-ENOTSUP) if hardware doesn't support. * - (-ENODEV) if *port_id* invalid. * - (-EINVAL) if bad parameter. */ -int +int rte_eth_dev_set_vf_rx(uint8_t port,uint16_t vf, uint8_t on); /** * Enable/Disable hardware VF VLAN filtering by an Ethernet device of * received VLAN packets tagged with a given VLAN Tag Identifier. -* +* * @param port id * The port identifier of the Ethernet device. * @param vlan_id @@ -2584,16 +2602,16 @@ rte_eth_dev_set_vf_rx(uint8_t port,uint16_t vf, uint8_t on); * 1 - Enable VFs VLAN filtering. * 0 - Disable VFs VLAN filtering. * @return -* - (0) if successful. +* - (0) if successful. * - (-ENOTSUP) if hardware doesn't support. * - (-ENODEV) if *port_id* invalid. * - (-EINVAL) if bad parameter. */ int -rte_eth_dev_set_vf_vlan_filter(uint8_t port, uint16_t vlan_id, +rte_eth_dev_set_vf_vlan_filter(uint8_t port, uint16_t vlan_id, uint64_t vf_mask, uint8_t vlan_on); - + /** * Set a traffic mirroring rule on an Ethernet device * @@ -2616,7 +2634,7 @@ rte_eth_dev_set_vf_vlan_filter(uint8_t port, uint16_t vlan_id, * - (-EINVAL) if the mr_conf information is not correct. */ int rte_eth_mirror_rule_set(uint8_t port_id, - struct rte_eth_vmdq_mirror_conf *mirror_conf, + struct rte_eth_vmdq_mirror_conf *mirror_conf, uint8_t rule_id, uint8_t on); @@ -2801,6 +2819,39 @@ int rte_eth_dev_bypass_wd_timeout_show(uint8_t port, uint32_t *wd_timeout); */ int rte_eth_dev_bypass_wd_reset(uint8_t port); + /** + * Configuration of Receive Side Scaling hash computation of Ethernet device. + * + * @param port + * The port identifier of the Ethernet device. + * @param rss_conf + * The new configuration to use for RSS hash computation on the port. + * @return + * - (0) if successful. + * - (-ENODEV) if port identifier is invalid. + * - (-ENOTSUP) if hardware doesn't support. + * - (-EINVAL) if bad parameter. + */ +int rte_eth_dev_rss_hash_update(uint8_t port_id, + struct rte_eth_rss_conf *rss_conf); + + /** + * Retrieve current configuration of Receive Side Scaling hash computation + * of Ethernet device. + * + * @param port + * The port identifier of the Ethernet device. + * @param rss_conf + * Where to store the current RSS hash configuration of the Ethernet device. + * @return + * - (0) if successful. + * - (-ENODEV) if port identifier is invalid. + * - (-ENOTSUP) if hardware doesn't support RSS. + */ +int +rte_eth_dev_rss_hash_conf_get(uint8_t port_id, + struct rte_eth_rss_conf *rss_conf); + #ifdef __cplusplus } #endif