Skip to content

Commit 39a096d

Browse files
committed
Merge branch 'ravb-cleanups'
Niklas Söderlund says: ==================== ravb: Align Rx descriptor setup and maintenance When RZ/G2L support was added the Rx code path was split in two, one to support R-Car and one to support RZ/G2L. One reason for this is that R-Car uses the extended Rx descriptor format, while RZ/G2L uses the normal descriptor format. In many aspects this is not needed as the extended descriptor format is just a normal descriptor with extra metadata (timestamsp) appended. And the R-Car SoCs can also use normal descriptors if hardware timestamps were not desired. This split has led to RZ/G2L gaining support for split descriptors in the Rx path while R-Car still lacks this. This series is the first step in trying to merge the R-Car and RZ/G2L Rx paths so features and bugs corrected in one will benefit the other. The first patch in the series clarifies that the driver now supports either normal or extended descriptors, not both at the same time by grouping them in a union. This is the foundation that later patches will build on the aligning the two Rx paths. Patches 2-5 deals with correcting small issues in the Rx frame and descriptor sizes that either were incorrect at the time they were added in 2017 (my bad) or concepts built on-top of this initial incorrect design. While finally patch 6 merges the R-Car and RZ/G2L for Rx descriptor setup and maintenance. When this work has landed I plan to follow up with more work aligning the rest of the Rx code paths and hopefully bring split descriptor support to the R-Car SoCs. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
2 parents dbb0b6c + 644d037 commit 39a096d

File tree

2 files changed

+83
-147
lines changed

2 files changed

+83
-147
lines changed

drivers/net/ethernet/renesas/ravb.h

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1015,11 +1015,6 @@ enum CSR2_BIT {
10151015
#define NUM_RX_QUEUE 2
10161016
#define NUM_TX_QUEUE 2
10171017

1018-
#define RX_BUF_SZ (2048 - ETH_FCS_LEN + sizeof(__sum16))
1019-
1020-
#define GBETH_RX_BUFF_MAX 8192
1021-
#define GBETH_RX_DESC_DATA_SIZE 4080
1022-
10231018
struct ravb_tstamp_skb {
10241019
struct list_head list;
10251020
struct sk_buff *skb;
@@ -1044,9 +1039,6 @@ struct ravb_ptp {
10441039
};
10451040

10461041
struct ravb_hw_info {
1047-
void (*rx_ring_free)(struct net_device *ndev, int q);
1048-
void (*rx_ring_format)(struct net_device *ndev, int q);
1049-
void *(*alloc_rx_desc)(struct net_device *ndev, int q);
10501042
bool (*receive)(struct net_device *ndev, int *quota, int q);
10511043
void (*set_rate)(struct net_device *ndev);
10521044
int (*set_feature)(struct net_device *ndev, netdev_features_t features);
@@ -1057,9 +1049,10 @@ struct ravb_hw_info {
10571049
netdev_features_t net_hw_features;
10581050
netdev_features_t net_features;
10591051
int stats_len;
1060-
size_t max_rx_len;
10611052
u32 tccr_mask;
1062-
u32 rx_max_buf_size;
1053+
u32 rx_max_frame_size;
1054+
u32 rx_max_desc_use;
1055+
u32 rx_desc_size;
10631056
unsigned aligned_tx: 1;
10641057

10651058
/* hardware features */
@@ -1092,8 +1085,11 @@ struct ravb_private {
10921085
struct ravb_desc *desc_bat;
10931086
dma_addr_t rx_desc_dma[NUM_RX_QUEUE];
10941087
dma_addr_t tx_desc_dma[NUM_TX_QUEUE];
1095-
struct ravb_rx_desc *gbeth_rx_ring;
1096-
struct ravb_ex_rx_desc *rx_ring[NUM_RX_QUEUE];
1088+
union {
1089+
struct ravb_rx_desc *desc;
1090+
struct ravb_ex_rx_desc *ex_desc;
1091+
void *raw;
1092+
} rx_ring[NUM_RX_QUEUE];
10971093
struct ravb_tx_desc *tx_ring[NUM_TX_QUEUE];
10981094
void *tx_align[NUM_TX_QUEUE];
10991095
struct sk_buff *rx_1st_skb;

0 commit comments

Comments
 (0)