2015-10-20 14:20, Simon K?gstr?m: > Hi! > > What is the unit of the tx_rate parameter to the > rte_eth_set_queue_rate_limit function? It's documented as > > /** > * Set the rate limitation for a queue on an Ethernet device. > * > * @param port_id > * The port identifier of the Ethernet device. > * @param queue_idx > * The queue id. > * @param tx_rate > * The tx rate allocated from the total link speed for this queue. > * @return > * - (0) if successful. > * - (-ENOTSUP) if hardware doesn't support this feature. > * - (-ENODEV) if *port_id* invalid. > * - (-EINVAL) if bad parameter. > */ > int rte_eth_set_queue_rate_limit(uint8_t port_id, uint16_t queue_idx, > uint16_t tx_rate); > > I parse this as meaning a percentage of total link speed, i.e., on a 10 > Gbps link, 50 would mean 5Gbps, 10 means 1Gbps etc. Is this correct?
It's implemented only in ixgbe: /* Calculate the rate factor values to set */ rf_int = (uint32_t)link_speed / (uint32_t)tx_rate; rf_dec = (uint32_t)link_speed % (uint32_t)tx_rate; rf_dec = (rf_dec << IXGBE_RTTBCNRC_RF_INT_SHIFT) / tx_rate; bcnrc_val = IXGBE_RTTBCNRC_RS_ENA; bcnrc_val |= ((rf_int << IXGBE_RTTBCNRC_RF_INT_SHIFT) & IXGBE_RTTBCNRC_RF_INT_MASK_M); bcnrc_val |= (rf_dec & IXGBE_RTTBCNRC_RF_DEC_MASK); So you just need to check the datasheet and send a patch to make it clear :) Thanks