Commit e41a3a75 authored by xiaohuihui-bzwx-kj's avatar xiaohuihui-bzwx-kj
Browse files

drivers: Fix BUILD REGRESSION warning in bzwx N5/N6 series NIC drivers

bzwx inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I9RY3A


CVE: NA

--------------------------------

fix build regression warning in bzwx N5/N6 series NIC drivers.

Fixes: 5b3d89af ("drivers: add Chengdu BeiZhongWangXin Technology N5/N6 Series Network Card Driver")
Signed-off-by: default avatarxiaohuihui-bzwx-kj <xiaohuihui@bzwx-kj.com>
parent 518c4345
Loading
Loading
Loading
Loading
+0 −199
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0 */
/* Copyright(c) 2020 - 2023, Chengdu BeiZhongWangXin Technology Co., Ltd. */

#define _NE6X_TRACE_NAME(trace_name) (trace_##ne6x##_##trace_name)
#define NE6X_TRACE_NAME(trace_name) _NE6X_TRACE_NAME(trace_name)

#define ne6x_trace(trace_name, args...) (NE6X_TRACE_NAME(trace_name) \
(args))

#define ne6x_trace_enabled(trace_name) (NE6X_TRACE_NAME(trace_name##_enabled) \
())

DECLARE_EVENT_CLASS(ne6x_tx_template,
		    TP_PROTO(struct ne6x_ring *ring, struct sk_buff *skb),
		    TP_ARGS(ring, skb),

		   TP_STRUCT__entry(__field(void *, ring)
				    __field(u32, len)
				    __field(u32, head_len)
				    __dynamic_array(unsigned char, data, skb_headlen(skb))
				    __string(devname, ring->netdev->name)
	),

		   TP_fast_assign(__entry->ring = ring;
				  __entry->len = skb->len;
				  __entry->head_len = skb_headlen(skb);
				  memcpy(__get_dynamic_array(data), skb->data,
					 skb_headlen(skb));
		   __assign_str(devname, ring->netdev->name);
	),

		   TP_printk("netdev: %s ring: %p  skb_len: %d skb_headlen:%d skb_head: %s",
			     __get_str(devname), __entry->ring, __entry->len,
			     __entry->head_len, __print_array(__get_dynamic_array(data),
			     __get_dynamic_array_len(data), 1))
	);

DEFINE_EVENT(ne6x_tx_template, ne6x_tx_skb,
	     TP_PROTO(struct ne6x_ring *ring, struct sk_buff *skb),
	     TP_ARGS(ring, skb)
);

DEFINE_EVENT(ne6x_tx_template, ne6x_tx_skb_jumbo,
	     TP_PROTO(struct ne6x_ring *ring, struct sk_buff *skb),
	     TP_ARGS(ring, skb)
);

DECLARE_EVENT_CLASS(ne6x_tx_desc_template,
		    TP_PROTO(struct ne6x_ring *ring, struct ne6x_tx_desc *desc),
		    TP_ARGS(ring, desc),

		    TP_STRUCT__entry(__field(void *, ring)
				     __field(void *, desc)
				     __field(u8, vp)
				     __field(u8, sop_valid)
				     __field(u8, eop_valid)
				     __field(u64, sop_cnt)
				     __field(u64, mop_cnt)
				     __field(u64, sop_addr)
				     __field(u64, mop_addr)
				     __string(devname, ring->netdev->name)
	),

		    TP_fast_assign(__entry->ring = ring;
				   __entry->desc = desc;
				   __entry->vp = desc->vp;
				   __entry->sop_valid = desc->sop_valid;
				   __entry->eop_valid = desc->eop_valid;
				   __entry->sop_cnt = desc->sop_cnt;
				   __entry->mop_cnt = desc->mop_cnt;
				   __entry->sop_addr = desc->buffer_sop_addr;
				   __entry->mop_addr = desc->buffer_mop_addr;
				   __assign_str(devname, ring->netdev->name);
	),

	TP_printk("netdev: %s ring: %p desc: %p vp: %d sop_valid:%d eop_valid: %d sop_cnt: %llu mop_cnt: %llu sop_addr: %llu mop_addr: %llu",
		  __get_str(devname), __entry->ring, __entry->desc,
		  __entry->vp, __entry->sop_valid, __entry->eop_valid,
		  __entry->sop_cnt, __entry->mop_cnt, __entry->sop_addr,
		  __entry->mop_addr)
	);

DEFINE_EVENT(ne6x_tx_desc_template, ne6x_tx_map_desc,
	     TP_PROTO(struct ne6x_ring *ring, struct ne6x_tx_desc *desc),
	     TP_ARGS(ring, desc)
);

DEFINE_EVENT(ne6x_tx_desc_template, ne6x_tx_map_jumbo_desc,
	     TP_PROTO(struct ne6x_ring *ring, struct ne6x_tx_desc *desc),
	     TP_ARGS(ring, desc)
);

DECLARE_EVENT_CLASS(ne6x_tx_tag_template,
		    TP_PROTO(struct ne6x_ring *ring, struct ne6x_tx_tag  *tx_tag),
		    TP_ARGS(ring, tx_tag),

		    TP_STRUCT__entry(__field(void *, ring)
				     __field(u8, pi)
				     __field(u8, vport)
				     __field(u16, vlan1)
				     __field(u16, vlan2)
				     __field(u16, mss)
				     __field(u16, tag_num)
				     __string(devname, ring->netdev->name)
	),

		    TP_fast_assign(__entry->ring = ring;
				   __entry->pi = (tx_tag->tag_pi1 << 1) | tx_tag->tag_pi0;
				   __entry->vport = tx_tag->tag_vport;
				   __entry->vlan1 = tx_tag->tag_vlan1;
				   __entry->vlan2 = tx_tag->tag_vlan2;
				   __entry->mss = tx_tag->tag_mss;
				   __entry->tag_num = tx_tag->tag_num;
				   __assign_str(devname, ring->netdev->name);
	),

		    TP_printk("netdev: %s ring: %p pi: %d vport: %d vlan1:%d vlan2: %d mss: %d tag_num: %d",
			      __get_str(devname), __entry->ring, __entry->pi, __entry->vport,
			      __entry->vlan1, __entry->vlan2, __entry->mss, __entry->tag_num)
	);

DEFINE_EVENT(ne6x_tx_tag_template, ne6x_tx_map_tag,
	     TP_PROTO(struct ne6x_ring *ring, struct ne6x_tx_tag  *tx_tag),
	     TP_ARGS(ring, tx_tag)
);

DEFINE_EVENT(ne6x_tx_tag_template, ne6x_tx_map_jumbo_tag,
	     TP_PROTO(struct ne6x_ring *ring, struct ne6x_tx_tag  *tx_tag),
	     TP_ARGS(ring, tx_tag)
);

DECLARE_EVENT_CLASS(ne6x_rx_template,
		    TP_PROTO(struct ne6x_ring *ring, union ne6x_rx_desc *desc, struct sk_buff *skb),
		    TP_ARGS(ring, desc, skb),
		    TP_STRUCT__entry(__field(void *, ring)
				     __field(void *, desc)
				     __field(void *, skb)
				     __string(devname, ring->netdev->name)),

		    TP_fast_assign(__entry->ring = ring;
				   __entry->desc = desc;
				   __entry->skb = skb;
				   __assign_str(devname, ring->netdev->name);),
		    TP_printk("netdev: %s ring: %p desc: %p skb %p",
			      __get_str(devname), __entry->ring,
			      __entry->desc, __entry->skb)
);

DECLARE_EVENT_CLASS(ne6x_rx_head_template,
		    TP_PROTO(struct ne6x_ring *ring, struct rx_hdr_info *rx_hdr),
		    TP_ARGS(ring, rx_hdr),
		    TP_STRUCT__entry(__field(void *, rx_hdr)
					__array(u8, headr, 12)
					__field(void *, ring)
					__string(devname, ring->netdev->name)),

		    TP_fast_assign(__entry->ring = ring;
				   __entry->rx_hdr = rx_hdr;
				   memcpy(__entry->headr, rx_hdr, 12);
				   __assign_str(devname, ring->netdev->name);),
		    TP_printk("netdev: %s rx_hdr: %s",
			      __get_str(devname), __print_array(__entry->headr, 12, 1))
);

DEFINE_EVENT(ne6x_rx_head_template, ne6x_rx_hdr,
	     TP_PROTO(struct ne6x_ring *ring, struct rx_hdr_info *rx_hdr),
	     TP_ARGS(ring, rx_hdr)
);

DEFINE_EVENT(ne6x_rx_template, ne6x_clean_rx_irq,
	     TP_PROTO(struct ne6x_ring *ring, union ne6x_rx_desc *desc, struct sk_buff *skb),
	     TP_ARGS(ring, desc, skb)
);

DEFINE_EVENT(ne6x_rx_template, ne6x_clean_rx_irq_rx,
	     TP_PROTO(struct ne6x_ring *ring, union ne6x_rx_desc *desc, struct sk_buff *skb),
	     TP_ARGS(ring, desc, skb)
);

DECLARE_EVENT_CLASS(ne6x_xmit_template,
		    TP_PROTO(struct sk_buff *skb, struct ne6x_ring *ring),
		    TP_ARGS(skb, ring),
		    TP_STRUCT__entry(__field(void *, skb)
				     __field(void *, ring)
				     __string(devname, ring->netdev->name)),
		    TP_fast_assign(__entry->skb = skb;
				   __entry->ring = ring;
				   __assign_str(devname, ring->netdev->name);),
		    TP_printk("netdev: %s skb: %p ring: %p",
			      __get_str(devname), __entry->skb,
			      __entry->ring));

DEFINE_EVENT(ne6x_xmit_template, ne6x_xmit_frame_ring,
	     TP_PROTO(struct sk_buff *skb, struct ne6x_ring *ring),
	     TP_ARGS(skb, ring));

DEFINE_EVENT(ne6x_xmit_template, ne6x_xmit_frame_ring_drop,
	     TP_PROTO(struct sk_buff *skb, struct ne6x_ring *ring),
	     TP_ARGS(skb, ring));
+11 −43
Original line number Diff line number Diff line
@@ -2,7 +2,6 @@
/* Copyright(c) 2020 - 2023, Chengdu BeiZhongWangXin Technology Co., Ltd. */

#include "txrx.h"
#include "ne6x_trace.h"

int ne6x_setup_tx_descriptors(struct ne6x_ring *tx_ring)
{
@@ -147,25 +146,6 @@ int ne6x_setup_tx_sgl(struct ne6x_ring *tx_ring)
	return -ENOMEM;
}

static inline unsigned int ne6x_txd_use_count(unsigned int size)
{
	return ((size * 85) >> 20) + 1;
}

bool __ne6x_chk_linearize(struct sk_buff *skb);
static inline bool ne6x_chk_linearize(struct sk_buff *skb, int count)
{
	/* Both TSO and single send will work if count is less than 8 */
	if (likely(count < NE6X_MAX_BUFFER_TXD))
		return false;

	if (skb_is_gso(skb))
		return __ne6x_chk_linearize(skb);

	/* we can support up to 8 data buffers for a single send */
	return count != NE6X_MAX_BUFFER_TXD;
}

int __ne6x_maybe_stop_tx(struct ne6x_ring *tx_ring, int size);

static inline int ne6x_maybe_stop_tx(struct ne6x_ring *tx_ring, int size)
@@ -838,7 +818,6 @@ int ne6x_clean_rx_irq(struct ne6x_ring *rx_ring, int budget)
		}

		size = rx_desc->wb.pkt_len;
		ne6x_trace(clean_rx_irq, rx_ring, rx_desc, skb);
		rx_buffer = ne6x_get_rx_buffer(rx_ring, size);

		/* retrieve a buffer from the ring */
@@ -866,7 +845,6 @@ int ne6x_clean_rx_irq(struct ne6x_ring *rx_ring, int budget)
		}

		ne6x_get_rx_head_info(skb, &rx_hdr);
		ne6x_trace(rx_hdr, rx_ring, &rx_hdr);
		pskb_trim(skb, skb->len - 16);
		/* probably a little skewed due to removing CRC */
		total_rx_bytes += skb->len;
@@ -874,8 +852,6 @@ int ne6x_clean_rx_irq(struct ne6x_ring *rx_ring, int budget)
		/* populate checksum, VLAN, and protocol */
		ne6x_process_skb_fields(rx_ring, rx_desc, skb, &rx_hdr);

		ne6x_trace(clean_rx_irq_rx, rx_ring, rx_desc, skb);

		ne6x_receive_skb(rx_ring, skb);
		skb = NULL;

@@ -1144,7 +1120,7 @@ static inline void ne6x_fill_gso_sg(void *p, u16 offset, u16 len, struct ne6x_sg
	sg->len = len;
}

int ne6x_fill_jumbo_sgl(struct ne6x_ring *tx_ring, struct sk_buff *skb)
static int ne6x_fill_jumbo_sgl(struct ne6x_ring *tx_ring, struct sk_buff *skb)
{
	u16 sg_max_dlen = 0, dlen = 0, len = 0, offset = 0, send_dlen = 0, total_dlen = 0;
	u16 subframe = 0, send_subframe = 0, sg_avail = 0, i = 0, j = 0;
@@ -1244,7 +1220,7 @@ int ne6x_fill_jumbo_sgl(struct ne6x_ring *tx_ring, struct sk_buff *skb)
	return -1;
}

void ne6x_fill_tx_desc(struct ne6x_tx_desc *tx_desc, u8 vp, dma_addr_t tag_dma,
static void ne6x_fill_tx_desc(struct ne6x_tx_desc *tx_desc, u8 vp, dma_addr_t tag_dma,
			      dma_addr_t dma, struct ne6x_sg_info *sg)
{
	memset(tx_desc, 0, NE6X_TX_DESC_SIZE);
@@ -1263,7 +1239,7 @@ void ne6x_fill_tx_desc(struct ne6x_tx_desc *tx_desc, u8 vp, dma_addr_t tag_dma,
	}
}

void ne6x_fill_tx_priv_tag(struct ne6x_ring *tx_ring, struct ne6x_tx_tag *tx_tag,
static void ne6x_fill_tx_priv_tag(struct ne6x_ring *tx_ring, struct ne6x_tx_tag *tx_tag,
				  int mss, struct ne6x_sg_info *sg)
{
	struct ne6x_adapt_comm *comm = (struct ne6x_adapt_comm *)tx_ring->adpt;
@@ -1278,7 +1254,7 @@ void ne6x_fill_tx_priv_tag(struct ne6x_ring *tx_ring, struct ne6x_tx_tag *tx_tag
	tx_tag->tag_num = cpu_to_be16(tx_tag->tag_num);
}

void ne6x_xmit_jumbo(struct ne6x_ring *tx_ring, struct ne6x_tx_buf *first,
static void ne6x_xmit_jumbo(struct ne6x_ring *tx_ring, struct ne6x_tx_buf *first,
			    struct ne6x_ring *tag_ring, struct ne6x_tx_tag *tx_tag)
{
	int j = 0;
@@ -1314,7 +1290,6 @@ void ne6x_xmit_jumbo(struct ne6x_ring *tx_ring, struct ne6x_tx_buf *first,
			tag_dma = tag_ring->dma + tag_ring->next_to_use * NE6X_TX_PRIV_TAG_SIZE;
			tag_desc = NE6X_TX_TAG(tag_ring, tag_ring->next_to_use);
			ne6x_fill_tx_priv_tag(tx_ring, tag_desc, sgl->mss, sg);
			ne6x_trace(tx_map_jumbo_tag, tx_ring, tag_desc);
			if (++tag_ring->next_to_use == tag_ring->count)
				tag_ring->next_to_use = 0;
		} else {
@@ -1323,7 +1298,6 @@ void ne6x_xmit_jumbo(struct ne6x_ring *tx_ring, struct ne6x_tx_buf *first,

		tx_desc = NE6X_TX_DESC(tx_ring, i);
		ne6x_fill_tx_desc(tx_desc, tx_ring->reg_idx, tag_dma, dma, sg);
		ne6x_trace(tx_map_jumbo_desc, tx_ring, tx_desc);
		if (++i == tx_ring->count)
			i = 0;
	}
@@ -1370,12 +1344,12 @@ void ne6x_xmit_jumbo(struct ne6x_ring *tx_ring, struct ne6x_tx_buf *first,
	tx_ring->next_to_use = i;
}

void ne6x_xmit_simple(struct ne6x_ring *tx_ring, struct ne6x_tx_buf *first,
static void ne6x_xmit_simple(struct ne6x_ring *tx_ring, struct ne6x_tx_buf *first,
			     struct ne6x_ring *tag_ring, struct ne6x_tx_tag *tx_tag)
{
	struct sk_buff *skb = first->skb;
	struct ne6x_adapt_comm *comm = (struct ne6x_adapt_comm *)tx_ring->adpt;
	struct ne6x_tx_desc *tx_desc, *first_desc;
	struct ne6x_tx_desc *tx_desc;
	unsigned int size = skb_headlen(skb);
	u32 i = tx_ring->next_to_use;
	struct ne6x_tx_tag *ttx_desc;
@@ -1384,13 +1358,10 @@ void ne6x_xmit_simple(struct ne6x_ring *tx_ring, struct ne6x_tx_buf *first,
	int send_len = 0;
	skb_frag_t *frag;
	dma_addr_t dma;
	__le64 mss = 0;

	dma = dma_map_single(tx_ring->dev, skb->data, size, DMA_TO_DEVICE);

	first_desc = NE6X_TX_DESC(tx_ring, i);
	tx_desc = NE6X_TX_DESC(tx_ring, i);
	mss = tx_desc->mss;
	tx_desc->sop_valid = 1;
	tx_desc->eop_valid = 0;
	tx_bi = first;
@@ -1432,7 +1403,7 @@ void ne6x_xmit_simple(struct ne6x_ring *tx_ring, struct ne6x_tx_buf *first,
			tx_desc->eop_valid = 1u;
			break;
		}
		ne6x_trace(tx_map_desc, tx_ring, tx_desc);

		if (++i == tx_ring->count)
			i = 0;

@@ -1507,8 +1478,6 @@ netdev_tx_t ne6x_xmit_frame_ring(struct sk_buff *skb, struct ne6x_ring *tx_ring,
	prefetch(tx_tagx);
	prefetch(skb->data);

	ne6x_trace(xmit_frame_ring, skb, tx_ring);

	if (!jumbo_frame) {
		count = ne6x_xmit_descriptor_count(skb);
	} else {
@@ -1559,7 +1528,6 @@ netdev_tx_t ne6x_xmit_frame_ring(struct sk_buff *skb, struct ne6x_ring *tx_ring,
	return NETDEV_TX_OK;

out_drop:
	ne6x_trace(xmit_frame_ring_drop, first->skb, tx_ring);
	ne6x_unmap_and_free_tx_resource(tx_ring, first);

	return NETDEV_TX_OK;
+2 −0
Original line number Diff line number Diff line
@@ -472,5 +472,7 @@ int ne6x_setup_rx_descriptors(struct ne6x_ring *rx_ring);
int ne6x_setup_cq_descriptors(struct ne6x_ring *cq_ring);
int ne6x_setup_tg_descriptors(struct ne6x_ring *tg_ring);
int ne6x_setup_tx_sgl(struct ne6x_ring *tx_ring);
bool ne6x_alloc_rx_buffers(struct ne6x_ring *rx_ring, u16 cleaned_count);
void ne6x_unmap_and_free_tx_resource(struct ne6x_ring *ring, struct ne6x_tx_buf *tx_buffer);

#endif
+9 −7
Original line number Diff line number Diff line
@@ -14,7 +14,8 @@ static void
ne6x_arfs_update_active_fltr_cntrs(struct ne6x_adapter *adpt,
				   struct ne6x_arfs_entry *entry, bool add);

int ne6x_dev_add_fster_rules(struct ne6x_adapter *adpt, struct ne6x_fster_fltr *input, bool is_tun)
static int ne6x_dev_add_fster_rules(struct ne6x_adapter *adpt, struct ne6x_fster_fltr *input,
				    bool is_tun)
{
	u32 table_id = 0xffffffff;
	struct ne6x_fster_table fster;
@@ -24,7 +25,7 @@ int ne6x_dev_add_fster_rules(struct ne6x_adapter *adpt, struct ne6x_fster_fltr *
	struct device *dev;

	dev = ne6x_pf_to_dev(adpt->back);
	dev_info(dev, "add: vport: %d %x %x %x %x %d %d rxq_id%d\n", adpt->vport,
	dev_info(dev, "add: vport: %d %x %x %x %x %d %d rxq_id: %d\n", adpt->vport,
		 input->ip.v4.dst_ip, input->ip.v4.src_ip, input->ip.v4.dst_port,
		 input->ip.v4.src_port, input->ip.v4.pi, input->ip.v4.proto, input->q_index);

@@ -58,7 +59,8 @@ int ne6x_dev_add_fster_rules(struct ne6x_adapter *adpt, struct ne6x_fster_fltr *
	return 0;
}

int ne6x_dev_del_fster_rules(struct ne6x_adapter *adpt, struct ne6x_fster_fltr *input, bool is_tun)
static int ne6x_dev_del_fster_rules(struct ne6x_adapter *adpt, struct ne6x_fster_fltr *input,
				    bool is_tun)
{
	struct ne6x_fster_table fster;
	struct ne6x_fster_search_result result;
@@ -67,7 +69,7 @@ int ne6x_dev_del_fster_rules(struct ne6x_adapter *adpt, struct ne6x_fster_fltr *
	struct device *dev;

	dev = ne6x_pf_to_dev(adpt->back);
	dev_info(dev, "del: vport: %d %x %x %x %x %d %d rxq_id%d\n",
	dev_info(dev, "del: vport: %d %x %x %x %x %d %d rxq_id: %d\n",
		 adpt->vport, input->ip.v4.dst_ip, input->ip.v4.src_ip, input->ip.v4.dst_port,
		 input->ip.v4.src_port, input->ip.v4.pi, input->ip.v4.proto, input->q_index);

@@ -163,7 +165,7 @@ ne6x_arfs_update_flow_rules(struct ne6x_adapter *adpt, u16 idx,
	}
}

int ne6x_arfs_add_flow_rules(struct ne6x_adapter *adpt, struct hlist_head *add_list_head)
static int ne6x_arfs_add_flow_rules(struct ne6x_adapter *adpt, struct hlist_head *add_list_head)
{
	struct ne6x_arfs_entry_ptr *ep;
	struct hlist_node *n;
@@ -191,7 +193,7 @@ int ne6x_arfs_add_flow_rules(struct ne6x_adapter *adpt, struct hlist_head *add_l
	return 0;
}

int ne6x_arfs_del_flow_rules(struct ne6x_adapter *adpt,  struct hlist_head *del_list_head)
static int ne6x_arfs_del_flow_rules(struct ne6x_adapter *adpt,  struct hlist_head *del_list_head)
{
	struct ne6x_arfs_entry *e;
	struct hlist_node *n;
@@ -394,7 +396,7 @@ void ne6x_free_cpu_rx_rmap(struct ne6x_adapter *adpt)
	netdev->rx_cpu_rmap = NULL;
}

int ne6x_get_irq_num(struct ne6x_pf *pf, int idx)
static int ne6x_get_irq_num(struct ne6x_pf *pf, int idx)
{
	if (!pf->msix_entries)
		return -EINVAL;
+41 −163

File changed.

Preview size limit exceeded, changes collapsed.

Loading