net/ixgbe: fix DCB Rx buffer size on X540 and E610
PATCH 1/1 net/ixgbe: fix DCB Rx buffer size on X540 and E610
DCB programs RXPBSIZE from a hardcoded total, 384 KB for X550 and 512 KB for every other MAC. The base driver records 384 KB in hw->mac.rx_pb_size for X540, and E610 inherits that through the X540 init ops. X540 and E610 reset also write 384 KB.
Use hw->mac.rx_pb_size for the split, including the PFC watermarks derived from it. 82598, 82599 and X550 are unchanged.
--- drivers/net/intel/ixgbe/ixgbe_rxtx.c | 27 ++++----------------------- 1 file changed, 4 insertions(+), 23 deletions(-)
drivers/net/intel/ixgbe/ixgbe_rxtx.c +4 -23
@@ -3835,8 +3835,6 @@ ixgbe_rss_configure(struct rte_eth_dev *dev) }#define NUM_VFTA_REGISTERS 128 -#define NIC_RX_BUFFER_SIZE 0x200 -#define X550_RX_BUFFER_SIZE 0x180static void ixgbe_vmdq_dcb_configure (struct rte_eth_dev *dev)
@@ -3863,18 +3861,10 @@ ixgbe_vmdq_dcb_configure(struct rte_eth_dev *dev)/* * RXPBSIZE -* split rx buffer up into sections, each for 1 traffic class +* Split the MAC Rx packet buffer equally across traffic classes. +* hw->mac.rx_pb_size is the total size in KB. */ -switch (hw->mac.type) { -case ixgbe_mac_X550: -case ixgbe_mac_X550EM_x: -case ixgbe_mac_X550EM_a: - pbsize = (uint16_t )(X550_RX_BUFFER_SIZE / nb_tcs); -break ; -default : - pbsize = (uint16_t )(NIC_RX_BUFFER_SIZE / nb_tcs); -break ; - } + pbsize = (uint16_t )(hw->mac.rx_pb_size / nb_tcs);for (i =0 ; i < nb_tcs; i++) {uint32_t rxpbsize =IXGBE_READ_REG (hw,IXGBE_RXPBSIZE (i));
@@ -4394,16 +4384,7 @@ ixgbe_dcb_hw_configure(struct rte_eth_dev *dev, } } -switch (hw->mac.type) { -case ixgbe_mac_X550: -case ixgbe_mac_X550EM_x: -case ixgbe_mac_X550EM_a: - rx_buffer_size =X550_RX_BUFFER_SIZE ; -break ; -default : - rx_buffer_size =NIC_RX_BUFFER_SIZE ; -break ; - } + rx_buffer_size = (uint16_t )hw->mac.rx_pb_size;if (config_dcb_rx) {/* Set RX buffer size */
Signature · 1 line
2.53.0
Quoted 8 lines · Zhang Tengfei
DCB programs RXPBSIZE from a hardcoded total, 384 KB for X550 and 512 KB for every other MAC. The base driver records 384 KB in
hw->mac.rx_pb_sizefor X540, and E610 inherits that through the X540 init ops. X540 and E610 reset also write 384 KB.Use
hw->mac.rx_pb_sizefor the split, including the PFC watermarks derived from it. 82598, 82599 and X550 are unchanged.
Quoted 9 lines
Fixes b7fcd13c90a3 ("ixgbe: fix X550 DCB")Fixes 316637762a5f ("net/ixgbe/base: enable E610 device")Signed-off-by Zhang Tengfei <[email protected]>--- drivers/net/intel/ixgbe/ixgbe_rxtx.c | 27 ++++----------------------- 1 file changed, 4 insertions(+), 23 deletions(-)
Applied to dpdk-next-net-intel. Thanks.
I've also squashed patch [1] into this commit, so that we have your name correctly reported in .mailmap for this, and that check-git-log script doesn't complain. Any issues with me doing so, please let me know.
Thanks,
/Bruce
[1] https://patches.dpdk.org/project/dpdk/patch/[email protected]/
Quoted 56 lines
drivers/net/intel/ixgbe/ixgbe_rxtx.c +4
-23@@ -3835,8 +3835,6 @@ ixgbe_rss_configure(struct rte_eth_dev *dev) }#define NUM_VFTA_REGISTERS 128 -#define NIC_RX_BUFFER_SIZE 0x200 -#define X550_RX_BUFFER_SIZE 0x180static void ixgbe_vmdq_dcb_configure (struct rte_eth_dev *dev)@@ -3863,18 +3861,10 @@ ixgbe_vmdq_dcb_configure(struct rte_eth_dev *dev)/* * RXPBSIZE -* split rx buffer up into sections, each for 1 traffic class +* Split the MAC Rx packet buffer equally across traffic classes. +* hw->mac.rx_pb_size is the total size in KB. */ -switch (hw->mac.type) { -case ixgbe_mac_X550: -case ixgbe_mac_X550EM_x: -case ixgbe_mac_X550EM_a: - pbsize = (uint16_t )(X550_RX_BUFFER_SIZE / nb_tcs); -break ; -default : - pbsize = (uint16_t )(NIC_RX_BUFFER_SIZE / nb_tcs); -break ; - } + pbsize = (uint16_t )(hw->mac.rx_pb_size / nb_tcs);for (i =0 ; i < nb_tcs; i++) {uint32_t rxpbsize =IXGBE_READ_REG (hw,IXGBE_RXPBSIZE (i));@@ -4394,16 +4384,7 @@ ixgbe_dcb_hw_configure(struct rte_eth_dev *dev, } } -switch (hw->mac.type) { -case ixgbe_mac_X550: -case ixgbe_mac_X550EM_x: -case ixgbe_mac_X550EM_a: - rx_buffer_size =X550_RX_BUFFER_SIZE ; -break ; -default : - rx_buffer_size =NIC_RX_BUFFER_SIZE ; -break ; - } + rx_buffer_size = (uint16_t )hw->mac.rx_pb_size;if (config_dcb_rx) {/* Set RX buffer size */ Signature · 1 line
2.53.0