Bus Drivers
-----------
+NXP buses
+M: Hemant Agrawal <hemant.agrawal@nxp.com>
+M: Shreyansh Jain <shreyansh.jain@nxp.com>
+F: drivers/bus/dpaa/
+F: drivers/bus/fslmc/
+
PCI bus driver
F: drivers/bus/pci/
NXP dpaa
M: Hemant Agrawal <hemant.agrawal@nxp.com>
M: Shreyansh Jain <shreyansh.jain@nxp.com>
-F: drivers/bus/dpaa/
F: drivers/mempool/dpaa/
F: drivers/net/dpaa/
F: doc/guides/nics/dpaa.rst
NXP dpaa2
M: Hemant Agrawal <hemant.agrawal@nxp.com>
M: Shreyansh Jain <shreyansh.jain@nxp.com>
-F: drivers/bus/fslmc/
F: drivers/mempool/dpaa2/
F: drivers/net/dpaa2/
F: doc/guides/nics/dpaa2.rst
.. _figure_gso-output-segment-format:
-.. figure:: img/gso-output-segment-format.svg
+.. figure:: img/gso-output-segment-format.*
:align: center
Two-part GSO output segment
.. _figure_gso-three-seg-mbuf:
-.. figure:: img/gso-three-seg-mbuf.svg
+.. figure:: img/gso-three-seg-mbuf.*
:align: center
Three-part GSO output segment
Target release for removal of the legacy API will be defined once most
PMDs have switched to rte_flow.
+* i40e: The default flexible payload configuration which extracts the first 16
+ bytes of the payload for RSS will be deprecated starting from 18.02. If
+ required the previous behavior can be configured using existing flow
+ director APIs. There is no ABI/API break. This change will just remove a
+ global configuration setting and require explicit configuration.
+
* librte_meter: The API will change to accommodate configuration profiles.
Most of the API functions will have an additional opaque parameter.
librte_acl.so.2
+ librte_bitratestats.so.2
+ + librte_bus_dpaa.so.1
+ + librte_bus_fslmc.so.1
+ + librte_bus_pci.so.1
+ librte_bus_vdev.so.1
librte_cfgfile.so.2
librte_cmdline.so.2
flow->queues = (uint16_t (*)[])(flow + 1);
memcpy(flow->queues, parser.queues, parser.queues_n * sizeof(uint16_t));
flow->queues_n = parser.queues_n;
+ flow->mark = parser.mark;
/* Copy RSS configuration. */
flow->rss_conf = parser.rss_conf;
flow->rss_conf.rss_key = flow->rss_key;
if (memcmp(spec, flow_spec,
RTE_MIN(attr_h->size, flow_h->size)))
goto wrong_flow;
- spec = (void *)((uintptr_t)attr + attr_h->size);
- flow_spec = (void *)((uintptr_t)flow_attr +
+ spec = (void *)((uintptr_t)spec + attr_h->size);
+ flow_spec = (void *)((uintptr_t)flow_spec +
flow_h->size);
}
/* At this point, the flow match. */
0,
};
ds = 1;
+#ifdef MLX5_PMD_SOFT_COUNTERS
total_length = 0;
+#endif
k++;
goto next_wqe;
}
if (rx_conf->rx_thresh.pthresh != 0 ||
rx_conf->rx_thresh.hthresh != 0 ||
rx_conf->rx_thresh.wthresh != 0) {
- sfc_err(sa,
+ sfc_warn(sa,
"RxQ prefetch/host/writeback thresholds are not supported");
- rc = EINVAL;
}
if (rx_conf->rx_free_thresh > rx_free_thresh_max) {
if (tx_conf->tx_thresh.pthresh != 0 ||
tx_conf->tx_thresh.hthresh != 0 ||
tx_conf->tx_thresh.wthresh != 0) {
- sfc_err(sa,
+ sfc_warn(sa,
"prefetch/host/writeback thresholds are not supported");
- rc = EINVAL;
}
if (((flags & ETH_TXQ_FLAGS_NOMULTSEGS) == 0) &&
/**
* Extra string to be appended to version number
*/
-#define RTE_VER_SUFFIX "-rc"
+#define RTE_VER_SUFFIX ""
/**
* Patch release number
* 0-15 = release candidates
* 16 = release
*/
-#define RTE_VER_RELEASE 4
+#define RTE_VER_RELEASE 16
/**
* Macro to compute a version number usable for comparisons
rte_mbuf_sanity_check(const struct rte_mbuf *m, int is_header)
{
const struct rte_mbuf *m_seg;
- unsigned nb_segs;
+ unsigned int nb_segs;
if (m == NULL)
rte_panic("mbuf is NULL\n");
rte_pktmbuf_dump(FILE *f, const struct rte_mbuf *m, unsigned dump_len)
{
unsigned int len;
- unsigned nb_segs;
+ unsigned int nb_segs;
__rte_mbuf_sanity_check(m, 1);
} __rte_cache_aligned;
+/**< Maximum number of nb_segs allowed. */
+#define RTE_MBUF_MAX_NB_SEGS UINT16_MAX
+
/**
* Prefetch the first part of the mbuf
*
{
struct rte_mbuf *mc, *mi, **prev;
uint32_t pktlen;
- uint8_t nseg;
+ uint16_t nseg;
if (unlikely ((mc = rte_pktmbuf_alloc(mp)) == NULL))
return NULL;
*
* @return
* - 0, on success.
- * - -EOVERFLOW, if the chain is full (256 entries)
+ * - -EOVERFLOW, if the chain segment limit exceeded
*/
static inline int rte_pktmbuf_chain(struct rte_mbuf *head, struct rte_mbuf *tail)
{
struct rte_mbuf *cur_tail;
/* Check for number-of-segments-overflow */
- if (head->nb_segs + tail->nb_segs >= 1 << (sizeof(head->nb_segs) * 8))
+ if (head->nb_segs + tail->nb_segs > RTE_MBUF_MAX_NB_SEGS)
return -EOVERFLOW;
/* Chain 'tail' onto the old tail */
cur_tail->next = tail;
/* accumulate number of segments and total length. */
- head->nb_segs = (uint8_t)(head->nb_segs + tail->nb_segs);
+ head->nb_segs += tail->nb_segs;
head->pkt_len += tail->pkt_len;
/* pkt_len is only set in the head */
{
struct rte_mbuf *m_dup, *seg, **prev;
uint32_t pktlen;
- uint8_t nseg;
+ uint16_t nseg;
m_dup = rte_pktmbuf_alloc(mp);
if (unlikely(m_dup == NULL))
&port);
if (ret < 0) {
RTE_LOG(ERR, PDUMP,
- "failed to get potid for device id=%s\n",
+ "failed to get port id for device id=%s\n",
p->data.en_v1.device);
return -EINVAL;
}
&port);
if (ret < 0) {
RTE_LOG(ERR, PDUMP,
- "failed to get potid for device id=%s\n",
+ "failed to get port id for device id=%s\n",
p->data.dis_v1.device);
return -EINVAL;
}
# OF THE POSSIBILITY OF SUCH DAMAGE.
Name: dpdk
-Version: 17.08
+Version: 17.11
Release: 1
Packager: packaging@6wind.com
URL: http://dpdk.org