Skip to content

Commit cb748a7

Browse files
Hariprasad Kelamdavem330
authored andcommitted
octeontx2-pf: Prepare for QOS offload
This patch moves rate limiting definitions to a common header file and adds csr definitions required for QOS code. Signed-off-by: Hariprasad Kelam <[email protected]> Signed-off-by: Sunil Kovvuri Goutham <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 6b4b2de commit cb748a7

File tree

3 files changed

+43
-20
lines changed

3 files changed

+43
-20
lines changed

drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,21 @@ struct mbox {
185185
int up_num_msgs; /* mbox_up number of messages */
186186
};
187187

188+
/* Egress rate limiting definitions */
189+
#define MAX_BURST_EXPONENT 0x0FULL
190+
#define MAX_BURST_MANTISSA 0xFFULL
191+
#define MAX_BURST_SIZE 130816ULL
192+
#define MAX_RATE_DIVIDER_EXPONENT 12ULL
193+
#define MAX_RATE_EXPONENT 0x0FULL
194+
#define MAX_RATE_MANTISSA 0xFFULL
195+
196+
/* Bitfields in NIX_TLX_PIR register */
197+
#define TLX_RATE_MANTISSA GENMASK_ULL(8, 1)
198+
#define TLX_RATE_EXPONENT GENMASK_ULL(12, 9)
199+
#define TLX_RATE_DIVIDER_EXPONENT GENMASK_ULL(16, 13)
200+
#define TLX_BURST_MANTISSA GENMASK_ULL(36, 29)
201+
#define TLX_BURST_EXPONENT GENMASK_ULL(40, 37)
202+
188203
struct otx2_hw {
189204
struct pci_dev *pdev;
190205
struct otx2_rss_info rss_info;
@@ -253,6 +268,7 @@ struct otx2_hw {
253268
#define CN10K_RPM 3
254269
#define CN10K_PTP_ONESTEP 4
255270
#define CN10K_HW_MACSEC 5
271+
#define QOS_CIR_PIR_SUPPORT 6
256272
unsigned long cap_flag;
257273

258274
#define LMT_LINE_SIZE 128
@@ -591,6 +607,7 @@ static inline void otx2_setup_dev_hw_settings(struct otx2_nic *pfvf)
591607
__set_bit(CN10K_LMTST, &hw->cap_flag);
592608
__set_bit(CN10K_RPM, &hw->cap_flag);
593609
__set_bit(CN10K_PTP_ONESTEP, &hw->cap_flag);
610+
__set_bit(QOS_CIR_PIR_SUPPORT, &hw->cap_flag);
594611
}
595612

596613
if (is_dev_cn10kb(pfvf->pdev))
@@ -915,6 +932,17 @@ static inline u16 otx2_get_total_tx_queues(struct otx2_nic *pfvf)
915932
return pfvf->hw.non_qos_queues + pfvf->hw.tc_tx_queues;
916933
}
917934

935+
static inline u64 otx2_convert_rate(u64 rate)
936+
{
937+
u64 converted_rate;
938+
939+
/* Convert bytes per second to Mbps */
940+
converted_rate = rate * 8;
941+
converted_rate = max_t(u64, converted_rate / 1000000, 1);
942+
943+
return converted_rate;
944+
}
945+
918946
/* MSI-X APIs */
919947
void otx2_free_cints(struct otx2_nic *pfvf, int n);
920948
void otx2_set_cints_affinity(struct otx2_nic *pfvf);

drivers/net/ethernet/marvell/octeontx2/nic/otx2_reg.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,12 +145,25 @@
145145
#define NIX_AF_TL1X_TOPOLOGY(a) (0xC80 | (a) << 16)
146146
#define NIX_AF_TL2X_PARENT(a) (0xE88 | (a) << 16)
147147
#define NIX_AF_TL2X_SCHEDULE(a) (0xE00 | (a) << 16)
148+
#define NIX_AF_TL2X_TOPOLOGY(a) (0xE80 | (a) << 16)
149+
#define NIX_AF_TL2X_CIR(a) (0xE20 | (a) << 16)
150+
#define NIX_AF_TL2X_PIR(a) (0xE30 | (a) << 16)
148151
#define NIX_AF_TL3X_PARENT(a) (0x1088 | (a) << 16)
149152
#define NIX_AF_TL3X_SCHEDULE(a) (0x1000 | (a) << 16)
153+
#define NIX_AF_TL3X_SHAPE(a) (0x1010 | (a) << 16)
154+
#define NIX_AF_TL3X_CIR(a) (0x1020 | (a) << 16)
155+
#define NIX_AF_TL3X_PIR(a) (0x1030 | (a) << 16)
156+
#define NIX_AF_TL3X_TOPOLOGY(a) (0x1080 | (a) << 16)
150157
#define NIX_AF_TL4X_PARENT(a) (0x1288 | (a) << 16)
151158
#define NIX_AF_TL4X_SCHEDULE(a) (0x1200 | (a) << 16)
159+
#define NIX_AF_TL4X_SHAPE(a) (0x1210 | (a) << 16)
160+
#define NIX_AF_TL4X_CIR(a) (0x1220 | (a) << 16)
152161
#define NIX_AF_TL4X_PIR(a) (0x1230 | (a) << 16)
162+
#define NIX_AF_TL4X_TOPOLOGY(a) (0x1280 | (a) << 16)
153163
#define NIX_AF_MDQX_SCHEDULE(a) (0x1400 | (a) << 16)
164+
#define NIX_AF_MDQX_SHAPE(a) (0x1410 | (a) << 16)
165+
#define NIX_AF_MDQX_CIR(a) (0x1420 | (a) << 16)
166+
#define NIX_AF_MDQX_PIR(a) (0x1430 | (a) << 16)
154167
#define NIX_AF_MDQX_PARENT(a) (0x1480 | (a) << 16)
155168
#define NIX_AF_TL3_TL2X_LINKX_CFG(a, b) (0x1700 | (a) << 16 | (b) << 3)
156169

drivers/net/ethernet/marvell/octeontx2/nic/otx2_tc.c

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -20,24 +20,9 @@
2020
#include "cn10k.h"
2121
#include "otx2_common.h"
2222

23-
/* Egress rate limiting definitions */
24-
#define MAX_BURST_EXPONENT 0x0FULL
25-
#define MAX_BURST_MANTISSA 0xFFULL
26-
#define MAX_BURST_SIZE 130816ULL
27-
#define MAX_RATE_DIVIDER_EXPONENT 12ULL
28-
#define MAX_RATE_EXPONENT 0x0FULL
29-
#define MAX_RATE_MANTISSA 0xFFULL
30-
3123
#define CN10K_MAX_BURST_MANTISSA 0x7FFFULL
3224
#define CN10K_MAX_BURST_SIZE 8453888ULL
3325

34-
/* Bitfields in NIX_TLX_PIR register */
35-
#define TLX_RATE_MANTISSA GENMASK_ULL(8, 1)
36-
#define TLX_RATE_EXPONENT GENMASK_ULL(12, 9)
37-
#define TLX_RATE_DIVIDER_EXPONENT GENMASK_ULL(16, 13)
38-
#define TLX_BURST_MANTISSA GENMASK_ULL(36, 29)
39-
#define TLX_BURST_EXPONENT GENMASK_ULL(40, 37)
40-
4126
#define CN10K_TLX_BURST_MANTISSA GENMASK_ULL(43, 29)
4227
#define CN10K_TLX_BURST_EXPONENT GENMASK_ULL(47, 44)
4328

@@ -264,7 +249,6 @@ static int otx2_tc_egress_matchall_install(struct otx2_nic *nic,
264249
struct netlink_ext_ack *extack = cls->common.extack;
265250
struct flow_action *actions = &cls->rule->action;
266251
struct flow_action_entry *entry;
267-
u64 rate;
268252
int err;
269253

270254
err = otx2_tc_validate_flow(nic, actions, extack);
@@ -288,10 +272,8 @@ static int otx2_tc_egress_matchall_install(struct otx2_nic *nic,
288272
NL_SET_ERR_MSG_MOD(extack, "QoS offload not support packets per second");
289273
return -EOPNOTSUPP;
290274
}
291-
/* Convert bytes per second to Mbps */
292-
rate = entry->police.rate_bytes_ps * 8;
293-
rate = max_t(u64, rate / 1000000, 1);
294-
err = otx2_set_matchall_egress_rate(nic, entry->police.burst, rate);
275+
err = otx2_set_matchall_egress_rate(nic, entry->police.burst,
276+
otx2_convert_rate(entry->police.rate_bytes_ps));
295277
if (err)
296278
return err;
297279
nic->flags |= OTX2_FLAG_TC_MATCHALL_EGRESS_ENABLED;

0 commit comments

Comments
 (0)