On 8/17/2017 10:08 AM, Jiayu Hu wrote: > The GRO library provides two reassembly modes: lightweight mode and > heavyweight mode. This patch is to support the heavyweight mode in > csum forwarding engine. > > With the command "set port <port_id> gro (heavymode|lightmode) (on|off)", > users can select the lightweight mode or the heavyweight mode to use. With > the command "set gro flush interval <num>", users can set the interval of > flushing GROed packets from reassembly tables for the heavyweight mode. > With the command "show port <port_id> gro", users can display GRO > configuration. > > Signed-off-by: Jiayu Hu <jiayu...@intel.com>
<...> > lcoreid_t cpuid_idx; /**< index of logical core in CPU id table */ > @@ -434,13 +436,21 @@ extern struct ether_addr > peer_eth_addrs[RTE_MAX_ETHPORTS]; > extern uint32_t burst_tx_delay_time; /**< Burst tx delay time(us) for > mac-retry. */ > extern uint32_t burst_tx_retry_num; /**< Burst tx retry number for > mac-retry. */ > > +#define GRO_HEAVYMODE 0x1 > +#define GRO_LIGHTMODE 0x2 Why these are not part of the gro library? Is the concept "lightweight mode and heavyweight mode" part of gro library or implemented only in testpmd? > + > #define GRO_DEFAULT_FLOW_NUM 4 > #define GRO_DEFAULT_ITEM_NUM_PER_FLOW DEF_PKT_BURST > + > +#define GRO_DEFAULT_FLUSH_INTERVAL 2 > +#define GRO_MAX_FLUSH_INTERVAL 4 > + > struct gro_status { > struct rte_gro_param param; > uint8_t enable; > }; > extern struct gro_status gro_ports[RTE_MAX_ETHPORTS]; > +extern uint32_t gro_flush_interval; <...>