mirror of
https://github.com/torvalds/linux.git
synced 2026-05-12 16:18:45 +02:00
net: bnxt: Add boilerplate GSO code
Add bnxt_gso.c and bnxt_gso.h with a stub bnxt_sw_udp_gso_xmit() function, SW USO constants (BNXT_SW_USO_MAX_SEGS, BNXT_SW_USO_MAX_DESCS), and the is_sw_gso field in bnxt_sw_tx_bd with BNXT_SW_GSO_MID/LAST markers. The full SW USO implementation will be added in a future commit. Suggested-by: Jakub Kicinski <kuba@kernel.org> Reviewed-by: Pavan Chebbi <pavan.chebbi@broadcom.com> Signed-off-by: Joe Damato <joe@dama.to> Link: https://patch.msgid.link/20260408230607.2019402-7-joe@dama.to Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
0c26a0e765
commit
0440e27eed
|
|
@ -1,7 +1,7 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
obj-$(CONFIG_BNXT) += bnxt_en.o
|
||||
|
||||
bnxt_en-y := bnxt.o bnxt_hwrm.o bnxt_sriov.o bnxt_ethtool.o bnxt_dcb.o bnxt_ulp.o bnxt_xdp.o bnxt_ptp.o bnxt_vfr.o bnxt_devlink.o bnxt_dim.o bnxt_coredump.o
|
||||
bnxt_en-y := bnxt.o bnxt_hwrm.o bnxt_sriov.o bnxt_ethtool.o bnxt_dcb.o bnxt_ulp.o bnxt_xdp.o bnxt_ptp.o bnxt_vfr.o bnxt_devlink.o bnxt_dim.o bnxt_coredump.o bnxt_gso.o
|
||||
bnxt_en-$(CONFIG_BNXT_FLOWER_OFFLOAD) += bnxt_tc.o
|
||||
bnxt_en-$(CONFIG_DEBUG_FS) += bnxt_debugfs.o
|
||||
bnxt_en-$(CONFIG_BNXT_HWMON) += bnxt_hwmon.o
|
||||
|
|
|
|||
|
|
@ -892,6 +892,7 @@ struct bnxt_sw_tx_bd {
|
|||
struct page *page;
|
||||
u8 is_ts_pkt;
|
||||
u8 is_push;
|
||||
u8 is_sw_gso;
|
||||
u8 action;
|
||||
unsigned short nr_frags;
|
||||
union {
|
||||
|
|
@ -900,6 +901,9 @@ struct bnxt_sw_tx_bd {
|
|||
};
|
||||
};
|
||||
|
||||
#define BNXT_SW_GSO_MID 1
|
||||
#define BNXT_SW_GSO_LAST 2
|
||||
|
||||
struct bnxt_sw_rx_bd {
|
||||
void *data;
|
||||
u8 *data_ptr;
|
||||
|
|
|
|||
30
drivers/net/ethernet/broadcom/bnxt/bnxt_gso.c
Normal file
30
drivers/net/ethernet/broadcom/bnxt/bnxt_gso.c
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
/* Broadcom NetXtreme-C/E network driver.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#include <linux/pci.h>
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/skbuff.h>
|
||||
#include <net/netdev_queues.h>
|
||||
#include <net/ip.h>
|
||||
#include <net/ipv6.h>
|
||||
#include <net/udp.h>
|
||||
#include <net/tso.h>
|
||||
#include <linux/bnxt/hsi.h>
|
||||
|
||||
#include "bnxt.h"
|
||||
#include "bnxt_gso.h"
|
||||
|
||||
netdev_tx_t bnxt_sw_udp_gso_xmit(struct bnxt *bp,
|
||||
struct bnxt_tx_ring_info *txr,
|
||||
struct netdev_queue *txq,
|
||||
struct sk_buff *skb)
|
||||
{
|
||||
dev_kfree_skb_any(skb);
|
||||
dev_core_stats_tx_dropped_inc(bp->dev);
|
||||
return NETDEV_TX_OK;
|
||||
}
|
||||
31
drivers/net/ethernet/broadcom/bnxt/bnxt_gso.h
Normal file
31
drivers/net/ethernet/broadcom/bnxt/bnxt_gso.h
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
/*
|
||||
* Broadcom NetXtreme-C/E network driver.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#ifndef BNXT_GSO_H
|
||||
#define BNXT_GSO_H
|
||||
|
||||
/* Maximum segments the stack may send in a single SW USO skb.
|
||||
* This caps gso_max_segs for NICs without HW USO support.
|
||||
*/
|
||||
#define BNXT_SW_USO_MAX_SEGS 64
|
||||
|
||||
/* Worst-case TX descriptors consumed by one SW USO packet:
|
||||
* Each segment: 1 long BD + 1 ext BD + payload BDs.
|
||||
* Total payload BDs across all segs <= num_segs + nr_frags (each frag
|
||||
* boundary crossing adds at most 1 extra BD).
|
||||
* So: 3 * max_segs + MAX_SKB_FRAGS + 1 = 3 * 64 + 17 + 1 = 210.
|
||||
*/
|
||||
#define BNXT_SW_USO_MAX_DESCS (3 * BNXT_SW_USO_MAX_SEGS + MAX_SKB_FRAGS + 1)
|
||||
|
||||
netdev_tx_t bnxt_sw_udp_gso_xmit(struct bnxt *bp,
|
||||
struct bnxt_tx_ring_info *txr,
|
||||
struct netdev_queue *txq,
|
||||
struct sk_buff *skb);
|
||||
|
||||
#endif
|
||||
Loading…
Reference in New Issue
Block a user