Message ID | 50ecccc725b9481c79f89e8dbd0eac9d043ce4a1.1667923490.git.ecree.xilinx@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | sfc: TC offload counters | expand |
Hi,
I love your patch! Perhaps something to improve:
[auto build test WARNING on net-next/master]
url: https://github.com/intel-lab-lkp/linux/commits/edward-cree-amd-com/sfc-TC-offload-counters/20221109-012812
patch link: https://lore.kernel.org/r/50ecccc725b9481c79f89e8dbd0eac9d043ce4a1.1667923490.git.ecree.xilinx%40gmail.com
patch subject: [PATCH net-next 03/11] sfc: add ability for extra channels to receive raw RX buffers
config: powerpc-allyesconfig
compiler: powerpc-linux-gcc (GCC) 12.1.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/intel-lab-lkp/linux/commit/ea3ad411cc0881921d2b9f7a801c11d87dfccdc2
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review edward-cree-amd-com/sfc-TC-offload-counters/20221109-012812
git checkout ea3ad411cc0881921d2b9f7a801c11d87dfccdc2
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=powerpc SHELL=/bin/bash drivers/net/ethernet/sfc/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
drivers/net/ethernet/sfc/ef100_rx.c: In function '__ef100_rx_packet':
>> drivers/net/ethernet/sfc/ef100_rx.c:24:39: warning: left shift count >= width of type [-Wshift-count-overflow]
24 | #define PREFIX_WIDTH_MASK(_f) ((1UL << ESF_GZ_RX_PREFIX_ ## _f ## _WIDTH) - 1)
| ^~
drivers/net/ethernet/sfc/ef100_rx.c:27:34: note: in expansion of macro 'PREFIX_WIDTH_MASK'
27 | PREFIX_WIDTH_MASK(_f))
| ^~~~~~~~~~~~~~~~~
drivers/net/ethernet/sfc/ef100_rx.c:71:28: note: in expansion of macro 'PREFIX_FIELD'
71 | u32 mark = PREFIX_FIELD(prefix, USER_MARK);
| ^~~~~~~~~~~~
vim +24 drivers/net/ethernet/sfc/ef100_rx.c
51b35a454efdcd Edward Cree 2020-07-27 20
8e57daf70671e4 Edward Cree 2020-08-03 21 /* Get the value of a field in the RX prefix */
8e57daf70671e4 Edward Cree 2020-08-03 22 #define PREFIX_OFFSET_W(_f) (ESF_GZ_RX_PREFIX_ ## _f ## _LBN / 32)
8e57daf70671e4 Edward Cree 2020-08-03 23 #define PREFIX_OFFSET_B(_f) (ESF_GZ_RX_PREFIX_ ## _f ## _LBN % 32)
8e57daf70671e4 Edward Cree 2020-08-03 @24 #define PREFIX_WIDTH_MASK(_f) ((1UL << ESF_GZ_RX_PREFIX_ ## _f ## _WIDTH) - 1)
8e57daf70671e4 Edward Cree 2020-08-03 25 #define PREFIX_WORD(_p, _f) le32_to_cpu((__force __le32)(_p)[PREFIX_OFFSET_W(_f)])
8e57daf70671e4 Edward Cree 2020-08-03 26 #define PREFIX_FIELD(_p, _f) ((PREFIX_WORD(_p, _f) >> PREFIX_OFFSET_B(_f)) & \
8e57daf70671e4 Edward Cree 2020-08-03 27 PREFIX_WIDTH_MASK(_f))
965b549f3c20db Edward Cree 2020-07-27 28
diff --git a/drivers/net/ethernet/sfc/ef100_rx.c b/drivers/net/ethernet/sfc/ef100_rx.c index 24db44210acc..106afeb75c05 100644 --- a/drivers/net/ethernet/sfc/ef100_rx.c +++ b/drivers/net/ethernet/sfc/ef100_rx.c @@ -67,6 +67,13 @@ void __ef100_rx_packet(struct efx_channel *channel) prefix = (u32 *)(eh - ESE_GZ_RX_PKT_PREFIX_LEN); + if (channel->type->receive_raw) { + u32 mark = PREFIX_FIELD(prefix, USER_MARK); + + if (channel->type->receive_raw(rx_queue, mark)) + return; /* packet was consumed */ + } + if (ef100_has_fcs_error(channel, prefix) && unlikely(!(efx->net_dev->features & NETIF_F_RXALL))) goto out; diff --git a/drivers/net/ethernet/sfc/net_driver.h b/drivers/net/ethernet/sfc/net_driver.h index b3d413896230..1e42f3447b24 100644 --- a/drivers/net/ethernet/sfc/net_driver.h +++ b/drivers/net/ethernet/sfc/net_driver.h @@ -593,6 +593,7 @@ struct efx_msi_context { * @copy: Copy the channel state prior to reallocation. May be %NULL if * reallocation is not supported. * @receive_skb: Handle an skb ready to be passed to netif_receive_skb() + * @receive_raw: Handle an RX buffer ready to be passed to __efx_rx_packet() * @want_txqs: Determine whether this channel should have TX queues * created. If %NULL, TX queues are not created. * @keep_eventq: Flag for whether event queue should be kept initialised @@ -609,6 +610,7 @@ struct efx_channel_type { void (*get_name)(struct efx_channel *, char *buf, size_t len); struct efx_channel *(*copy)(const struct efx_channel *); bool (*receive_skb)(struct efx_channel *, struct sk_buff *); + bool (*receive_raw)(struct efx_rx_queue *, u32); bool (*want_txqs)(struct efx_channel *); bool keep_eventq; bool want_pio;