Fri, Sep 22, 2017 at 04:11:51PM CEST, linyunsh...@huawei.com wrote: >Hi, Jiri > >>>- if (!tc) { >>>+ if (if_running) { >>>+ (void)hns3_nic_net_stop(netdev); >>>+ msleep(100); >>>+ } >>>+ >>>+ ret = (kinfo->dcb_ops && kinfo->dcb_ops->>setup_tc) ? >>>+ kinfo->dcb_ops->setup_tc(h, tc, prio_tc) : ->EOPNOTSUPP; > >>This is most odd. Why do you call dcb_ops from >ndo_setup_tc callback? >>Why are you mixing this together? prio->tc mapping >can be done >>directly in dcbnl > >Here is what we do in dcb_ops->setup_tc: >Firstly, if current tc num is different from the tc num >that user provide, then we setup the queues for each >tc. > >Secondly, we tell hardware the pri to tc mapping that >the stack is using. In rx direction, our hardware need >that mapping to put different packet into different tc' >queues according to the priority of the packet, then >rss decides which specific queue in the tc should the >packet goto. > >By mixing, I suppose you meant why we need the >pri to tc infomation?
by mixing, I mean what I wrote. You are calling dcb_ops callback from ndo_setup_tc callback. So you are mixing DCBNL subsystem and TC subsystem. Why? Why do you need sch_mqprio? Why DCBNL is not enough for all? >I hope I did not misunderstand your question, thanks >for your time reviewing.