Re: [lng-odp] [PATCH API-NEXT v1 1/1] api:pktio: Adds MTU set function.

2017-08-10 Thread vamsi a
On Tue, Aug 8, 2017 at 5:08 PM, Bill Fischofer <bill.fischo...@linaro.org>
wrote:

>
>
> On Tue, Aug 8, 2017 at 2:38 AM, Vamsi Attunuru <vamsi.cav...@gmail.com>
> wrote:
>
>> Signed-off-by: Vamsi Attunuru <vattun...@cavium.com>
>> Signed-off-by: Shally Verma <sve...@cavium.com>
>> Signed-off-by: Mahipal Challa <mcha...@cavium.com>
>>
>> ---
>>  include/odp/api/spec/packet_io.h | 21 +
>>  1 file changed, 21 insertions(+)
>>
>> diff --git a/include/odp/api/spec/packet_io.h
>> b/include/odp/api/spec/packet_io.h
>> index d42cebf..be81c3d 100644
>> --- a/include/odp/api/spec/packet_io.h
>> +++ b/include/odp/api/spec/packet_io.h
>> @@ -452,6 +452,9 @@ typedef union odp_pktio_set_op_t {
>> struct {
>> /** Promiscuous mode */
>> uint32_t promisc_mode : 1;
>> +
>> +   /** Allow app to set MTU size */
>> +   uint32_t mtu_set : 1;
>> } op;
>> /** All bits of the bit field structure.
>>   * This field can be used to set/clear all flags, or bitwise
>> @@ -480,6 +483,9 @@ typedef struct odp_pktio_capability_t {
>>
>> /** @deprecated Use enable_loop inside odp_pktin_config_t */
>> odp_bool_t ODP_DEPRECATE(loop_supported);
>> +
>> +   /** Maximum MTU size supported */
>> +   uint32_t max_mtu_size;
>>  } odp_pktio_capability_t;
>>
>>  /**
>> @@ -910,6 +916,21 @@ int odp_pktout_send(odp_pktout_queue_t queue, const
>> odp_packet_t packets[],
>>  uint32_t odp_pktio_mtu(odp_pktio_t pktio);
>>
>>  /**
>> + * Set MTU value of a packet IO interface.
>> + *
>> + * Application should pass value upto max_mtu_size as indicated by
>> + * odp_pktio_capability_t:max_mtu_size. Any value beyond max_mtu_size
>> + * limit will result in failure. mtu value < 68 also results in failure.
>>
>
> Seems like it would be better to have an explicit min_mtu_size in the
> odp_pktio_capability() than this arbitrary note buried as a comment.
>

sure, will add min_mtu_size field in odp_paktio_capability_t.

>From the last discussion, odp_pktio_config() api was suggested instead of
set_mtu() api, if my understanding is correct, Is the following sequence
allowed to occur multiple times like stop pktio interface, call
pktio_config() and start pktio interface.

>
>
>> + *
>> + * @param pktio  Packet IO handle.
>> + * @param mtuMTU value to be set.
>> + *
>> + * @return  0 on success
>> + * @retval <0 on failure
>> + */
>> +int odp_pktio_mtu_set(odp_pktio_t pktio, uint32_t mtu);
>> +
>> +/**
>>   * Enable/Disable promiscuous mode on a packet IO interface.
>>   *
>>   * @param[in] pktioPacket IO handle.
>> --
>> 1.9.3
>>
>>
>


Re: [lng-odp] [PATCH API-NEXT v2 1/1] api:pktio: Adds MTU set function.

2017-08-31 Thread vamsi a
On Tue, Aug 29, 2017 at 3:36 PM, Vamsi Attunuru <vamsi.cav...@gmail.com>
wrote:

> Signed-off-by: Vamsi Attunuru <vattun...@cavium.com>
> Signed-off-by: Shally Verma <sve...@cavium.com>
> Signed-off-by: Mahipal Challa <mcha...@cavium.com>
>
> ---
>  include/odp/api/spec/packet_io.h | 43 +-
> --
>  1 file changed, 23 insertions(+), 20 deletions(-)
>
> diff --git a/include/odp/api/spec/packet_io.h
> b/include/odp/api/spec/packet_io.h
> index be81c3d..c372a2a 100644
> --- a/include/odp/api/spec/packet_io.h
> +++ b/include/odp/api/spec/packet_io.h
> @@ -440,6 +440,29 @@ typedef struct odp_pktio_config_t {
>  */
> odp_bool_t outbound_ipsec;
>
> +   /** MTU size of the pktio interface.
> +*
> +* It's the frame size which the pktio can transmit without
> fragmentation.
> +* And it does not count L2 header bytes, FCS and VLAN tag bytes.
>

Discussion on  the number of bytes accounted for MTU size calculation was
not concluded in last public call.

I am wondering  how ODP is different from other implementations, where most
of the implementations (which facilitate networking applications to send
over the pkts) are not considering  L2 headers & checksum as part of it MTU
size calculations,( it does consider those for frame size calculations) and
there also, the application pushes the entire ethernet frame(1500+14
bytes)  to the underneath implementation.

any other suggestions are welcome.


> +*
> +* pktio interface must be able to send and receive packets up to
> +* this MTU size successfully. Trying to send or receive packets
> larger
> +* than these MTU results in undefined behavior.
> +*
> +* By default, pktio is configured with max support MTU size.
> +*
>
Will take care of explaining default value.


> +* Max supported MTU can be read through these parameter
> +* as part of odp_pktio_capability() routine.
> +*
> +* MTU can be modified by passing valid
> odp_pktio_config_t:mtu_size value
> +* as part of odp_pktio_config() routine.
> +*
> +* Valid MTU value should be greater than 0 and less than or equal
> to the
> +* value get through odp_pktio_capability(),
> +* i.e. 0 < mtu_size <= capability provided mtu value.
> +*/
> +   uint32_t mtu_size;
>

Do we really need MRU as well.

+
>  } odp_pktio_config_t;
>
>  /**
> @@ -452,9 +475,6 @@ typedef union odp_pktio_set_op_t {
> struct {
> /** Promiscuous mode */
> uint32_t promisc_mode : 1;
> -
> -   /** Allow app to set MTU size */
> -   uint32_t mtu_set : 1;
> } op;
> /** All bits of the bit field structure.
>   * This field can be used to set/clear all flags, or bitwise
> @@ -484,8 +504,6 @@ typedef struct odp_pktio_capability_t {
> /** @deprecated Use enable_loop inside odp_pktin_config_t */
> odp_bool_t ODP_DEPRECATE(loop_supported);
>
> -   /** Maximum MTU size supported */
> -   uint32_t max_mtu_size;
>  } odp_pktio_capability_t;
>
>  /**
> @@ -916,21 +934,6 @@ int odp_pktout_send(odp_pktout_queue_t queue, const
> odp_packet_t packets[],
>  uint32_t odp_pktio_mtu(odp_pktio_t pktio);
>
>  /**
> - * Set MTU value of a packet IO interface.
> - *
> - * Application should pass value upto max_mtu_size as indicated by
> - * odp_pktio_capability_t:max_mtu_size. Any value beyond max_mtu_size
> - * limit will result in failure. mtu value < 68 also results in failure.
> - *
> - * @param pktio  Packet IO handle.
> - * @param mtuMTU value to be set.
> - *
> - * @return  0 on success
> - * @retval <0 on failure
> - */
> -int odp_pktio_mtu_set(odp_pktio_t pktio, uint32_t mtu);
> -
> -/**
>   * Enable/Disable promiscuous mode on a packet IO interface.
>   *
>   * @param[in] pktioPacket IO handle.
> --
> 1.9.3
>
>


[lng-odp] api: pktio: pktio_if_ops for mtu_set and mac_set.

2017-01-29 Thread Vamsi Krishna
Hi,

In the current ODP PKTIO APIs, there are calls to get mtu and mac
information of the pktio interfaces. I did not find any APIs to configure
the mtu and mac address of the pktio interface from the application.

Could someone comment on the purpose of not having those routines along
with mtu_get and mac_get api.

OR are there any APIs to serve these purpose, am I missing those.



*Regards,*

*A Vamsi*


[lng-odp] [PATCH API-NEXT v1 1/1] api:pktio: add MAC address and MTU set functions.

2017-08-01 Thread Vamsi Attunuru
Signed-off-by: Vamsi Attunuru <vattun...@cavium.com>
Signed-off-by: Shally Verma   <sve...@cavium.com>
Signed-off-by: Mahipal Challa <mcha...@cavium.com>

---
 include/odp/api/spec/packet_io.h | 167 +++
 1 file changed, 167 insertions(+)

diff --git a/include/odp/api/spec/packet_io.h b/include/odp/api/spec/packet_io.h
index 8802089..7174c0f 100644
--- a/include/odp/api/spec/packet_io.h
+++ b/include/odp/api/spec/packet_io.h
@@ -451,6 +451,16 @@ typedef union odp_pktio_set_op_t {
struct {
/** Promiscuous mode */
uint32_t promisc_mode : 1;
+   /** Allow default MAC address to be set */
+   uint32_t mac_addr_set : 1;
+   /** Allow multiple addresses to be added
+ * other than default. When enabled, app
+ * can call odp_mac_addr_add API to set
+ * mac addresses upto the limit indicated by
+ * Odp_pktio_capability_t:max_mac_addresses */
+   uint32_t mac_addr_add : 1;
+   /** Allow app to set MTU size */
+   uint32_t mtu_set : 1;
} op;
/** All bits of the bit field structure.
  * This field can be used to set/clear all flags, or bitwise
@@ -459,6 +469,71 @@ typedef union odp_pktio_set_op_t {
 } odp_pktio_set_op_t;
 
 /**
+ * MAC address type
+ */
+typedef enum odp_mac_addr_type_t {
+   /** Unicast MAC address type */
+   ODP_MAC_ADDR_TYPE_UCAST = 0,
+
+   /** Multicast MAC address type */
+   ODP_MAC_ADDR_TYPE_BCAST
+} odp_mac_addr_type_t;
+
+/**
+ * MAC address add/remove operation status types
+ *
+ * These status types denote various statuses set by
+ * odp_pktio_mac_addr_add/remove APIs in odp_pktio_mac_addr_t:status.
+ */
+typedef enum odp_mac_ops_status_t {
+   /** MAC address add/remove is successful */
+   ODP_MAC_ADDR_OP_SUCCESS = 0,
+
+   /** Invalid mac address passed in odp_pktio_mac_addr_t:mac_addr */
+   ODP_MAC_ADDR_INVALID,
+
+   /** odp_pktio_mac_addr_t:mac_addr points to NULL */
+   ODP_MAC_ADDR_PTR_NULL,
+
+   /** Entry in mac_addr_tbl[] is NULL */
+   ODP_MAC_ADDR_ENTRY_NULL,
+
+   /** MAC address size mismatch
+* odp_pktio_mac_addr_t:mac_addr_len
+* != odp_pktio_capability_t:mac_addr_len */
+   ODP_MAC_ADDR_SIZE_ERR,
+
+   /** Index is invalid,
+* odp_pktio_mac_addr_t:index >= 
odp_pktio_capability_t:max_mac_addresses */
+   ODP_MAC_ADDR_INVALID_INDEX
+} odp_mac_ops_status_t;
+
+/**
+ * Packet IO MAC address structure
+ *
+ * These parameters are used for adding/removing MAC addresses.
+ * "status" parameter of each index indicates the result after
+ * the odp_pktio_mac_addr_add/remove operation.
+ */
+typedef union odp_pktio_mac_addr_t {
+   /** Type of MAC address (ucast/mcast) */
+   odp_mac_addr_type_t mac_type;
+
+   /** Pointer to buffer containing MAC address */
+   uint8_t *mac_addr;
+
+   /** Length of mac_addr buffer */
+   uint32_t mac_addr_len;
+
+   /** Index value associated to this MAC address.
+* Should be <= odp_pktio_capability_t:max_mac_addresses */
+   uint32_t index;
+
+   /** Status flag of the mac_addr_add/remove operation */
+   odp_mac_ops_status_t status;
+} odp_pktio_mac_addr_t;
+
+/**
  * Packet IO capabilities
  */
 typedef struct odp_pktio_capability_t {
@@ -482,6 +557,17 @@ typedef struct odp_pktio_capability_t {
 * A boolean to denote whether loop back mode is supported on this
 * specific interface. */
odp_bool_t loop_supported;
+
+   /** Maximum MTU size supported */
+   uint32_t max_mtu_size;
+
+   /** Length of MAC addresses supported on this specific interface
+* All of the mac addresses supported by this pktio carry ,fixed size
+* length as indicated by this capability param */
+   uint32_t mac_addr_len;
+
+   /** Maximum number of MAC addresses supported on this specific 
interface */
+   uint32_t max_mac_addresses;
 } odp_pktio_capability_t;
 
 /**
@@ -912,6 +998,21 @@ int odp_pktout_send(odp_pktout_queue_t queue, const 
odp_packet_t packets[],
 uint32_t odp_pktio_mtu(odp_pktio_t pktio);
 
 /**
+ * Set MTU value of a packet IO interface.
+ *
+ * Application should pass value upto max_mtu_size as indicated by
+ * odp_pktio_capability_t:max_mtu_size. Any value beyond max_mtu_size
+ * limit will result in failure. mtu value == 0 also results in failure.
+ *
+ * @param pktio  Packet IO handle.
+ * @param mtuMTU value to be set.
+ *
+ * @return  0 on success
+ * @retval <0 on failure
+ */
+int odp_pktio_mtu_set(odp_pktio_t pktio, uint32_t mtu);
+
+/**
  * Enable/Disable promiscuous mode on a packet IO interface.
  *
  * @param[in] pktioPacket IO handle.
@@ -946,6 +1047,72 @@ int odp_pktio_promisc_mode(odp_pktio_t pktio);
 int odp_pktio_mac_addr(odp_pktio_t pktio, void *mac_addr, int 

[lng-odp] [PATCH v1 1/1] pktio APIs to modify the MAC address or the MTU size of the given packet IO handler.

2017-07-13 Thread Vamsi Attunuru
---
 include/odp/api/spec/packet_io.h | 29 +
 1 file changed, 29 insertions(+)

diff --git a/include/odp/api/spec/packet_io.h b/include/odp/api/spec/packet_io.h
index c7373fd..a950267 100644
--- a/include/odp/api/spec/packet_io.h
+++ b/include/odp/api/spec/packet_io.h
@@ -382,6 +382,10 @@ typedef union odp_pktio_set_op_t {
struct {
/** Promiscuous mode */
uint32_t promisc_mode : 1;
+   /** mac addr */
+   uint32_t mac : 1;
+   /** mtu addr */
+   uint32_t mtu : 1;
} op;
/** All bits of the bit field structure.
  * This field can be used to set/clear all flags, or bitwise
@@ -413,6 +417,9 @@ typedef struct odp_pktio_capability_t {
 * A boolean to denote whether loop back mode is supported on this
 * specific interface. */
odp_bool_t loop_supported;
+
+   /* max mtu size supported */
+   uint32_t max_mtu_size;
 } odp_pktio_capability_t;
 
 /**
@@ -843,6 +850,16 @@ int odp_pktout_send(odp_pktout_queue_t queue, const 
odp_packet_t packets[],
 uint32_t odp_pktio_mtu(odp_pktio_t pktio);
 
 /**
+ * Set MTU value of a packet IO interface.
+ *
+ * @param[in] pktio  Packet IO handle.
+ *
+ * @return 0 on success
+ * @retval -1 on failure
+ */
+int odp_pktio_mtu_set(odp_pktio_t pktio, int mtu);
+
+/**
  * Enable/Disable promiscuous mode on a packet IO interface.
  *
  * @param[in] pktioPacket IO handle.
@@ -877,6 +894,18 @@ int odp_pktio_promisc_mode(odp_pktio_t pktio);
 int odp_pktio_mac_addr(odp_pktio_t pktio, void *mac_addr, int size);
 
 /**
+ * Set the MAC address of a packet IO interface.
+ *
+ * @param  pktio Packet IO handle
+ * @param[in]  mac_addr  Input buffer
+ * @param   size  Size of output buffer
+ *
+ * @return Number of bytes written (actual size of MAC address)
+ * @retval <0 on failure
+ */
+int odp_pktio_mac_addr_set(odp_pktio_t pktio, void *mac_addr, int size);
+
+/**
  * Setup per-port default class-of-service.
  *
  * @param[in]  pktio   Ingress port pktio handle.
-- 
1.9.3



[lng-odp] [API-NEXT PATCH v1 0/1] pktio APIs to set the MAC address and MTU size.

2017-07-14 Thread Vamsi Attunuru
Hi Bill,

Existing pktio API has only support of querying MAC and MTU values.
Adds new pktio APIs to set MTU and MAC address on pktio interface.
Implementation can indicate it's supported maximum MTU size and MAC 
address size in its pktio capabilities. User can call set APIs to 
set values within allowed range as indicated by pktio capabilities.

Regards,
Vamsi

Vamsi Attunuru (1):
  pktio APIs to set the MAC address and MTU size of the given packet
IO handler.

 include/odp/api/spec/packet_io.h | 45 
 1 file changed, 45 insertions(+)

-- 
1.9.3



[lng-odp] [API-NEXT PATCH v1 1/1] pktio APIs to set the MAC address and MTU size.

2017-07-14 Thread Vamsi Attunuru
Adds new pktio APIs to set MTU and MAC address on pktio interface.

Signed-off-by: Vamsi Attunuru <vattun...@cavium.com>
Signed-off-by: Mahipal Challa <mcha...@cavium.com>
Signed-off-by: Shally Verma   <sve...@cavium.com>

---
 include/odp/api/spec/packet_io.h | 45 
 1 file changed, 45 insertions(+)

diff --git a/include/odp/api/spec/packet_io.h b/include/odp/api/spec/packet_io.h
index 8802089..1269f44 100644
--- a/include/odp/api/spec/packet_io.h
+++ b/include/odp/api/spec/packet_io.h
@@ -451,6 +451,10 @@ typedef union odp_pktio_set_op_t {
struct {
/** Promiscuous mode */
uint32_t promisc_mode : 1;
+   /** MAC address */
+   uint32_t mac : 1;
+   /** MTU size */
+   uint32_t mtu : 1;
} op;
/** All bits of the bit field structure.
  * This field can be used to set/clear all flags, or bitwise
@@ -482,6 +486,12 @@ typedef struct odp_pktio_capability_t {
 * A boolean to denote whether loop back mode is supported on this
 * specific interface. */
odp_bool_t loop_supported;
+
+   /** Maximum MTU size supported */
+   uint32_t max_mtu_size;
+
+   /** Length of MAC address supported on this specific interface */
+   uint32_t mac_addr_len;
 } odp_pktio_capability_t;
 
 /**
@@ -912,6 +922,21 @@ int odp_pktout_send(odp_pktout_queue_t queue, const 
odp_packet_t packets[],
 uint32_t odp_pktio_mtu(odp_pktio_t pktio);
 
 /**
+ * Set MTU value of a packet IO interface.
+ *
+ * Application should pass value upto max_mtu_size as indicated by
+ * odp_pktio_capability_t:max_mtu_size. Any value beyond max_mtu_size
+ * limit will result in failure.
+ *
+ * @param pktio  Packet IO handle.
+ * @param mtuMTU value to be set.
+ *
+ * @return  0 on success
+ * @retval <0 on failure
+ */
+int odp_pktio_mtu_set(odp_pktio_t pktio, uint32_t mtu);
+
+/**
  * Enable/Disable promiscuous mode on a packet IO interface.
  *
  * @param[in] pktioPacket IO handle.
@@ -946,6 +971,26 @@ int odp_pktio_promisc_mode(odp_pktio_t pktio);
 int odp_pktio_mac_addr(odp_pktio_t pktio, void *mac_addr, int size);
 
 /**
+ * Set the MAC address of a packet IO interface.
+ *
+ * Application should pass mac_addr buffer with size >=
+ * odp_pktio_capablity_t:mac_addr_len, size value less than
+ * implementation supported will result in API failure.
+ *
+ * On success, Implementation would read mac_addr buffer bytes
+ * upto mac_addr_len value indicated in capability information.
+ *
+ * @param pktioPacket IO handle
+ * @param mac_addr Pointer to MAC address to be set
+ * @param size Size of MAC address buffer
+ *
+ * @return  0 on success
+ * @retval <0 on failure
+ */
+int odp_pktio_mac_addr_set(odp_pktio_t pktio, const uint8_t *mac_addr,
+ int size);
+
+/**
  * Setup per-port default class-of-service.
  *
  * @param[in]  pktio   Ingress port pktio handle.
-- 
1.9.3



[lng-odp] [PATCH API-NEXT v1 1/1] api:pktio: Adds MTU set function.

2017-08-08 Thread Vamsi Attunuru
Signed-off-by: Vamsi Attunuru <vattun...@cavium.com>
Signed-off-by: Shally Verma <sve...@cavium.com>
Signed-off-by: Mahipal Challa <mcha...@cavium.com>

---
 include/odp/api/spec/packet_io.h | 21 +
 1 file changed, 21 insertions(+)

diff --git a/include/odp/api/spec/packet_io.h b/include/odp/api/spec/packet_io.h
index d42cebf..be81c3d 100644
--- a/include/odp/api/spec/packet_io.h
+++ b/include/odp/api/spec/packet_io.h
@@ -452,6 +452,9 @@ typedef union odp_pktio_set_op_t {
struct {
/** Promiscuous mode */
uint32_t promisc_mode : 1;
+
+   /** Allow app to set MTU size */
+   uint32_t mtu_set : 1;
} op;
/** All bits of the bit field structure.
  * This field can be used to set/clear all flags, or bitwise
@@ -480,6 +483,9 @@ typedef struct odp_pktio_capability_t {
 
/** @deprecated Use enable_loop inside odp_pktin_config_t */
odp_bool_t ODP_DEPRECATE(loop_supported);
+
+   /** Maximum MTU size supported */
+   uint32_t max_mtu_size;
 } odp_pktio_capability_t;
 
 /**
@@ -910,6 +916,21 @@ int odp_pktout_send(odp_pktout_queue_t queue, const 
odp_packet_t packets[],
 uint32_t odp_pktio_mtu(odp_pktio_t pktio);
 
 /**
+ * Set MTU value of a packet IO interface.
+ *
+ * Application should pass value upto max_mtu_size as indicated by
+ * odp_pktio_capability_t:max_mtu_size. Any value beyond max_mtu_size
+ * limit will result in failure. mtu value < 68 also results in failure.
+ *
+ * @param pktio  Packet IO handle.
+ * @param mtuMTU value to be set.
+ *
+ * @return  0 on success
+ * @retval <0 on failure
+ */
+int odp_pktio_mtu_set(odp_pktio_t pktio, uint32_t mtu);
+
+/**
  * Enable/Disable promiscuous mode on a packet IO interface.
  *
  * @param[in] pktioPacket IO handle.
-- 
1.9.3



[lng-odp] [PATCH API-NEXT v1 0/1] api:pktio: Adds MTU set function.

2017-08-08 Thread Vamsi Attunuru
Existing pktio API has only support of querying MTU values.
Adds new pktio API to set MTU on pktio interface. Implementation can
indicate it's supported maximum MTU size in its pktio capabilities.
User can call set API to set value within allowed range as indicated
by pktio capabilities.

As per the review comments on patch "[PATCH API-NEXT v1 1/1] api:pktio:
add MAC address and MTU set functions." 

MTU set changes are separated out and versioned as v1.

MAC address set changes will be the incremental patch on previous patches. 

Vamsi Attunuru (1):
  pktio API to set MTU size.

 include/odp/api/spec/packet_io.h | 21 +
 1 file changed, 21 insertions(+)

-- 
1.9.3



[lng-odp] [PATCH API-NEXT v2 0/1] api:pktio: Adds MTU set function

2017-08-29 Thread Vamsi Attunuru
As per the review comments on patch "[PATCH API-NEXT v1 1/1] api:pktio:
 Adds MTU set function."

omitted odp_pktio_mtu_set() API that was defined for setting mtu size.
With current patch, mtu set can be pursued as part of odp_pktio_config().


Vamsi Attunuru (1):
  Remove odp_pktio_mtu_set() API. 
  Move mtu set changes to odp_pktio_config() API.

 include/odp/api/spec/packet_io.h | 43 +---
 1 file changed, 23 insertions(+), 20 deletions(-)

-- 
1.9.3



[lng-odp] [PATCH API-NEXT v2 1/1] api:pktio: Adds MTU set function.

2017-08-29 Thread Vamsi Attunuru
Signed-off-by: Vamsi Attunuru <vattun...@cavium.com>
Signed-off-by: Shally Verma <sve...@cavium.com>
Signed-off-by: Mahipal Challa <mcha...@cavium.com>

---
 include/odp/api/spec/packet_io.h | 43 +---
 1 file changed, 23 insertions(+), 20 deletions(-)

diff --git a/include/odp/api/spec/packet_io.h b/include/odp/api/spec/packet_io.h
index be81c3d..c372a2a 100644
--- a/include/odp/api/spec/packet_io.h
+++ b/include/odp/api/spec/packet_io.h
@@ -440,6 +440,29 @@ typedef struct odp_pktio_config_t {
 */
odp_bool_t outbound_ipsec;
 
+   /** MTU size of the pktio interface.
+*
+* It's the frame size which the pktio can transmit without 
fragmentation.
+* And it does not count L2 header bytes, FCS and VLAN tag bytes.
+*
+* pktio interface must be able to send and receive packets up to
+* this MTU size successfully. Trying to send or receive packets larger
+* than these MTU results in undefined behavior.
+*
+* By default, pktio is configured with max support MTU size.
+*
+* Max supported MTU can be read through these parameter
+* as part of odp_pktio_capability() routine.
+*
+* MTU can be modified by passing valid odp_pktio_config_t:mtu_size 
value
+* as part of odp_pktio_config() routine.
+*
+* Valid MTU value should be greater than 0 and less than or equal to 
the
+* value get through odp_pktio_capability(),
+* i.e. 0 < mtu_size <= capability provided mtu value.
+*/
+   uint32_t mtu_size;
+
 } odp_pktio_config_t;
 
 /**
@@ -452,9 +475,6 @@ typedef union odp_pktio_set_op_t {
struct {
/** Promiscuous mode */
uint32_t promisc_mode : 1;
-
-   /** Allow app to set MTU size */
-   uint32_t mtu_set : 1;
} op;
/** All bits of the bit field structure.
  * This field can be used to set/clear all flags, or bitwise
@@ -484,8 +504,6 @@ typedef struct odp_pktio_capability_t {
/** @deprecated Use enable_loop inside odp_pktin_config_t */
odp_bool_t ODP_DEPRECATE(loop_supported);
 
-   /** Maximum MTU size supported */
-   uint32_t max_mtu_size;
 } odp_pktio_capability_t;
 
 /**
@@ -916,21 +934,6 @@ int odp_pktout_send(odp_pktout_queue_t queue, const 
odp_packet_t packets[],
 uint32_t odp_pktio_mtu(odp_pktio_t pktio);
 
 /**
- * Set MTU value of a packet IO interface.
- *
- * Application should pass value upto max_mtu_size as indicated by
- * odp_pktio_capability_t:max_mtu_size. Any value beyond max_mtu_size
- * limit will result in failure. mtu value < 68 also results in failure.
- *
- * @param pktio  Packet IO handle.
- * @param mtuMTU value to be set.
- *
- * @return  0 on success
- * @retval <0 on failure
- */
-int odp_pktio_mtu_set(odp_pktio_t pktio, uint32_t mtu);
-
-/**
  * Enable/Disable promiscuous mode on a packet IO interface.
  *
  * @param[in] pktioPacket IO handle.
-- 
1.9.3