[PATCH] net/bonding: fix mbuf fast free usage

Min Hu (Connor) humin29 at huawei.com
Wed May 25 03:11:24 CEST 2022


Thanks Ferruh,
	v2 has been sent.

在 2022/5/24 21:43, Ferruh Yigit 写道:
> On 5/21/2022 8:08 AM, Min Hu (Connor) wrote:
>> [CAUTION: External Email]
>>
>> Usage of 'RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE' offload has two
>> constraints: per-queue all mbufs comes from the same mempool and
>> has refcnt = 1.
>>
>> Bonding mode Broadcast, Tx mbuf has more than one refcnt.
>> Bonding mode 8023AD, It contains two mempools separately for LACP
>> packets and other packets. In Tx or Rx, Fast mbuf free will operate
>> mbuf from different mempool.
>>
>> This patch will prevent 'RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE' offload
>> when in bonding mode Broadcast and mode 8023AD.
>>
> 
> Hi Connor,
> 
> Please find a few syntax comment below, rest lgtm.
> 
>> Fixes: 78aecefed955 ("bond: move param parsing in configure step")
>> Cc: stable at dpdk.org
>>
>> Signed-off-by: Min Hu (Connor) <humin29 at huawei.com>
>> ---
>>   drivers/net/bonding/rte_eth_bond_pmd.c | 10 ++++++++++
>>   1 file changed, 10 insertions(+)
>>
>> diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c 
>> b/drivers/net/bonding/rte_eth_bond_pmd.c
>> index c929b55768..5ca90c7590 100644
>> --- a/drivers/net/bonding/rte_eth_bond_pmd.c
>> +++ b/drivers/net/bonding/rte_eth_bond_pmd.c
>> @@ -3563,6 +3563,7 @@ bond_ethdev_configure(struct rte_eth_dev *dev)
>>          const char *name = dev->device->name;
>>          struct bond_dev_private *internals = dev->data->dev_private;
>>          struct rte_kvargs *kvlist = internals->kvlist;
>> +       uint64_t offloads;
>>          int arg_count;
>>          uint16_t port_id = dev - rte_eth_devices;
>>          uint8_t agg_mode;
>> @@ -3613,6 +3614,15 @@ bond_ethdev_configure(struct rte_eth_dev *dev)
>>                  }
>>          }
>>
>> +       offloads = dev->data->dev_conf.txmode.offloads;
>> +       if ((offloads & RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE) &&
>> +               (internals->mode == BONDING_MODE_8023AD ||
>> +               internals->mode == BONDING_MODE_BROADCAST)) {
> 
> Can you indent above two lines one more tab, to differentiate them from 
> content of the if block.
> 
>> +               RTE_BOND_LOG(WARNING, "BOND MODE Broadcast & 8023AD 
>> don't support MBUF_FAST_FREE offload, force disable it.");
> 
> - Why "BOND MODE" is uppercase, if there is no special reason for it, I 
> suggest using lower case.
> 
> - Can you break the message to next line, this enables shorter line 
> without breaking the message:
> RTE_BOND_LOG(WARNING,
>      "BOND MODE Broadcast & 8023AD don't support ....
> 
>> +               offloads &= ~RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE;
>> +               dev->data->dev_conf.txmode.offloads = offloads;
>> +       }
>> +
>>          /* set the max_rx_pktlen */
>>          internals->max_rx_pktlen = internals->candidate_max_rx_pktlen;
>>
>> -- 
>> 2.33.0
>>
> 
> .


More information about the stable mailing list