[v2,2/2] app/testpmd: add queue based pfc CLI options
Checks
Commit Message
From: Sunil Kumar Kori <skori@marvell.com>
Patch adds command line options to configure queue based
priority flow control.
- Syntax command is given as below:
set pfc_queue_ctrl <port_id> rx <on|off> <tx_qid> <tx_tc> \
tx <on|off> <rx_qid> <rx_tc> <pause_time>
- Example command to configure queue based priority flow control
on rx and tx side for port 0, Rx queue 0, Tx queue 0 with pause
time 2047
testpmd> set pfc_queue_ctrl 0 rx on 0 0 tx on 0 0 2047
Signed-off-by: Sunil Kumar Kori <skori@marvell.com>
---
app/test-pmd/cmdline.c | 122 ++++++++++++++++++++
doc/guides/testpmd_app_ug/testpmd_funcs.rst | 22 ++++
2 files changed, 144 insertions(+)
Comments
On 1/13/2022 10:27 AM, jerinj@marvell.com wrote:
> From: Sunil Kumar Kori <skori@marvell.com>
>
> Patch adds command line options to configure queue based
> priority flow control.
>
> - Syntax command is given as below:
>
> set pfc_queue_ctrl <port_id> rx <on|off> <tx_qid> <tx_tc> \
> tx <on|off> <rx_qid> <rx_tc> <pause_time>
>
Isn't the order of the paramters odd, it is mixing Rx/Tx config,
what about ordering Rx and Tx paramters?
> - Example command to configure queue based priority flow control
> on rx and tx side for port 0, Rx queue 0, Tx queue 0 with pause
> time 2047
>
> testpmd> set pfc_queue_ctrl 0 rx on 0 0 tx on 0 0 2047
>
> Signed-off-by: Sunil Kumar Kori <skori@marvell.com>
<...>
>-----Original Message-----
>From: Ferruh Yigit <ferruh.yigit@intel.com>
>Sent: Tuesday, January 25, 2022 11:07 PM
>To: Jerin Jacob Kollanukkaran <jerinj@marvell.com>; dev@dpdk.org; Xiaoyun
>Li <xiaoyun.li@intel.com>; Aman Singh <aman.deep.singh@intel.com>; Yuying
>Zhang <yuying.zhang@intel.com>
>Cc: thomas@monjalon.net; ajit.khaparde@broadcom.com;
>aboyer@pensando.io; andrew.rybchenko@oktetlabs.ru;
>beilei.xing@intel.com; bruce.richardson@intel.com; chas3@att.com;
>chenbo.xia@intel.com; ciara.loftus@intel.com; Devendra Singh Rawat
><dsinghrawat@marvell.com>; ed.czeck@atomicrules.com;
>evgenys@amazon.com; grive@u256.net; g.singh@nxp.com;
>zhouguoyang@huawei.com; haiyue.wang@intel.com; Harman Kalra
><hkalra@marvell.com>; heinrich.kuhn@corigine.com;
>hemant.agrawal@nxp.com; hyonkim@cisco.com; igorch@amazon.com; Igor
>Russkikh <irusskikh@marvell.com>; jgrajcia@cisco.com;
>jasvinder.singh@intel.com; jianwang@trustnetic.com;
>jiawenwu@trustnetic.com; jingjing.wu@intel.com; johndale@cisco.com;
>john.miller@atomicrules.com; linville@tuxdriver.com; keith.wiles@intel.com;
>Kiran Kumar Kokkilagadda <kirankumark@marvell.com>;
>oulijun@huawei.com; Liron Himi <lironh@marvell.com>;
>longli@microsoft.com; mw@semihalf.com; spinler@cesnet.cz;
>matan@nvidia.com; matt.peters@windriver.com;
>maxime.coquelin@redhat.com; mk@semihalf.com; humin29@huawei.com;
>Pradeep Kumar Nalla <pnalla@marvell.com>; Nithin Kumar Dabilpuram
><ndabilpuram@marvell.com>; qiming.yang@intel.com; qi.z.zhang@intel.com;
>Radha Chintakuntla <radhac@marvell.com>; rahul.lakkireddy@chelsio.com;
>Rasesh Mody <rmody@marvell.com>; rosen.xu@intel.com;
>sachin.saxena@oss.nxp.com; Satha Koteswara Rao Kottidi
><skoteshwar@marvell.com>; Shahed Shaikh <shshaikh@marvell.com>;
>shaibran@amazon.com; shepard.siegel@atomicrules.com;
>asomalap@amd.com; somnath.kotur@broadcom.com;
>sthemmin@microsoft.com; steven.webster@windriver.com; Sunil Kumar Kori
><skori@marvell.com>; mtetsuyah@gmail.com; Veerasenareddy Burru
><vburru@marvell.com>; viacheslavo@nvidia.com; xiao.w.wang@intel.com;
>cloud.wangxiaoyun@huawei.com; yisen.zhuang@huawei.com;
>yongwang@vmware.com; xuanziyang2@huawei.com
>Subject: [EXT] Re: [dpdk-dev] [PATCH v2 2/2] app/testpmd: add queue based
>pfc CLI options
>
>External Email
>
>----------------------------------------------------------------------
>On 1/13/2022 10:27 AM, jerinj@marvell.com wrote:
>> From: Sunil Kumar Kori <skori@marvell.com>
>>
>> Patch adds command line options to configure queue based priority flow
>> control.
>>
>> - Syntax command is given as below:
>>
>> set pfc_queue_ctrl <port_id> rx <on|off> <tx_qid> <tx_tc> \
>> tx <on|off> <rx_qid> <rx_tc> <pause_time>
>>
>
>Isn't the order of the paramters odd, it is mixing Rx/Tx config, what about
>ordering Rx and Tx paramters?
>
It's been kept like this to portray config for rx_pause and tx_pause separately i.e. mode and corresponding config.
>> - Example command to configure queue based priority flow control
>> on rx and tx side for port 0, Rx queue 0, Tx queue 0 with pause
>> time 2047
>>
>> testpmd> set pfc_queue_ctrl 0 rx on 0 0 tx on 0 0 2047
>>
>> Signed-off-by: Sunil Kumar Kori <skori@marvell.com>
>
><...>
On 1/27/2022 7:13 AM, Sunil Kumar Kori wrote:
>
>> -----Original Message-----
>> From: Ferruh Yigit <ferruh.yigit@intel.com>
>> Sent: Tuesday, January 25, 2022 11:07 PM
>> To: Jerin Jacob Kollanukkaran <jerinj@marvell.com>; dev@dpdk.org; Xiaoyun
>> Li <xiaoyun.li@intel.com>; Aman Singh <aman.deep.singh@intel.com>; Yuying
>> Zhang <yuying.zhang@intel.com>
>> Cc: thomas@monjalon.net; ajit.khaparde@broadcom.com;
>> aboyer@pensando.io; andrew.rybchenko@oktetlabs.ru;
>> beilei.xing@intel.com; bruce.richardson@intel.com; chas3@att.com;
>> chenbo.xia@intel.com; ciara.loftus@intel.com; Devendra Singh Rawat
>> <dsinghrawat@marvell.com>; ed.czeck@atomicrules.com;
>> evgenys@amazon.com; grive@u256.net; g.singh@nxp.com;
>> zhouguoyang@huawei.com; haiyue.wang@intel.com; Harman Kalra
>> <hkalra@marvell.com>; heinrich.kuhn@corigine.com;
>> hemant.agrawal@nxp.com; hyonkim@cisco.com; igorch@amazon.com; Igor
>> Russkikh <irusskikh@marvell.com>; jgrajcia@cisco.com;
>> jasvinder.singh@intel.com; jianwang@trustnetic.com;
>> jiawenwu@trustnetic.com; jingjing.wu@intel.com; johndale@cisco.com;
>> john.miller@atomicrules.com; linville@tuxdriver.com; keith.wiles@intel.com;
>> Kiran Kumar Kokkilagadda <kirankumark@marvell.com>;
>> oulijun@huawei.com; Liron Himi <lironh@marvell.com>;
>> longli@microsoft.com; mw@semihalf.com; spinler@cesnet.cz;
>> matan@nvidia.com; matt.peters@windriver.com;
>> maxime.coquelin@redhat.com; mk@semihalf.com; humin29@huawei.com;
>> Pradeep Kumar Nalla <pnalla@marvell.com>; Nithin Kumar Dabilpuram
>> <ndabilpuram@marvell.com>; qiming.yang@intel.com; qi.z.zhang@intel.com;
>> Radha Chintakuntla <radhac@marvell.com>; rahul.lakkireddy@chelsio.com;
>> Rasesh Mody <rmody@marvell.com>; rosen.xu@intel.com;
>> sachin.saxena@oss.nxp.com; Satha Koteswara Rao Kottidi
>> <skoteshwar@marvell.com>; Shahed Shaikh <shshaikh@marvell.com>;
>> shaibran@amazon.com; shepard.siegel@atomicrules.com;
>> asomalap@amd.com; somnath.kotur@broadcom.com;
>> sthemmin@microsoft.com; steven.webster@windriver.com; Sunil Kumar Kori
>> <skori@marvell.com>; mtetsuyah@gmail.com; Veerasenareddy Burru
>> <vburru@marvell.com>; viacheslavo@nvidia.com; xiao.w.wang@intel.com;
>> cloud.wangxiaoyun@huawei.com; yisen.zhuang@huawei.com;
>> yongwang@vmware.com; xuanziyang2@huawei.com
>> Subject: [EXT] Re: [dpdk-dev] [PATCH v2 2/2] app/testpmd: add queue based
>> pfc CLI options
>>
>> External Email
>>
>> ----------------------------------------------------------------------
>> On 1/13/2022 10:27 AM, jerinj@marvell.com wrote:
>>> From: Sunil Kumar Kori <skori@marvell.com>
>>>
>>> Patch adds command line options to configure queue based priority flow
>>> control.
>>>
>>> - Syntax command is given as below:
>>>
>>> set pfc_queue_ctrl <port_id> rx <on|off> <tx_qid> <tx_tc> \
>>> tx <on|off> <rx_qid> <rx_tc> <pause_time>
>>>
>>
>> Isn't the order of the paramters odd, it is mixing Rx/Tx config, what about
>> ordering Rx and Tx paramters?
>>
> It's been kept like this to portray config for rx_pause and tx_pause separately i.e. mode and corresponding config.
>
What do you mean 'separately'? You need to provide all arguments anyway, right?
I was thinking first have the Rx arguments, later Tx, like:
rx <on|off> <rx_qid> <rx_tc> tx <on|off> <tx_qid> <tx_tc> <pause_time>
Am I missing something, is there a benefit of what you did in this patch?
>>> - Example command to configure queue based priority flow control
>>> on rx and tx side for port 0, Rx queue 0, Tx queue 0 with pause
>>> time 2047
>>>
>>> testpmd> set pfc_queue_ctrl 0 rx on 0 0 tx on 0 0 2047
>>>
>>> Signed-off-by: Sunil Kumar Kori <skori@marvell.com>
>>
>> <...>
On Thu, Jan 27, 2022 at 2:40 AM Ferruh Yigit <ferruh.yigit@intel.com> wrote:
>
> On 1/27/2022 7:13 AM, Sunil Kumar Kori wrote:
> >
> >> -----Original Message-----
> >> From: Ferruh Yigit <ferruh.yigit@intel.com>
> >> Sent: Tuesday, January 25, 2022 11:07 PM
> >> To: Jerin Jacob Kollanukkaran <jerinj@marvell.com>; dev@dpdk.org; Xiaoyun
> >> Li <xiaoyun.li@intel.com>; Aman Singh <aman.deep.singh@intel.com>; Yuying
> >> Zhang <yuying.zhang@intel.com>
> >> Cc: thomas@monjalon.net; ajit.khaparde@broadcom.com;
> >> aboyer@pensando.io; andrew.rybchenko@oktetlabs.ru;
> >> beilei.xing@intel.com; bruce.richardson@intel.com; chas3@att.com;
> >> chenbo.xia@intel.com; ciara.loftus@intel.com; Devendra Singh Rawat
> >> <dsinghrawat@marvell.com>; ed.czeck@atomicrules.com;
> >> evgenys@amazon.com; grive@u256.net; g.singh@nxp.com;
> >> zhouguoyang@huawei.com; haiyue.wang@intel.com; Harman Kalra
> >> <hkalra@marvell.com>; heinrich.kuhn@corigine.com;
> >> hemant.agrawal@nxp.com; hyonkim@cisco.com; igorch@amazon.com; Igor
> >> Russkikh <irusskikh@marvell.com>; jgrajcia@cisco.com;
> >> jasvinder.singh@intel.com; jianwang@trustnetic.com;
> >> jiawenwu@trustnetic.com; jingjing.wu@intel.com; johndale@cisco.com;
> >> john.miller@atomicrules.com; linville@tuxdriver.com; keith.wiles@intel.com;
> >> Kiran Kumar Kokkilagadda <kirankumark@marvell.com>;
> >> oulijun@huawei.com; Liron Himi <lironh@marvell.com>;
> >> longli@microsoft.com; mw@semihalf.com; spinler@cesnet.cz;
> >> matan@nvidia.com; matt.peters@windriver.com;
> >> maxime.coquelin@redhat.com; mk@semihalf.com; humin29@huawei.com;
> >> Pradeep Kumar Nalla <pnalla@marvell.com>; Nithin Kumar Dabilpuram
> >> <ndabilpuram@marvell.com>; qiming.yang@intel.com; qi.z.zhang@intel.com;
> >> Radha Chintakuntla <radhac@marvell.com>; rahul.lakkireddy@chelsio.com;
> >> Rasesh Mody <rmody@marvell.com>; rosen.xu@intel.com;
> >> sachin.saxena@oss.nxp.com; Satha Koteswara Rao Kottidi
> >> <skoteshwar@marvell.com>; Shahed Shaikh <shshaikh@marvell.com>;
> >> shaibran@amazon.com; shepard.siegel@atomicrules.com;
> >> asomalap@amd.com; somnath.kotur@broadcom.com;
> >> sthemmin@microsoft.com; steven.webster@windriver.com; Sunil Kumar Kori
> >> <skori@marvell.com>; mtetsuyah@gmail.com; Veerasenareddy Burru
> >> <vburru@marvell.com>; viacheslavo@nvidia.com; xiao.w.wang@intel.com;
> >> cloud.wangxiaoyun@huawei.com; yisen.zhuang@huawei.com;
> >> yongwang@vmware.com; xuanziyang2@huawei.com
> >> Subject: [EXT] Re: [dpdk-dev] [PATCH v2 2/2] app/testpmd: add queue based
> >> pfc CLI options
> >>
> >> External Email
> >>
> >> ----------------------------------------------------------------------
> >> On 1/13/2022 10:27 AM, jerinj@marvell.com wrote:
> >>> From: Sunil Kumar Kori <skori@marvell.com>
> >>>
> >>> Patch adds command line options to configure queue based priority flow
> >>> control.
> >>>
> >>> - Syntax command is given as below:
> >>>
> >>> set pfc_queue_ctrl <port_id> rx <on|off> <tx_qid> <tx_tc> \
> >>> tx <on|off> <rx_qid> <rx_tc> <pause_time>
> >>>
> >>
> >> Isn't the order of the paramters odd, it is mixing Rx/Tx config, what about
> >> ordering Rx and Tx paramters?
> >>
> > It's been kept like this to portray config for rx_pause and tx_pause separately i.e. mode and corresponding config.
> >
>
> What do you mean 'separately'? You need to provide all arguments anyway, right?
>
> I was thinking first have the Rx arguments, later Tx, like:
>
> rx <on|off> <rx_qid> <rx_tc> tx <on|off> <tx_qid> <tx_tc> <pause_time>
I think this grouping is better.
>
> Am I missing something, is there a benefit of what you did in this patch?
>
> >>> - Example command to configure queue based priority flow control
> >>> on rx and tx side for port 0, Rx queue 0, Tx queue 0 with pause
> >>> time 2047
> >>>
> >>> testpmd> set pfc_queue_ctrl 0 rx on 0 0 tx on 0 0 2047
> >>>
> >>> Signed-off-by: Sunil Kumar Kori <skori@marvell.com>
> >>
> >> <...>
>
-----Original Message-----
From: Ajit Khaparde <ajit.khaparde@broadcom.com>
Sent: Thursday, January 27, 2022 10:27 PM
To: Ferruh Yigit <ferruh.yigit@intel.com>
Cc: Sunil Kumar Kori <skori@marvell.com>; Jerin Jacob Kollanukkaran <jerinj@marvell.com>; dev@dpdk.org; Xiaoyun Li <xiaoyun.li@intel.com>; Aman Singh <aman.deep.singh@intel.com>; Yuying Zhang <yuying.zhang@intel.com>; thomas@monjalon.net; aboyer@pensando.io; andrew.rybchenko@oktetlabs.ru; beilei.xing@intel.com; bruce.richardson@intel.com; chas3@att.com; chenbo.xia@intel.com; ciara.loftus@intel.com; Devendra Singh Rawat <dsinghrawat@marvell.com>; ed.czeck@atomicrules.com; evgenys@amazon.com; grive@u256.net; g.singh@nxp.com; zhouguoyang@huawei.com; haiyue.wang@intel.com; Harman Kalra <hkalra@marvell.com>; heinrich.kuhn@corigine.com; hemant.agrawal@nxp.com; hyonkim@cisco.com; igorch@amazon.com; Igor Russkikh <irusskikh@marvell.com>; jgrajcia@cisco.com; jasvinder.singh@intel.com; jianwang@trustnetic.com; jiawenwu@trustnetic.com; jingjing.wu@intel.com; johndale@cisco.com; john.miller@atomicrules.com; linville@tuxdriver.com; keith.wiles@intel.com; Kiran Kumar Kokkilagadda <kirankumark@marvell.com>; oulijun@huawei.com; Liron Himi <lironh@marvell.com>; longli@microsoft.com; mw@semihalf.com; spinler@cesnet.cz; matan@nvidia.com; matt.peters@windriver.com; maxime.coquelin@redhat.com; mk@semihalf.com; humin29@huawei.com; Pradeep Kumar Nalla <pnalla@marvell.com>; Nithin Kumar Dabilpuram <ndabilpuram@marvell.com>; qiming.yang@intel.com; qi.z.zhang@intel.com; Radha Chintakuntla <radhac@marvell.com>; rahul.lakkireddy@chelsio.com; Rasesh Mody <rmody@marvell.com>; rosen.xu@intel.com; sachin.saxena@oss.nxp.com; Satha Koteswara Rao Kottidi <skoteshwar@marvell.com>; Shahed Shaikh <shshaikh@marvell.com>; shaibran@amazon.com; shepard.siegel@atomicrules.com; asomalap@amd.com; somnath.kotur@broadcom.com; sthemmin@microsoft.com; steven.webster@windriver.com; mtetsuyah@gmail.com; Veerasenareddy Burru <vburru@marvell.com>; viacheslavo@nvidia.com; xiao.w.wang@intel.com; cloud.wangxiaoyun@huawei.com; yisen.zhuang@huawei.com; yongwang@vmware.com; xuanziyang2@huawei.com
Subject: Re: [EXT] Re: [dpdk-dev] [PATCH v2 2/2] app/testpmd: add queue based pfc CLI options
On Thu, Jan 27, 2022 at 2:40 AM Ferruh Yigit <ferruh.yigit@intel.com> wrote:
>
> On 1/27/2022 7:13 AM, Sunil Kumar Kori wrote:
> >
> >> -----Original Message-----
> >> From: Ferruh Yigit <ferruh.yigit@intel.com>
> >> Sent: Tuesday, January 25, 2022 11:07 PM
> >> To: Jerin Jacob Kollanukkaran <jerinj@marvell.com>; dev@dpdk.org;
> >> Xiaoyun Li <xiaoyun.li@intel.com>; Aman Singh
> >> <aman.deep.singh@intel.com>; Yuying Zhang <yuying.zhang@intel.com>
> >> Cc: thomas@monjalon.net; ajit.khaparde@broadcom.com;
> >> aboyer@pensando.io; andrew.rybchenko@oktetlabs.ru;
> >> beilei.xing@intel.com; bruce.richardson@intel.com; chas3@att.com;
> >> chenbo.xia@intel.com; ciara.loftus@intel.com; Devendra Singh Rawat
> >> <dsinghrawat@marvell.com>; ed.czeck@atomicrules.com;
> >> evgenys@amazon.com; grive@u256.net; g.singh@nxp.com;
> >> zhouguoyang@huawei.com; haiyue.wang@intel.com; Harman Kalra
> >> <hkalra@marvell.com>; heinrich.kuhn@corigine.com;
> >> hemant.agrawal@nxp.com; hyonkim@cisco.com; igorch@amazon.com; Igor
> >> Russkikh <irusskikh@marvell.com>; jgrajcia@cisco.com;
> >> jasvinder.singh@intel.com; jianwang@trustnetic.com;
> >> jiawenwu@trustnetic.com; jingjing.wu@intel.com; johndale@cisco.com;
> >> john.miller@atomicrules.com; linville@tuxdriver.com;
> >> keith.wiles@intel.com; Kiran Kumar Kokkilagadda
> >> <kirankumark@marvell.com>; oulijun@huawei.com; Liron Himi
> >> <lironh@marvell.com>; longli@microsoft.com; mw@semihalf.com;
> >> spinler@cesnet.cz; matan@nvidia.com; matt.peters@windriver.com;
> >> maxime.coquelin@redhat.com; mk@semihalf.com; humin29@huawei.com;
> >> Pradeep Kumar Nalla <pnalla@marvell.com>; Nithin Kumar Dabilpuram
> >> <ndabilpuram@marvell.com>; qiming.yang@intel.com;
> >> qi.z.zhang@intel.com; Radha Chintakuntla <radhac@marvell.com>;
> >> rahul.lakkireddy@chelsio.com; Rasesh Mody <rmody@marvell.com>;
> >> rosen.xu@intel.com; sachin.saxena@oss.nxp.com; Satha Koteswara Rao
> >> Kottidi <skoteshwar@marvell.com>; Shahed Shaikh
> >> <shshaikh@marvell.com>; shaibran@amazon.com;
> >> shepard.siegel@atomicrules.com; asomalap@amd.com;
> >> somnath.kotur@broadcom.com; sthemmin@microsoft.com;
> >> steven.webster@windriver.com; Sunil Kumar Kori <skori@marvell.com>;
> >> mtetsuyah@gmail.com; Veerasenareddy Burru <vburru@marvell.com>;
> >> viacheslavo@nvidia.com; xiao.w.wang@intel.com;
> >> cloud.wangxiaoyun@huawei.com; yisen.zhuang@huawei.com;
> >> yongwang@vmware.com; xuanziyang2@huawei.com
> >> Subject: [EXT] Re: [dpdk-dev] [PATCH v2 2/2] app/testpmd: add queue
> >> based pfc CLI options
> >>
> >> External Email
> >>
> >> -------------------------------------------------------------------
> >> --- On 1/13/2022 10:27 AM, jerinj@marvell.com wrote:
> >>> From: Sunil Kumar Kori <skori@marvell.com>
> >>>
> >>> Patch adds command line options to configure queue based priority
> >>> flow control.
> >>>
> >>> - Syntax command is given as below:
> >>>
> >>> set pfc_queue_ctrl <port_id> rx <on|off> <tx_qid> <tx_tc> \
> >>> tx <on|off> <rx_qid> <rx_tc> <pause_time>
> >>>
> >>
> >> Isn't the order of the paramters odd, it is mixing Rx/Tx config,
> >> what about ordering Rx and Tx paramters?
> >>
> > It's been kept like this to portray config for rx_pause and tx_pause separately i.e. mode and corresponding config.
> >
>
> What do you mean 'separately'? You need to provide all arguments anyway, right?
>
> I was thinking first have the Rx arguments, later Tx, like:
>
> rx <on|off> <rx_qid> <rx_tc> tx <on|off> <tx_qid> <tx_tc> <pause_time>
I think this grouping is better.
>
> Am I missing something, is there a benefit of what you did in this patch?
Mentioned syntax takes input as per below config structure:
struct rte_eth_pfc_queue_conf {
enum rte_eth_fc_mode mode; /**< Link flow control mode */
struct {
uint16_t tx_qid; /**< Tx queue ID */
uint8_t tc; /**< Traffic class as per PFC (802.1Qbb) spec */
} rx_pause; /* Valid when (mode == FC_RX_PAUSE || mode == FC_FULL) */
struct {
uint16_t pause_time; /**< Pause quota in the Pause frame */
uint16_t rx_qid; /**< Rx queue ID */
uint8_t tc; /**< Traffic class as per PFC (802.1Qbb) spec */
} tx_pause; /* Valid when (mode == FC_TX_PAUSE || mode == FC_FULL) */
};
First part represent first structure information and later part represent second structure information.
For the next version, I am keeping this syntax as it is and will be fixing some ethdev changes.
>
> >>> - Example command to configure queue based priority flow control
> >>> on rx and tx side for port 0, Rx queue 0, Tx queue 0 with pause
> >>> time 2047
> >>>
> >>> testpmd> set pfc_queue_ctrl 0 rx on 0 0 tx on 0 0 2047
> >>>
> >>> Signed-off-by: Sunil Kumar Kori <skori@marvell.com>
> >>
> >> <...>
>
@@ -544,6 +544,11 @@ static void cmd_help_long_parsed(void *parsed_result,
" Set the priority flow control parameter on a"
" port.\n\n"
+ "set pfc_queue_ctrl (port_id) rx (on|off) (tx_qid)"
+ " (tx_tc) tx (on|off) (rx_qid) (rx_tc) (pause_time)\n"
+ " Set the queue priority flow control parameter on a"
+ " given Rx and Tx queues of a port.\n\n"
+
"set stat_qmap (tx|rx) (port_id) (queue_id) (qmapping)\n"
" Set statistics mapping (qmapping 0..15) for RX/TX"
" queue on port.\n"
@@ -7690,6 +7695,122 @@ cmdline_parse_inst_t cmd_priority_flow_control_set = {
},
};
+struct cmd_queue_priority_flow_ctrl_set_result {
+ cmdline_fixed_string_t set;
+ cmdline_fixed_string_t pfc_queue_ctrl;
+ portid_t port_id;
+ cmdline_fixed_string_t rx;
+ cmdline_fixed_string_t rx_pfc_mode;
+ uint16_t tx_qid;
+ uint8_t tx_tc;
+ cmdline_fixed_string_t tx;
+ cmdline_fixed_string_t tx_pfc_mode;
+ uint16_t rx_qid;
+ uint8_t rx_tc;
+ uint16_t pause_time;
+};
+
+static void
+cmd_queue_priority_flow_ctrl_set_parsed(void *parsed_result,
+ __rte_unused struct cmdline *cl,
+ __rte_unused void *data)
+{
+ struct cmd_queue_priority_flow_ctrl_set_result *res = parsed_result;
+ struct rte_eth_pfc_queue_conf pfc_queue_conf;
+ int rx_fc_enable, tx_fc_enable;
+ int ret;
+
+ /*
+ * Rx on/off, flow control is enabled/disabled on RX side. This can
+ * indicate the RTE_ETH_FC_TX_PAUSE, Transmit pause frame at the Rx
+ * side. Tx on/off, flow control is enabled/disabled on TX side. This
+ * can indicate the RTE_ETH_FC_RX_PAUSE, Respond to the pause frame at
+ * the Tx side.
+ */
+ static enum rte_eth_fc_mode rx_tx_onoff_2_mode[2][2] = {
+ {RTE_ETH_FC_NONE, RTE_ETH_FC_TX_PAUSE},
+ {RTE_ETH_FC_RX_PAUSE, RTE_ETH_FC_FULL}
+ };
+
+ memset(&pfc_queue_conf, 0, sizeof(struct rte_eth_pfc_queue_conf));
+ rx_fc_enable = (!strncmp(res->rx_pfc_mode, "on", 2)) ? 1 : 0;
+ tx_fc_enable = (!strncmp(res->tx_pfc_mode, "on", 2)) ? 1 : 0;
+ pfc_queue_conf.mode = rx_tx_onoff_2_mode[rx_fc_enable][tx_fc_enable];
+ pfc_queue_conf.rx_pause.tc = res->tx_tc;
+ pfc_queue_conf.rx_pause.tx_qid = res->tx_qid;
+ pfc_queue_conf.tx_pause.tc = res->rx_tc;
+ pfc_queue_conf.tx_pause.rx_qid = res->rx_qid;
+ pfc_queue_conf.tx_pause.pause_time = res->pause_time;
+
+ ret = rte_eth_dev_priority_flow_ctrl_queue_set(res->port_id,
+ &pfc_queue_conf);
+ if (ret != 0) {
+ fprintf(stderr,
+ "bad queue priority flow control parameter, rc = %d\n",
+ ret);
+ }
+}
+
+cmdline_parse_token_string_t cmd_q_pfc_set_set =
+ TOKEN_STRING_INITIALIZER(struct cmd_queue_priority_flow_ctrl_set_result,
+ set, "set");
+cmdline_parse_token_string_t cmd_q_pfc_set_flow_ctrl =
+ TOKEN_STRING_INITIALIZER(struct cmd_queue_priority_flow_ctrl_set_result,
+ pfc_queue_ctrl, "pfc_queue_ctrl");
+cmdline_parse_token_num_t cmd_q_pfc_set_portid =
+ TOKEN_NUM_INITIALIZER(struct cmd_queue_priority_flow_ctrl_set_result,
+ port_id, RTE_UINT16);
+cmdline_parse_token_string_t cmd_q_pfc_set_rx =
+ TOKEN_STRING_INITIALIZER(struct cmd_queue_priority_flow_ctrl_set_result,
+ rx, "rx");
+cmdline_parse_token_string_t cmd_q_pfc_set_rx_mode =
+ TOKEN_STRING_INITIALIZER(struct cmd_queue_priority_flow_ctrl_set_result,
+ rx_pfc_mode, "on#off");
+cmdline_parse_token_num_t cmd_q_pfc_set_tx_qid =
+ TOKEN_NUM_INITIALIZER(struct cmd_queue_priority_flow_ctrl_set_result,
+ tx_qid, RTE_UINT16);
+cmdline_parse_token_num_t cmd_q_pfc_set_tx_tc =
+ TOKEN_NUM_INITIALIZER(struct cmd_queue_priority_flow_ctrl_set_result,
+ tx_tc, RTE_UINT8);
+cmdline_parse_token_string_t cmd_q_pfc_set_tx =
+ TOKEN_STRING_INITIALIZER(struct cmd_queue_priority_flow_ctrl_set_result,
+ tx, "tx");
+cmdline_parse_token_string_t cmd_q_pfc_set_tx_mode =
+ TOKEN_STRING_INITIALIZER(struct cmd_queue_priority_flow_ctrl_set_result,
+ tx_pfc_mode, "on#off");
+cmdline_parse_token_num_t cmd_q_pfc_set_rx_qid =
+ TOKEN_NUM_INITIALIZER(struct cmd_queue_priority_flow_ctrl_set_result,
+ rx_qid, RTE_UINT16);
+cmdline_parse_token_num_t cmd_q_pfc_set_rx_tc =
+ TOKEN_NUM_INITIALIZER(struct cmd_queue_priority_flow_ctrl_set_result,
+ rx_tc, RTE_UINT8);
+cmdline_parse_token_num_t cmd_q_pfc_set_pause_time =
+ TOKEN_NUM_INITIALIZER(struct cmd_queue_priority_flow_ctrl_set_result,
+ pause_time, RTE_UINT16);
+
+cmdline_parse_inst_t cmd_queue_priority_flow_control_set = {
+ .f = cmd_queue_priority_flow_ctrl_set_parsed,
+ .data = NULL,
+ .help_str = "set pfc_queue_ctrl <port_id> rx <on|off> <tx_qid> <tx_tc> "
+ "tx <on|off> <rx_qid> <rx_tc> <pause_time>: "
+ "Configure the Ethernet queue priority flow control",
+ .tokens = {
+ (void *)&cmd_q_pfc_set_set,
+ (void *)&cmd_q_pfc_set_flow_ctrl,
+ (void *)&cmd_q_pfc_set_portid,
+ (void *)&cmd_q_pfc_set_rx,
+ (void *)&cmd_q_pfc_set_rx_mode,
+ (void *)&cmd_q_pfc_set_tx_qid,
+ (void *)&cmd_q_pfc_set_tx_tc,
+ (void *)&cmd_q_pfc_set_tx,
+ (void *)&cmd_q_pfc_set_tx_mode,
+ (void *)&cmd_q_pfc_set_rx_qid,
+ (void *)&cmd_q_pfc_set_rx_tc,
+ (void *)&cmd_q_pfc_set_pause_time,
+ NULL,
+ },
+};
+
/* *** RESET CONFIGURATION *** */
struct cmd_reset_result {
cmdline_fixed_string_t reset;
@@ -17765,6 +17886,7 @@ cmdline_parse_ctx_t main_ctx[] = {
(cmdline_parse_inst_t *)&cmd_link_flow_control_set_autoneg,
(cmdline_parse_inst_t *)&cmd_link_flow_control_show,
(cmdline_parse_inst_t *)&cmd_priority_flow_control_set,
+ (cmdline_parse_inst_t *)&cmd_queue_priority_flow_control_set,
(cmdline_parse_inst_t *)&cmd_config_dcb,
(cmdline_parse_inst_t *)&cmd_read_reg,
(cmdline_parse_inst_t *)&cmd_read_reg_bit_field,
@@ -1561,6 +1561,28 @@ Where:
* ``priority`` (0-7): VLAN User Priority.
+set pfc_queue_ctrl
+~~~~~~~~~~~~~~~~~~
+
+Set the priority flow control parameter on a given Rx and Tx queue of a port::
+
+ testpmd> set pfc_queue_ctrl <port_id> rx (on|off) <tx_qid> <tx_tc> \
+ tx (on|off) <rx_qid> <rx_tc> <pause_time>
+
+Where:
+
+* ``tx_qid`` (integer): Tx qid for which ``tx_tc`` will be applied and traffic
+ will be paused when PFC frame is received with ``tx_tc`` enabled.
+
+* ``tx_tc`` (0-15): TC for which traffic is to be paused for xmit.
+
+* ``rx_qid`` (integer): Rx qid for which threshold will be applied and PFC
+ frame will be generated with ``tx_tc`` when exceeds the threshold.
+
+* ``rx_tc`` (0-15): TC filled in PFC frame for which remote Tx is to be paused.
+
+* ``pause_time`` (integer): Pause quota filled in the PFC frame.
+
set stat_qmap
~~~~~~~~~~~~~