Skip to content

Commit 579a25a

Browse files
joabreukuba-moo
authored andcommitted
net: stmmac: Initial support for TBS
Adds the initial hooks for TBS support. This needs a 32 byte descriptor in order for it to work with current HW. Adds all the logic for Enhanced Descriptors in main core but no HW related logic for now. Changes from v2: - Use bitfield for TBS status / support (Jakub) - Remove unneeded cache alignment (Jakub) - Fix checkpatch issues Signed-off-by: Jose Abreu <Jose.Abreu@synopsys.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent ab9837b commit 579a25a

File tree

5 files changed

+156
-65
lines changed

5 files changed

+156
-65
lines changed

drivers/net/ethernet/stmicro/stmmac/descs.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,15 @@ struct dma_extended_desc {
171171
__le32 des7; /* Tx/Rx Timestamp High */
172172
};
173173

174+
/* Enhanced descriptor for TBS */
175+
struct dma_edesc {
176+
__le32 des4;
177+
__le32 des5;
178+
__le32 des6;
179+
__le32 des7;
180+
struct dma_desc basic;
181+
};
182+
174183
/* Transmit checksum insertion control */
175184
#define TX_CIC_FULL 3 /* Include IP header and pseudoheader */
176185

drivers/net/ethernet/stmicro/stmmac/hwif.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ struct stmmac_extra_stats;
2929
struct stmmac_safety_stats;
3030
struct dma_desc;
3131
struct dma_extended_desc;
32+
struct dma_edesc;
3233

3334
/* Descriptors helpers */
3435
struct stmmac_desc_ops {
@@ -95,6 +96,7 @@ struct stmmac_desc_ops {
9596
void (*set_vlan_tag)(struct dma_desc *p, u16 tag, u16 inner_tag,
9697
u32 inner_type);
9798
void (*set_vlan)(struct dma_desc *p, u32 type);
99+
void (*set_tbs)(struct dma_edesc *p, u32 sec, u32 nsec);
98100
};
99101

100102
#define stmmac_init_rx_desc(__priv, __args...) \
@@ -157,6 +159,8 @@ struct stmmac_desc_ops {
157159
stmmac_do_void_callback(__priv, desc, set_vlan_tag, __args)
158160
#define stmmac_set_desc_vlan(__priv, __args...) \
159161
stmmac_do_void_callback(__priv, desc, set_vlan, __args)
162+
#define stmmac_set_desc_tbs(__priv, __args...) \
163+
stmmac_do_void_callback(__priv, desc, set_tbs, __args)
160164

161165
struct stmmac_dma_cfg;
162166
struct dma_features;
@@ -210,6 +214,7 @@ struct stmmac_dma_ops {
210214
void (*qmode)(void __iomem *ioaddr, u32 channel, u8 qmode);
211215
void (*set_bfsize)(void __iomem *ioaddr, int bfsize, u32 chan);
212216
void (*enable_sph)(void __iomem *ioaddr, bool en, u32 chan);
217+
int (*enable_tbs)(void __iomem *ioaddr, bool en, u32 chan);
213218
};
214219

215220
#define stmmac_reset(__priv, __args...) \
@@ -268,6 +273,8 @@ struct stmmac_dma_ops {
268273
stmmac_do_void_callback(__priv, dma, set_bfsize, __args)
269274
#define stmmac_enable_sph(__priv, __args...) \
270275
stmmac_do_void_callback(__priv, dma, enable_sph, __args)
276+
#define stmmac_enable_tbs(__priv, __args...) \
277+
stmmac_do_callback(__priv, dma, enable_tbs, __args)
271278

272279
struct mac_device_info;
273280
struct net_device;

drivers/net/ethernet/stmicro/stmmac/stmmac.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,18 @@ struct stmmac_tx_info {
3939
bool is_jumbo;
4040
};
4141

42+
#define STMMAC_TBS_AVAIL BIT(0)
43+
#define STMMAC_TBS_EN BIT(1)
44+
4245
/* Frequently used values are kept adjacent for cache effect */
4346
struct stmmac_tx_queue {
4447
u32 tx_count_frames;
48+
int tbs;
4549
struct timer_list txtimer;
4650
u32 queue_index;
4751
struct stmmac_priv *priv_data;
4852
struct dma_extended_desc *dma_etx ____cacheline_aligned_in_smp;
53+
struct dma_edesc *dma_entx;
4954
struct dma_desc *dma_tx;
5055
struct sk_buff **tx_skbuff;
5156
struct stmmac_tx_info *tx_skbuff_dma;

0 commit comments

Comments
 (0)