From: ext Bill Fischofer [mailto:[email protected]] Sent: Tuesday, March 31, 2015 1:13 AM To: Savolainen, Petri (Nokia - FI/Espoo) Cc: LNG ODP Mailman List Subject: Re: [lng-odp] [RFC 8/8] api: packet_io: renamed odp_pktio_promisc_mode_set
On Mon, Mar 30, 2015 at 12:23 PM, Petri Savolainen <[email protected]<mailto:[email protected]>> wrote: Renamed to odp_pktio_ctrl_promisc_mode(). All interface level control function are prefixed with odp_pktio_ctrl_ to highlight that these operations may not be permitted on all interfaces. For example, virtual functions cannot change interface level settings, only physical functions can. Signed-off-by: Petri Savolainen <[email protected]<mailto:[email protected]>> --- include/odp/api/packet_io.h | 30 +++++++++++++++++++----------- platform/linux-generic/odp_packet_io.c | 2 +- test/validation/odp_pktio.c | 4 ++-- 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/include/odp/api/packet_io.h b/include/odp/api/packet_io.h index dc76270..3229d64 100644 --- a/include/odp/api/packet_io.h +++ b/include/odp/api/packet_io.h @@ -317,17 +317,6 @@ int odp_pktio_ctrl_info(odp_pktio_t pktio, odp_pktio_ctrl_info_t *info); int odp_pktio_mtu(odp_pktio_t pktio); /** - * Enable/Disable promiscuous mode on a packet IO interface. - * - * @param[in] pktio Packet IO handle. - * @param[in] enable 1 to enable, 0 to disable. - * - * @retval 0 on success - * @retval <0 on failure - */ -int odp_pktio_promisc_mode_set(odp_pktio_t pktio, odp_bool_t enable); - -/** * Determine if promiscuous mode is enabled for a packet IO interface. * * @param[in] pktio Packet IO handle. @@ -420,6 +409,25 @@ int odp_pktio_headroom_set(odp_pktio_t pktio, uint32_t headroom); */ uint64_t odp_pktio_to_u64(odp_pktio_t pktio); +/* + * Packet IO interface control + * --------------------------- + * + * Some functions may not be permitted on all interfaces + */ + +/** + * Enable/Disable promiscuous mode on a packet IO interface. + * + * @param[in] pktio Packet IO handle. + * @param[in] enable 1 to enable, 0 to disable. + * + * @retval 0 on success + * @retval <0 on failure + */ +int odp_pktio_ctrl_promisc_mode(odp_pktio_t pktio, odp_bool_t enable); This seems inconsistent with other getters/setters used throughout ODP. Why should these attributes have their own unique syntax instead of odp_pktio_promisc_mode() for the getter and odp_pktio_promisc_mode_set() for setter? The odp_pktio_ctrl_ API would be used to modifying the shared state of the interface (e.g. link up/down, or enable/disable promisc mode). Depending on the interface sharing (e.g. VF vs. PF), some of the API calls may not be supported on the interface the user has opened (a VF). User can call odp_pktio_ctrl_info() to check which ctrl API functions are permitted. odp_pktio_ctrl_info(pktio, &ctrl_info); if (ctrl_info.promisc == 0) { printf(“No permission to set promisc mode\n”); return; } if (odp_pktio_ctrl_promisc_mode(pktio, 1)) printf(“Promisc mode set failed\n”); VS. if (odp_pktio_ctrl_promisc_mode(pktio, 1)) printf(“No permission to set promisc mode, or set failed\n”); This way the potentially not supported functions are grouped together. Other option would be to standadise the return value (-1 fail, -2 not supported) or use errno (-1 fail, errno== ENOSUPPORT). But I think it’s better to group and highlight this class of functions. All odp_xxx_set() functions would remain “supported” always. -Petri
_______________________________________________ lng-odp mailing list [email protected] https://lists.linaro.org/mailman/listinfo/lng-odp
