On 19 July 2017 at 01:13, Bill Fischofer <bill.fischo...@linaro.org> wrote:

>
>
> On Tue, Jul 18, 2017 at 2:42 PM, Maxim Uvarov <maxim.uva...@linaro.org>
> wrote:
>
>> On 07/18/17 21:24, Bill Fischofer wrote:
>> >
>> >
>> > On Tue, Jul 18, 2017 at 11:52 AM, Maxim Uvarov <maxim.uva...@linaro.org
>> > <mailto:maxim.uva...@linaro.org>> wrote:
>> >
>> >     On 07/18/17 19:20, Bill Fischofer wrote:
>> >     > As agreed during today's ODP Public call:
>> >     >
>> >     > APIs for MTU capability and setting OK. Applications should
>> remember that
>> >     > in most cases they will not be authorized to set the MTU since
>> this relates
>> >     > to physical properties of the interface.
>> >     >
>> >     > odp_pktio_capability() should report number of mac addrs
>> supported in
>> >     > addition to whether they are settable.
>> >     >
>> >     > odp_pktio_mac_addr_set() should take index value of which addr to
>> set
>> >     >
>> >     > For compatibility may be better to leave odp_pktio_mac_addr() as
>> is and by
>> >     > implication it retrieves mac addr 0. New API
>> odp_pktio_mac_addr_get() can
>> >     > support explicit index.
>> >     >
>> >     > API patch can be merged separately but we still need reference
>> >     > implementation, validation test suite and documentation updates
>> to make
>> >     > this eligible for release.
>> >     >
>> >
>> >     indexes might be not very multi hardware friendly.
>> >     I think we can do something similar to switchdev functions. Take a
>> look
>> >     at kernel:
>> >     switchdev_port_fdb_add()
>> >     switchdev_port_fdb_del()
>> >     switchdev_port_fdb_dump()
>> >
>> >
>> > I'm not quite sure why you think this may be the case. All we're saying
>> > is that a pktio is a logical interface that supports 1 or more MAC
>> > addresses that are indexed (per-pktio) from 0. How a given index gets
>> > mapped to HW resources that may be behind a pktio object is
>> > implementation-dependent. So this is really no different than a pktio
>> > device supporting multiple pktin or pktout queues, which are similarly
>> > indexed.
>> >
>>
>> I assume that in many cases pktio can have hw switch under it. To accept
>> packets you need to learn switch with mac addresses which it can
>> bypass. That is regarding unicast and multicast. For example your
>> unicast mac is 1:2:3:4:5:6 but you also want to get broadcasts for
>> example ptp 01:1B:19:00:00:00 and for example STP 01:80:C2:00:00:00 and
>> if it's ipv4 then you need to subscribe to ipv4 multicasts
>> 01:00:5E:00:00:00. So if hardware allows - you can load that macs into
>> it. That's looks like a valid use case and no need to switch to
>> promiscuous mode.
>>
>
> One of the use-cases for ODP is the ODP app itself is a switch, so each
> pktio object is just a port on that switch. But yes, the main use case for
> multiple MAC addrs is for finer-grained control than putting the pktio into
> promiscuous mode.
>
>
>>
>> I assume that ports on some chips can be switched to learning mode. In
>> that case they will fill their fdbs in hardware without software assist.
>> And mapping them to software is not that case. Btw how does application
>> will use that index? I think index is useless and add(), remove(),
>> dump() is enough. One use case might be it's different pktio queues or
>> index injected to packet header for more quick decision where to route
>> that packet. So I would add less restrictions until there is real use
>> case for that.
>>
>
> If the pktio has populated its MAC addresses independent of the ODP app,
> then the app would get those by reading them with odp_pktio_mac_addr_get().
> Without an index, how would you replace one MAC addr without disturbing any
> of the others?
>

by value?

del(1:2:3:4:5:6)
add(1:2:3:4:5:7)



>
>
>>
>> Maxim.
>>
>> >
>> >
>> >     https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/li
>> nux.git/tree/net/switchdev/switchdev.c?h=v4.13-rc1
>> >     <https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/l
>> inux.git/tree/net/switchdev/switchdev.c?h=v4.13-rc1>
>> >
>> >     Maxim.
>> >
>> >     >
>> >     > On Mon, Jul 17, 2017 at 3:09 AM, Bogdan Pricope
>> >     <bogdan.pric...@linaro.org <mailto:bogdan.pric...@linaro.org>>
>> >     > wrote:
>> >     >
>> >     >> Hi,
>> >     >>
>> >     >> In DPDK case, default MTU is 1500:
>> >     >>
>> >     >> /*
>> >     >>  * Set the default MTU.
>> >     >>  */
>> >     >> eth_dev->data->mtu = ETHER_MTU;
>> >     >>
>> >     >>
>> >     >> where:
>> >     >>
>> >     >> #define ETHER_MTU       \
>> >     >>
>> >     >>             (ETHER_MAX_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN) /**<
>> >     >> Ethernet MTU. */
>> >     >>
>> >     >>
>> >     >> So, if you need to jumbo, you have to set MTU yourself (I guess
>> dpdk
>> >     >> will not send the frames otherwise):
>> >     >>
>> >     >> rte_eth_dev_set_mtu(pktio_entry->s.pkt_dpdk.portid,
>> JUMBO_MTU_VALUE);
>> >     >>
>> >     >> So, it depends on how underneath SDK is working …
>> >     >>
>> >     >>
>> >     >> BR,
>> >     >> Bogdan
>> >     >>
>> >     >> On 14 July 2017 at 21:53, Bill Fischofer
>> >     <bill.fischo...@linaro.org <mailto:bill.fischo...@linaro.org>>
>> >     >> wrote:
>> >     >>>
>> >     >>>
>> >     >>> On Fri, Jul 14, 2017 at 10:09 AM, Peltonen, Janne (Nokia -
>> FI/Espoo)
>> >     >>> <janne.pelto...@nokia.com <mailto:janne.pelto...@nokia.com>>
>> wrote:
>> >     >>>>
>> >     >>>> Hi,
>> >     >>>>
>> >     >>>>
>> >     >>>>
>> >     >>>> I think MAC addresses and MTU are a bit different.
>> >     >>>>
>> >     >>>>
>> >     >>>>
>> >     >>>> There are valid use cases for application wanting to set the
>> MAC
>> >     >> address,
>> >     >>>> even dynamically. For instance, with VRRP one wants to receive
>> >     packets
>> >     >>>> destined to a VRRP MAC address in addition to the fixed MAC
>> >     address of a
>> >     >>>> port. The possibility of configuring multiple MAC addresses
>> >     (for the
>> >     >> purpose
>> >     >>>> of RX frame filtering) to the same port and changing them
>> >     dynamically
>> >     >> would
>> >     >>>> be useful to some apps.
>> >     >>>>
>> >     >>>> The physical MTU of a port is more like a capability, the
>> >     maximum that
>> >     >> the
>> >     >>>> port can do. The ODP application can then use any frame sizes
>> >     it wants,
>> >     >> up
>> >     >>>> to the maximum size, without configuring anything to ODP. e.g.
>> >     IP layer
>> >     >> MTUs
>> >     >>>> can be maintained by an IP stack application while the physical
>> >     MTU at
>> >     >> ODP
>> >     >>>> level stays at the fixed maximum. An application does not have
>> >     a need to
>> >     >>>> tell ODP that the maximum frame size should be limited, but an
>> ODP
>> >     >>>> implementation might conceivably wish to get such information
>> >     from the
>> >     >>>> application or from elsewhere if supporting big frames (i.e.
>> >     enabling
>> >     >> jumbo
>> >     >>>> frames) involves some costs that the ODP implementation would
>> >     rather
>> >     >> avoid
>> >     >>>> if the application does not really need big frames.
>> >     >>>>
>> >     >>>>
>> >     >>>>
>> >     >>>> Even if MTU configuration is not added in ODP API, it is useful
>> >     to be
>> >     >> able
>> >     >>>> to query the maximum physical MTU of a port as that can vary
>> >     also among
>> >     >> HW
>> >     >>>> that supports pretty big frame sizes. The meaning of the
>> >     returned MTU
>> >     >> value
>> >     >>>> (i.e. which bytes are counted) should be clarified.
>> >     >>>
>> >     >>>
>> >     >>> I agree with this, however the historical reason for MTU was
>> >     hardware
>> >     >>> limits. When a driver transmits a packet, the physical MAC
>> >     stores the
>> >     >> bytes
>> >     >>> of this packet in a FIFO (hardware registers) as the bits are
>> >     clocked
>> >     >>> through the PHY layer. Historically these registers were
>> costly, so
>> >     >>> minimizing them was important to meet needed price points.
>> Today, as
>> >     >> silicon
>> >     >>> prices have fallen dramatically and even low-end processors have
>> >     >>> multi-megabyte caches, there's little cost reasons for such low
>> >     physical
>> >     >>> limits. Moreover, at 10Gb and above speeds, you don't want to be
>> >     filling
>> >     >> the
>> >     >>> pipe with IPG and framing bits, so larger packet sizes are
>> >     inherently
>> >     >> more
>> >     >>> efficient. The result is that it's very difficult to fine a NIC
>> >     in any
>> >     >>> modern system that doesn't support jumbo frames, so the utility
>> of
>> >     >> setting
>> >     >>> the MTU to anything other than 9K (especially for link speeds of
>> >     >> interest to
>> >     >>> ODP applications) is questionable.
>> >     >>>
>> >     >>>>
>> >     >>>>
>> >     >>>>
>> >     >>>>                              Janne
>> >     >>>>
>> >     >>>>
>> >     >>>>
>> >     >>>>
>> >     >>>>
>> >     >>>> From: Bill Fischofer [mailto:bill.fischo...@linaro.org
>> >     <mailto:bill.fischo...@linaro.org>]
>> >     >>>> Sent: Friday, July 14, 2017 5:39 PM
>> >     >>>> To: Bogdan Pricope <bogdan.pric...@linaro.org
>> >     <mailto:bogdan.pric...@linaro.org>>; Petri Savolainen
>> >     >>>> <petri.savolai...@linaro.org <mailto:petri.savolainen@linar
>> o.org>>
>> >     >>>> Cc: Narayana Prasad Athreya <pathr...@caviumnetworks.com
>> >     <mailto:pathr...@caviumnetworks.com>>; Peltonen,
>> >     >> Janne
>> >     >>>> (Nokia - FI/Espoo) <janne.pelto...@nokia.com
>> >     <mailto:janne.pelto...@nokia.com>>; mcha...@cavium.com
>> >     <mailto:mcha...@cavium.com>;
>> >     >>>> lng-odp@lists.linaro.org <mailto:lng-odp@lists.linaro.org>;
>> >     pathr...@cavium.com <mailto:pathr...@cavium.com>;
>> >     vattun...@cavium.com <mailto:vattun...@cavium.com>;
>> >     >>>> sve...@cavium.com <mailto:sve...@cavium.com>
>> >     >>>> Subject: Re: [lng-odp] [API-NEXT PATCH v1 1/1] pktio APIs to
>> >     set the MAC
>> >     >>>> address and MTU size.
>> >     >>>>
>> >     >>>>
>> >     >>>>
>> >     >>>>
>> >     >>>>
>> >     >>>>
>> >     >>>>
>> >     >>>> On Fri, Jul 14, 2017 at 9:11 AM, Bogdan Pricope
>> >     >>>> <bogdan.pric...@linaro.org <mailto:bogdan.pric...@linaro.org>>
>> >     wrote:
>> >     >>>>
>> >     >>>> Hi,
>> >     >>>>
>> >     >>>> I think we need both MTU and MAC address to be settable from
>> ODP.
>> >     >>>>
>> >     >>>> In OFP, at some point I was considering using tap pktio instead
>> >     of ofp
>> >     >>>> tap interface for slow path processing - not being able to set
>> MAC
>> >     >>>> address was A problem.
>> >     >>>> What about DHCP by MAC address? Maybe there are systems where
>> >     >>>> predefined MAC address is a requirement... don't know...
>> >     >>>>
>> >     >>>> MTU: what if default value is not 9K but something else?
>> >     >>>>
>> >     >>>>
>> >     >>>>
>> >     >>>> I'll add this to the agenda for Monday's ARCH call. If Petri
>> >     (+cc) wants
>> >     >>>> to chime in before he leaves for vacation we'll take that input
>> >     as well.
>> >     >>>>
>> >     >>>>
>> >     >>>>
>> >     >>>>
>> >     >>>> BR,
>> >     >>>> Bogdan
>> >     >>>>
>> >     >>>>
>> >     >>>> On 14 July 2017 at 16:41, Narayana Prasad Athreya
>> >     >>>> <pathr...@caviumnetworks.com
>> >     <mailto:pathr...@caviumnetworks.com>> wrote:
>> >     >>>>> Hi Bill
>> >     >>>>>     The reasons below dont jive with what ODP does today. If
>> the
>> >     >>>>> routines
>> >     >>>>> odp_pktio_mtu() and odp_pktio_mac_addr() exist today. They
>> >     assume that
>> >     >>>>> MTU
>> >     >>>>> can be configured and returned to the datapath. As an
>> application
>> >     >>>>> developer,
>> >     >>>>> it does make sense for me to use 2 different paths to talk to
>> >     the same
>> >     >>>>> underlying device for the same setting - one path for
>> >     configuring and
>> >     >>>>> one
>> >     >>>>> for reading the configuration.
>> >     >>>>>
>> >     >>>>> So from this standpoint the ODP should either support both get
>> >     and set
>> >     >>>>> routines or not support either of them.
>> >     >>>>>
>> >     >>>>> On the control-plane vs data-plane debate, again as an
>> application
>> >     >>>>> developer, my integrated application will need access to the
>> >     >> underlying
>> >     >>>>> device for both control and data. If i am forced to right
>> separate
>> >     >> code
>> >     >>>>> and
>> >     >>>>> potentially drivers for 2 paths, where is my incentive to use
>> >     ODP API,
>> >     >>>>> because anyway i'm losing portability.
>> >     >>>>>
>> >     >>>>> Thanks
>> >     >>>>> Prasad
>> >     >>>>>
>> >     >>>>> On Friday 14 July 2017 06:33 PM, Bill Fischofer wrote:
>> >     >>>>>>
>> >     >>>>>>
>> >     >>>>>>
>> >     >>>>>> On Fri, Jul 14, 2017 at 6:05 AM, Peltonen, Janne (Nokia -
>> >     FI/Espoo)
>> >     >>>>
>> >     >>>>>> <janne.pelto...@nokia.com <mailto:janne.pelto...@nokia.com>
>> >     <mailto:janne.pelto...@nokia.com <mailto:janne.pelto...@nokia.com
>> >>>
>> >     wrote:
>> >     >>>>>>
>> >     >>>>>>     Hi,
>> >     >>>>>>
>> >     >>>>>>     ODP API should somewhere define what exactly MTU means
>> in the
>> >     >>>>>>     context of ODP.
>> >     >>>>>>
>> >     >>>>>>     One can guess that transmission and reception of L2
>> >     frames larger
>> >     >>>>>>     than the
>> >     >>>>>>     configured MTU is not guaranteed to succeed, but which
>> >     bytes are
>> >     >>>>>>     taken into
>> >     >>>>>>     account? For instance, is Ethernet FCS counted towards
>> >     the MTU?
>> >     >>>>>>
>> >     >>>>>>
>> >     >>>>>> We've had this discussion before. The whole concept of MTU is
>> >     a bit
>> >     >> of
>> >     >>>>>> an
>> >     >>>>>> anachronism from the early days of Ethernet. At speeds ODP is
>> >     >> designed
>> >     >>>>>> for
>> >     >>>>>> (10Gb and above) all equipment should be running with jumbo
>> >     frames
>> >     >> (MTU
>> >     >>>>>> =
>> >     >>>>>> 9K). All equipment capable of running at these speeds is
>> >     capable of
>> >     >>>>>> this
>> >     >>>>>> size, and 9K is the recommended default MTU for this
>> >     equipment. So
>> >     >>>>>> there's
>> >     >>>>>> really nothing one should need to control or change here.
>> >     >>>>>>
>> >     >>>>>> It would be interesting to understand the use case that is
>> >     driving
>> >     >> the
>> >     >>>>>> desire to be able to set MTU.
>> >     >>>>>>
>> >     >>>>>> The other consideration is that setting MTU (or MAC address)
>> is a
>> >     >>>>>> control
>> >     >>>>>> plane function, not a data plane function. Just as the
>> >     control plane
>> >     >>>>>> tells
>> >     >>>>>> the data plane which interfaces to use, the control plane is
>> >     >>>>>> responsible for
>> >     >>>>>> this type of configuration, as well as managing and
>> responding to
>> >     >>>>>> configuration changes. So again, it would be good to
>> >     understand the
>> >     >> use
>> >     >>>>>> case
>> >     >>>>>> behind wanting to change these values in the data plane.
>> >     >>>>>>
>> >     >>>>>>
>> >     >>>>>>             Janne
>> >     >>>>>>
>> >     >>>>>>
>> >     >>>>>>     > -----Original Message-----
>> >     >>>>>>     > From: lng-odp [mailto:lng-odp-boun...@lists.linaro.org
>> >     <mailto:lng-odp-boun...@lists.linaro.org>
>> >     >>>>>>     <mailto:lng-odp-boun...@lists.linaro.org
>> >     <mailto:lng-odp-boun...@lists.linaro.org>>] On Behalf Of Vamsi
>> >     >>>>>> Attunuru
>> >     >>>>>>     > Sent: Friday, July 14, 2017 1:05 PM
>> >     >>>>
>> >     >>>>>>     > To: lng-odp@lists.linaro.org
>> >     <mailto:lng-odp@lists.linaro.org> <mailto:lng-odp@lists.linaro.org
>> >     <mailto:lng-odp@lists.linaro.org>>
>> >     >>>>>>     > Cc: mcha...@cavium.com <mailto:mcha...@cavium.com>
>> >     <mailto:mcha...@cavium.com <mailto:mcha...@cavium.com>>;
>> >     >>>>>>     pathr...@cavium.com <mailto:pathr...@cavium.com>
>> >     <mailto:pathr...@cavium.com <mailto:pathr...@cavium.com>>;
>> >     >>>>>>     vattun...@cavium.com <mailto:vattun...@cavium.com>
>> >     <mailto:vattun...@cavium.com <mailto:vattun...@cavium.com>>;
>> >     >>>>>>     sve...@cavium.com <mailto:sve...@cavium.com>
>> >     <mailto:sve...@cavium.com <mailto:sve...@cavium.com>>
>> >     >>>>>>     > Subject: [lng-odp] [API-NEXT PATCH v1 1/1] pktio APIs
>> >     to set
>> >     >> the
>> >     >>>>>>     MAC address and MTU size.
>> >     >>>>>>     >
>> >     >>>>>>     > Adds new pktio APIs to set MTU and MAC address on pktio
>> >     >>>>>> interface.
>> >     >>>>>>     >
>> >     >>>>>>     > Signed-off-by: Vamsi Attunuru <vattun...@cavium.com
>> >     <mailto:vattun...@cavium.com>
>> >     >>>>>>     <mailto:vattun...@cavium.com <mailto:
>> vattun...@cavium.com>>>
>> >     >>>>>>     > Signed-off-by: Mahipal Challa <mcha...@cavium.com
>> >     <mailto:mcha...@cavium.com>
>> >     >>>>>>     <mailto:mcha...@cavium.com <mailto:mcha...@cavium.com>>>
>> >     >>>>>>     > Signed-off-by: Shally Verma   <sve...@cavium.com
>> >     <mailto:sve...@cavium.com>
>> >     >>>>>>     <mailto:sve...@cavium.com <mailto: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_que
>> ue_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 mtu    MTU 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] pktio  Packet IO handle.
>> >     >>>>>>     > @@ -946,6 +971,26 @@ int odp_pktio_promisc_mode(odp_pkt
>> io_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 pktio        Packet 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
>> >     >>>>>>
>> >     >>>>>>
>> >     >>>>>
>> >     >>>>
>> >     >>>>
>> >     >>>
>> >     >>>
>> >     >>
>> >
>> >
>>
>>
>

Reply via email to