On Thu, Mar 23, 2017 at 01:26:15PM +0000, Ferruh Yigit wrote: > On 3/23/2017 1:20 PM, Jerin Jacob wrote: > > On Wed, Mar 22, 2017 at 10:33:14AM +0000, Ferruh Yigit wrote: > >> On 3/22/2017 9:39 AM, Jerin Jacob wrote: > >>> On Tue, Mar 21, 2017 at 02:53:29PM +0000, Ferruh Yigit wrote: > >>>> On 3/21/2017 2:38 PM, Jerin Jacob wrote: > >>>>> On Tue, Mar 21, 2017 at 02:31:41PM +0000, Ferruh Yigit wrote: > >>>>>> On 3/20/2017 2:10 PM, Jerin Jacob wrote: > >>>>>>> - bgx_link_status mbox definition was changed in Linux > >>>>>>> commit 1cc702591bae ("net: thunderx: Add ethtool support") > >>>>>>> - NIC_MBOX_MSG_RES_BIT related changes were never part of Linux PF > >>>>>>> driver > >>>>>>> > >>>>>>> Signed-off-by: Jerin Jacob <jerin.ja...@caviumnetworks.com> > >>>>>> > >>>>>> <...> > >>>>>> > >>>>>>> @@ -157,6 +151,7 @@ struct rss_cfg_msg { > >>>>>>> /* Physical interface link status */ > >>>>>>> struct bgx_link_status { > >>>>>>> uint8_t msg; > >>>>>>> + uint8_t mac_type; > >>>>>> > >>>>>> Hi Jerin, > >>>>>> > >>>>>> Is this modification related to this patch? > >>>>> > >>>>> Yes Ferruh. > >>>>> > >>>>> This was related to the following section in git log comment. > >>>>> ---- > >>>>> - bgx_link_status mbox definition was changed in Linux > >>>>> commit 1cc702591bae ("net: thunderx: Add ethtool support") > >>>>> --- > >>>> > >>>> I see now, thanks. Since this is to sync with Linux PF, shouldn't it be > >>>> used in driver, perhaps something like in Linux driver: > >>>> "nic->mac_type = mbx.link_status.mac_type" > >>>> > >>>> What is the point of just adding definition without using it? > >>> > >>> That is to keep "link_up"(next element in the struct bgx_link_status) > >>> points > >>> to correct location after the kernel change. > >> > >> I see, thanks. It is pity that new field added into middle (or beginning > >> if you exclude msg) of the struct. > >> > >>> I thought about, the backward > >>> compatibility with older kernel, Is it OK to use linux/version.h in PMD > >>> drivers > >>> to detect the kernel version? > >> > >> Technically possible, but kernel version check has its problems: > >> 1) Adds maintenance cost, which gets worse by time. > >> 2) If added a compile time check, it creates binary distribution > >> problems, distro guys may not like PMD has dependency to kernel. > >> 3) It will create dependency to Linux, assuming Thunderx PMD supported > >> in FreeBSD > >> > >>> drivers/net/mlx5/mlx5_ethdev.c has similar > >>> kernel detection mechanism to make it backward compatible. > >> > >> Yes, at least mlx added a dynamic check which prevents above issue 2. > >> > >>> If there are no issue with such approach, I will roll out a new revision. > >> > >> Is there any way to detect this dynamically, first things I can think of: > >> - Any mbx versioning to rely on? > >> - Any common NIC user header file provided by kernel, to use in DPDK, to > >> prevent any this kind of issues in the future? > >> - Any msg size value to detect if mac_type exists or not? > >> - Heuristic approach to other values to detect mac_type existence? > > > > Thanks for sharing the options. > > First three options wont work. Heuristic option is pretty limited, > > mac_type value can also be 0 or 1(same as link_up) > > So I think, The best option now to use the patch as is(without kernel > > check). > > What do you think? > > If this won't cause a problem for you with older kernels, I would prefer > no kernel check option.
OK. I will ask our kernel team to backport the offending the kernel change to old versions based on the requirement. Please merge this patch if you don't see any other issue. I can post a separate patch add to the kernel version check if it is really required. > > > > >> > >>> > >>> > >>>> > >>>>> > >>>>> > >>>>>> > >>>>>>> uint8_t link_up; > >>>>>>> uint8_t duplex; > >>>>>>> uint32_t speed; > >>>>>>> > >>>>>> > >>>> > >> >