提交 4903e798 编写于 作者: Y Yanling Song 提交者: Zheng Zengkai

net/spnic:Remove the code about little endian and big endian conversion

Ramaxel inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I4P01N
CVE: NA

Remove the code of endian converting
since hardware converts endian automatically.
Signed-off-by: NYanling Song <songyl@ramaxel.com>
Reviewed-by: NYang Gan <yanggan@ramaxel.com>
Acked-by: NXie XiuQi <xiexiuqi@huawei.com>
Acked-by: NXie XiuQi <xiexiuqi@huawei.com>
Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
上级 0a6ce503
...@@ -343,10 +343,6 @@ static void cmdq_set_db(struct sphw_cmdq *cmdq, ...@@ -343,10 +343,6 @@ static void cmdq_set_db(struct sphw_cmdq *cmdq,
cmdq_fill_db(&db, cmdq_type, prod_idx); cmdq_fill_db(&db, cmdq_type, prod_idx);
/* The data that is written to HW should be in Big Endian Format */
db.db_info = sphw_hw_be32(db.db_info);
db.db_head = sphw_hw_be32(db.db_head);
wmb(); /* write all before the doorbell */ wmb(); /* write all before the doorbell */
writeq(*((u64 *)&db), CMDQ_DB_ADDR(cmdq->db_base, prod_idx)); writeq(*((u64 *)&db), CMDQ_DB_ADDR(cmdq->db_base, prod_idx));
} }
...@@ -482,24 +478,21 @@ static void cmdq_update_cmd_status(struct sphw_cmdq *cmdq, u16 prod_idx, ...@@ -482,24 +478,21 @@ static void cmdq_update_cmd_status(struct sphw_cmdq *cmdq, u16 prod_idx,
cmd_info = &cmdq->cmd_infos[prod_idx]; cmd_info = &cmdq->cmd_infos[prod_idx];
if (cmd_info->errcode) { if (cmd_info->errcode) {
status_info = sphw_hw_cpu32(wqe_lcmd->status.status_info); status_info = wqe_lcmd->status.status_info;
*cmd_info->errcode = WQE_ERRCODE_GET(status_info, VAL); *cmd_info->errcode = WQE_ERRCODE_GET(status_info, VAL);
} }
if (cmd_info->direct_resp) if (cmd_info->direct_resp)
*cmd_info->direct_resp = *cmd_info->direct_resp = wqe_lcmd->completion.direct_resp;
sphw_hw_cpu32(wqe_lcmd->completion.direct_resp);
} }
static int sphw_cmdq_sync_timeout_check(struct sphw_cmdq *cmdq, struct sphw_cmdq_wqe *wqe, u16 pi) static int sphw_cmdq_sync_timeout_check(struct sphw_cmdq *cmdq, struct sphw_cmdq_wqe *wqe, u16 pi)
{ {
struct sphw_cmdq_wqe_lcmd *wqe_lcmd; struct sphw_cmdq_wqe_lcmd *wqe_lcmd;
struct sphw_ctrl *ctrl;
u32 ctrl_info; u32 ctrl_info;
wqe_lcmd = &wqe->wqe_lcmd; wqe_lcmd = &wqe->wqe_lcmd;
ctrl = &wqe_lcmd->ctrl; ctrl_info = wqe_lcmd->ctrl.ctrl_info;
ctrl_info = sphw_hw_cpu32((ctrl)->ctrl_info);
if (!WQE_COMPLETED(ctrl_info)) { if (!WQE_COMPLETED(ctrl_info)) {
sdk_info(cmdq->hwdev->dev_hdl, "Cmdq sync command check busy bit not set\n"); sdk_info(cmdq->hwdev->dev_hdl, "Cmdq sync command check busy bit not set\n");
return -EFAULT; return -EFAULT;
...@@ -640,7 +633,7 @@ static int cmdq_sync_cmd_direct_resp(struct sphw_cmdq *cmdq, u8 mod, ...@@ -640,7 +633,7 @@ static int cmdq_sync_cmd_direct_resp(struct sphw_cmdq *cmdq, u8 mod,
struct sphw_cmdq_cmd_info *cmd_info = NULL, saved_cmd_info; struct sphw_cmdq_cmd_info *cmd_info = NULL, saved_cmd_info;
struct completion done; struct completion done;
u16 curr_prod_idx, next_prod_idx; u16 curr_prod_idx, next_prod_idx;
int wrapped, errcode = 0, wqe_size = WQE_LCMD_SIZE; int wrapped, errcode = 0;
int cmpt_code = CMDQ_SEND_CMPT_CODE; int cmpt_code = CMDQ_SEND_CMPT_CODE;
u64 curr_msg_id; u64 curr_msg_id;
int err; int err;
...@@ -682,9 +675,6 @@ static int cmdq_sync_cmd_direct_resp(struct sphw_cmdq *cmdq, u8 mod, ...@@ -682,9 +675,6 @@ static int cmdq_sync_cmd_direct_resp(struct sphw_cmdq *cmdq, u8 mod,
cmdq_set_lcmd_wqe(&wqe, SYNC_CMD_DIRECT_RESP, buf_in, NULL, cmdq_set_lcmd_wqe(&wqe, SYNC_CMD_DIRECT_RESP, buf_in, NULL,
wrapped, mod, cmd, curr_prod_idx); wrapped, mod, cmd, curr_prod_idx);
/* The data that is written to HW should be in Big Endian Format */
sphw_hw_be32_len(&wqe, wqe_size);
/* CMDQ WQE is not shadow, therefore wqe will be written to wq */ /* CMDQ WQE is not shadow, therefore wqe will be written to wq */
cmdq_wqe_fill(curr_wqe, &wqe); cmdq_wqe_fill(curr_wqe, &wqe);
...@@ -726,7 +716,7 @@ static int cmdq_sync_cmd_detail_resp(struct sphw_cmdq *cmdq, u8 mod, u8 cmd, ...@@ -726,7 +716,7 @@ static int cmdq_sync_cmd_detail_resp(struct sphw_cmdq *cmdq, u8 mod, u8 cmd,
struct sphw_cmdq_cmd_info *cmd_info = NULL, saved_cmd_info; struct sphw_cmdq_cmd_info *cmd_info = NULL, saved_cmd_info;
struct completion done; struct completion done;
u16 curr_prod_idx, next_prod_idx; u16 curr_prod_idx, next_prod_idx;
int wrapped, errcode = 0, wqe_size = WQE_LCMD_SIZE; int wrapped, errcode = 0;
int cmpt_code = CMDQ_SEND_CMPT_CODE; int cmpt_code = CMDQ_SEND_CMPT_CODE;
u64 curr_msg_id; u64 curr_msg_id;
int err; int err;
...@@ -768,8 +758,6 @@ static int cmdq_sync_cmd_detail_resp(struct sphw_cmdq *cmdq, u8 mod, u8 cmd, ...@@ -768,8 +758,6 @@ static int cmdq_sync_cmd_detail_resp(struct sphw_cmdq *cmdq, u8 mod, u8 cmd,
cmdq_set_lcmd_wqe(&wqe, SYNC_CMD_SGE_RESP, buf_in, buf_out, cmdq_set_lcmd_wqe(&wqe, SYNC_CMD_SGE_RESP, buf_in, buf_out,
wrapped, mod, cmd, curr_prod_idx); wrapped, mod, cmd, curr_prod_idx);
sphw_hw_be32_len(&wqe, wqe_size);
cmdq_wqe_fill(curr_wqe, &wqe); cmdq_wqe_fill(curr_wqe, &wqe);
(cmd_info->cmdq_msg_id)++; (cmd_info->cmdq_msg_id)++;
...@@ -805,7 +793,6 @@ static int cmdq_async_cmd(struct sphw_cmdq *cmdq, u8 mod, u8 cmd, ...@@ -805,7 +793,6 @@ static int cmdq_async_cmd(struct sphw_cmdq *cmdq, u8 mod, u8 cmd,
{ {
struct sphw_cmdq_cmd_info *cmd_info = NULL; struct sphw_cmdq_cmd_info *cmd_info = NULL;
struct sphw_wq *wq = &cmdq->wq; struct sphw_wq *wq = &cmdq->wq;
int wqe_size = WQE_LCMD_SIZE;
u16 curr_prod_idx, next_prod_idx; u16 curr_prod_idx, next_prod_idx;
struct sphw_cmdq_wqe *curr_wqe = NULL, wqe; struct sphw_cmdq_wqe *curr_wqe = NULL, wqe;
int wrapped, err; int wrapped, err;
...@@ -832,8 +819,6 @@ static int cmdq_async_cmd(struct sphw_cmdq *cmdq, u8 mod, u8 cmd, ...@@ -832,8 +819,6 @@ static int cmdq_async_cmd(struct sphw_cmdq *cmdq, u8 mod, u8 cmd,
cmdq_set_lcmd_wqe(&wqe, ASYNC_CMD, buf_in, NULL, wrapped, cmdq_set_lcmd_wqe(&wqe, ASYNC_CMD, buf_in, NULL, wrapped,
mod, cmd, curr_prod_idx); mod, cmd, curr_prod_idx);
/* The data that is written to HW should be in Big Endian Format */
sphw_hw_be32_len(&wqe, wqe_size);
cmdq_wqe_fill(curr_wqe, &wqe); cmdq_wqe_fill(curr_wqe, &wqe);
cmd_info = &cmdq->cmd_infos[curr_prod_idx]; cmd_info = &cmdq->cmd_infos[curr_prod_idx];
...@@ -858,7 +843,7 @@ int cmdq_set_arm_bit(struct sphw_cmdq *cmdq, const void *buf_in, ...@@ -858,7 +843,7 @@ int cmdq_set_arm_bit(struct sphw_cmdq *cmdq, const void *buf_in,
struct sphw_wq *wq = &cmdq->wq; struct sphw_wq *wq = &cmdq->wq;
struct sphw_cmdq_wqe *curr_wqe = NULL, wqe; struct sphw_cmdq_wqe *curr_wqe = NULL, wqe;
u16 curr_prod_idx, next_prod_idx; u16 curr_prod_idx, next_prod_idx;
int wrapped, wqe_size = WQE_SCMD_SIZE; int wrapped;
/* Keep wrapped and doorbell index correct. bh - for tasklet(ceq) */ /* Keep wrapped and doorbell index correct. bh - for tasklet(ceq) */
spin_lock_bh(&cmdq->cmdq_lock); spin_lock_bh(&cmdq->cmdq_lock);
...@@ -883,9 +868,6 @@ int cmdq_set_arm_bit(struct sphw_cmdq *cmdq, const void *buf_in, ...@@ -883,9 +868,6 @@ int cmdq_set_arm_bit(struct sphw_cmdq *cmdq, const void *buf_in,
wrapped, SPHW_MOD_COMM, CMDQ_SET_ARM_CMD, wrapped, SPHW_MOD_COMM, CMDQ_SET_ARM_CMD,
curr_prod_idx); curr_prod_idx);
/* The data that is written to HW should be in Big Endian Format */
sphw_cpu_to_be32(&wqe, wqe_size);
/* cmdq wqe is not shadow, therefore wqe will be written to wq */ /* cmdq wqe is not shadow, therefore wqe will be written to wq */
cmdq_wqe_fill(curr_wqe, &wqe); cmdq_wqe_fill(curr_wqe, &wqe);
...@@ -1102,7 +1084,7 @@ static void clear_wqe_complete_bit(struct sphw_cmdq *cmdq, ...@@ -1102,7 +1084,7 @@ static void clear_wqe_complete_bit(struct sphw_cmdq *cmdq,
struct sphw_cmdq_wqe *wqe, u16 ci) struct sphw_cmdq_wqe *wqe, u16 ci)
{ {
struct sphw_ctrl *ctrl = NULL; struct sphw_ctrl *ctrl = NULL;
u32 header_info = sphw_hw_cpu32(WQE_HEADER(wqe)->header_info); u32 header_info = WQE_HEADER(wqe)->header_info;
enum data_format df = CMDQ_WQE_HEADER_GET(header_info, DATA_FMT); enum data_format df = CMDQ_WQE_HEADER_GET(header_info, DATA_FMT);
if (df == DATA_SGE) if (df == DATA_SGE)
...@@ -1157,7 +1139,7 @@ static int cmdq_arm_ceq_handler(struct sphw_cmdq *cmdq, ...@@ -1157,7 +1139,7 @@ static int cmdq_arm_ceq_handler(struct sphw_cmdq *cmdq,
struct sphw_cmdq_wqe *wqe, u16 ci) struct sphw_cmdq_wqe *wqe, u16 ci)
{ {
struct sphw_ctrl *ctrl = &wqe->inline_wqe.wqe_scmd.ctrl; struct sphw_ctrl *ctrl = &wqe->inline_wqe.wqe_scmd.ctrl;
u32 ctrl_info = sphw_hw_cpu32((ctrl)->ctrl_info); u32 ctrl_info = ctrl->ctrl_info;
if (!WQE_COMPLETED(ctrl_info)) if (!WQE_COMPLETED(ctrl_info))
return -EBUSY; return -EBUSY;
...@@ -1188,7 +1170,6 @@ void sphw_cmdq_ceq_handler(void *handle, u32 ceqe_data) ...@@ -1188,7 +1170,6 @@ void sphw_cmdq_ceq_handler(void *handle, u32 ceqe_data)
struct sphw_hwdev *hwdev = cmdqs->hwdev; struct sphw_hwdev *hwdev = cmdqs->hwdev;
struct sphw_cmdq_wqe *wqe = NULL; struct sphw_cmdq_wqe *wqe = NULL;
struct sphw_cmdq_wqe_lcmd *wqe_lcmd = NULL; struct sphw_cmdq_wqe_lcmd *wqe_lcmd = NULL;
struct sphw_ctrl *ctrl = NULL;
struct sphw_cmdq_cmd_info *cmd_info = NULL; struct sphw_cmdq_cmd_info *cmd_info = NULL;
u32 ctrl_info; u32 ctrl_info;
u16 ci; u16 ci;
...@@ -1216,8 +1197,7 @@ void sphw_cmdq_ceq_handler(void *handle, u32 ceqe_data) ...@@ -1216,8 +1197,7 @@ void sphw_cmdq_ceq_handler(void *handle, u32 ceqe_data)
default: default:
/* only arm bit is using scmd wqe, the wqe is lcmd */ /* only arm bit is using scmd wqe, the wqe is lcmd */
wqe_lcmd = &wqe->wqe_lcmd; wqe_lcmd = &wqe->wqe_lcmd;
ctrl = &wqe_lcmd->ctrl; ctrl_info = wqe_lcmd->ctrl.ctrl_info;
ctrl_info = sphw_hw_cpu32((ctrl)->ctrl_info);
if (!WQE_COMPLETED(ctrl_info)) if (!WQE_COMPLETED(ctrl_info))
return; return;
......
...@@ -93,18 +93,6 @@ static inline void sphw_set_sge(struct sphw_sge *sge, dma_addr_t addr, int len) ...@@ -93,18 +93,6 @@ static inline void sphw_set_sge(struct sphw_sge *sge, dma_addr_t addr, int len)
sge->len = len; sge->len = len;
} }
#define sphw_hw_be32(val) (val)
#define sphw_hw_cpu32(val) (val)
#define sphw_hw_cpu16(val) (val)
static inline void sphw_hw_be32_len(void *data, int len)
{
}
static inline void sphw_hw_cpu32_len(void *data, int len)
{
}
#define sdk_err(dev, format, ...) dev_err(dev, "[COMM]" format, ##__VA_ARGS__) #define sdk_err(dev, format, ...) dev_err(dev, "[COMM]" format, ##__VA_ARGS__)
#define sdk_warn(dev, format, ...) dev_warn(dev, "[COMM]" format, ##__VA_ARGS__) #define sdk_warn(dev, format, ...) dev_warn(dev, "[COMM]" format, ##__VA_ARGS__)
#define sdk_notice(dev, format, ...) dev_notice(dev, "[COMM]" format, ##__VA_ARGS__) #define sdk_notice(dev, format, ...) dev_notice(dev, "[COMM]" format, ##__VA_ARGS__)
......
...@@ -101,8 +101,7 @@ static inline u16 spnic_get_sq_local_pi(struct spnic_io_queue *sq) ...@@ -101,8 +101,7 @@ static inline u16 spnic_get_sq_local_pi(struct spnic_io_queue *sq)
*/ */
static inline u16 spnic_get_sq_hw_ci(struct spnic_io_queue *sq) static inline u16 spnic_get_sq_hw_ci(struct spnic_io_queue *sq)
{ {
return WQ_MASK_IDX(&sq->wq, return WQ_MASK_IDX(&sq->wq, *(u16 *)sq->tx.cons_idx_addr);
sphw_hw_cpu16(*(u16 *)sq->tx.cons_idx_addr));
} }
/* * /* *
...@@ -281,9 +280,6 @@ static inline void spnic_write_db(struct spnic_io_queue *queue, int cos, u8 cfla ...@@ -281,9 +280,6 @@ static inline void spnic_write_db(struct spnic_io_queue *queue, int cos, u8 cfla
db.db_info = DB_INFO_SET(SRC_TYPE, TYPE) | DB_INFO_SET(cflag, CFLAG) | db.db_info = DB_INFO_SET(SRC_TYPE, TYPE) | DB_INFO_SET(cflag, CFLAG) |
DB_INFO_SET(cos, COS) | DB_INFO_SET(queue->q_id, QID); DB_INFO_SET(cos, COS) | DB_INFO_SET(queue->q_id, QID);
db.pi_hi = DB_PI_HIGH(pi); db.pi_hi = DB_PI_HIGH(pi);
/* Data should be written to HW in Big Endian Format */
db.db_info = sphw_hw_be32(db.db_info);
db.pi_hi = sphw_hw_be32(db.pi_hi);
wmb(); /* Write all before the doorbell */ wmb(); /* Write all before the doorbell */
......
...@@ -352,7 +352,7 @@ enum sq_wqe_tasksect_len_type { ...@@ -352,7 +352,7 @@ enum sq_wqe_tasksect_len_type {
static inline u32 spnic_get_pkt_len_for_super_cqe(struct spnic_rq_cqe *cqe, bool last) static inline u32 spnic_get_pkt_len_for_super_cqe(struct spnic_rq_cqe *cqe, bool last)
{ {
u32 pkt_len = sphw_hw_cpu32(cqe->pkt_info); u32 pkt_len = cqe->pkt_info;
if (!last) if (!last)
return RQ_CQE_PKT_LEN_GET(pkt_len, FIRST_LEN); return RQ_CQE_PKT_LEN_GET(pkt_len, FIRST_LEN);
...@@ -376,7 +376,6 @@ static inline void spnic_prepare_sq_ctrl(struct spnic_sq_wqe_combo *wqe_combo, ...@@ -376,7 +376,6 @@ static inline void spnic_prepare_sq_ctrl(struct spnic_sq_wqe_combo *wqe_combo,
SQ_CTRL_SET(wqe_combo->wqe_type, EXTENDED) | SQ_CTRL_SET(wqe_combo->wqe_type, EXTENDED) |
SQ_CTRL_SET(owner, OWNER); SQ_CTRL_SET(owner, OWNER);
wqe_desc->ctrl_len = sphw_hw_be32(wqe_desc->ctrl_len);
/* compact wqe queue_info will transfer to ucode */ /* compact wqe queue_info will transfer to ucode */
wqe_desc->queue_info = 0; wqe_desc->queue_info = 0;
return; return;
...@@ -388,8 +387,6 @@ static inline void spnic_prepare_sq_ctrl(struct spnic_sq_wqe_combo *wqe_combo, ...@@ -388,8 +387,6 @@ static inline void spnic_prepare_sq_ctrl(struct spnic_sq_wqe_combo *wqe_combo,
SQ_CTRL_SET(wqe_combo->wqe_type, EXTENDED) | SQ_CTRL_SET(wqe_combo->wqe_type, EXTENDED) |
SQ_CTRL_SET(owner, OWNER); SQ_CTRL_SET(owner, OWNER);
wqe_desc->ctrl_len = sphw_hw_be32(wqe_desc->ctrl_len);
wqe_desc->queue_info = queue_info; wqe_desc->queue_info = queue_info;
wqe_desc->queue_info |= SQ_CTRL_QUEUE_INFO_SET(1U, UC); wqe_desc->queue_info |= SQ_CTRL_QUEUE_INFO_SET(1U, UC);
...@@ -400,8 +397,6 @@ static inline void spnic_prepare_sq_ctrl(struct spnic_sq_wqe_combo *wqe_combo, ...@@ -400,8 +397,6 @@ static inline void spnic_prepare_sq_ctrl(struct spnic_sq_wqe_combo *wqe_combo,
wqe_desc->queue_info = SQ_CTRL_QUEUE_INFO_CLEAR(wqe_desc->queue_info, MSS); wqe_desc->queue_info = SQ_CTRL_QUEUE_INFO_CLEAR(wqe_desc->queue_info, MSS);
wqe_desc->queue_info |= SQ_CTRL_QUEUE_INFO_SET(TX_MSS_MIN, MSS); wqe_desc->queue_info |= SQ_CTRL_QUEUE_INFO_SET(TX_MSS_MIN, MSS);
} }
wqe_desc->queue_info = sphw_hw_be32(wqe_desc->queue_info);
} }
/* * /* *
......
...@@ -92,7 +92,6 @@ static u32 spnic_rx_fill_wqe(struct spnic_rxq *rxq) ...@@ -92,7 +92,6 @@ static u32 spnic_rx_fill_wqe(struct spnic_rxq *rxq)
{ {
struct net_device *netdev = rxq->netdev; struct net_device *netdev = rxq->netdev;
struct spnic_nic_dev *nic_dev = netdev_priv(netdev); struct spnic_nic_dev *nic_dev = netdev_priv(netdev);
int rq_wqe_len = rxq->rq->wq.wqebb_size;
struct spnic_rq_wqe *rq_wqe = NULL; struct spnic_rq_wqe *rq_wqe = NULL;
struct spnic_rx_info *rx_info = NULL; struct spnic_rx_info *rx_info = NULL;
u32 i; u32 i;
...@@ -113,7 +112,6 @@ static u32 spnic_rx_fill_wqe(struct spnic_rxq *rxq) ...@@ -113,7 +112,6 @@ static u32 spnic_rx_fill_wqe(struct spnic_rxq *rxq)
rq_wqe->normal_wqe.cqe_lo_addr = lower_32_bits(rx_info->cqe_dma); rq_wqe->normal_wqe.cqe_lo_addr = lower_32_bits(rx_info->cqe_dma);
} }
sphw_hw_be32_len(rq_wqe, rq_wqe_len);
rx_info->rq_wqe = rq_wqe; rx_info->rq_wqe = rq_wqe;
} }
...@@ -179,17 +177,12 @@ static u32 stub_spnic_rx_fill_buffers(struct spnic_rxq *rxq) ...@@ -179,17 +177,12 @@ static u32 stub_spnic_rx_fill_buffers(struct spnic_rxq *rxq)
dma_addr = rx_info->buf_dma_addr; dma_addr = rx_info->buf_dma_addr;
if (rxq->rq->wqe_type == SPNIC_EXTEND_RQ_WQE) { if (rxq->rq->wqe_type == SPNIC_EXTEND_RQ_WQE) {
rq_wqe->extend_wqe.buf_desc.sge.hi_addr = rq_wqe->extend_wqe.buf_desc.sge.hi_addr = upper_32_bits(dma_addr);
sphw_hw_be32(upper_32_bits(dma_addr)); rq_wqe->extend_wqe.buf_desc.sge.lo_addr = lower_32_bits(dma_addr);
rq_wqe->extend_wqe.buf_desc.sge.lo_addr = rq_wqe->extend_wqe.buf_desc.sge.len = rx_info->skb_len;
sphw_hw_be32(lower_32_bits(dma_addr));
rq_wqe->extend_wqe.buf_desc.sge.len =
sphw_hw_be32(rx_info->skb_len);
} else { } else {
rq_wqe->normal_wqe.buf_hi_addr = rq_wqe->normal_wqe.buf_hi_addr = upper_32_bits(dma_addr);
sphw_hw_be32(upper_32_bits(dma_addr)); rq_wqe->normal_wqe.buf_lo_addr = lower_32_bits(dma_addr);
rq_wqe->normal_wqe.buf_lo_addr =
sphw_hw_be32(lower_32_bits(dma_addr));
} }
rxq->next_to_update = (rxq->next_to_update + 1) & rxq->q_mask; rxq->next_to_update = (rxq->next_to_update + 1) & rxq->q_mask;
} }
...@@ -236,15 +229,11 @@ static u32 spnic_rx_fill_buffers(struct spnic_rxq *rxq) ...@@ -236,15 +229,11 @@ static u32 spnic_rx_fill_buffers(struct spnic_rxq *rxq)
rq_wqe = rx_info->rq_wqe; rq_wqe = rx_info->rq_wqe;
if (rxq->rq->wqe_type == SPNIC_EXTEND_RQ_WQE) { if (rxq->rq->wqe_type == SPNIC_EXTEND_RQ_WQE) {
rq_wqe->extend_wqe.buf_desc.sge.hi_addr = rq_wqe->extend_wqe.buf_desc.sge.hi_addr = upper_32_bits(dma_addr);
sphw_hw_be32(upper_32_bits(dma_addr)); rq_wqe->extend_wqe.buf_desc.sge.lo_addr = lower_32_bits(dma_addr);
rq_wqe->extend_wqe.buf_desc.sge.lo_addr =
sphw_hw_be32(lower_32_bits(dma_addr));
} else { } else {
rq_wqe->normal_wqe.buf_hi_addr = rq_wqe->normal_wqe.buf_hi_addr = upper_32_bits(dma_addr);
sphw_hw_be32(upper_32_bits(dma_addr)); rq_wqe->normal_wqe.buf_lo_addr = lower_32_bits(dma_addr);
rq_wqe->normal_wqe.buf_lo_addr =
sphw_hw_be32(lower_32_bits(dma_addr));
} }
rxq->next_to_update = (rxq->next_to_update + 1) & rxq->q_mask; rxq->next_to_update = (rxq->next_to_update + 1) & rxq->q_mask;
} }
...@@ -784,7 +773,7 @@ int recv_one_pkt(struct spnic_rxq *rxq, struct spnic_rq_cqe *rx_cqe, ...@@ -784,7 +773,7 @@ int recv_one_pkt(struct spnic_rxq *rxq, struct spnic_rq_cqe *rx_cqe,
if (skb_is_nonlinear(skb)) if (skb_is_nonlinear(skb))
spnic_pull_tail(skb); spnic_pull_tail(skb);
offload_type = sphw_hw_cpu32(rx_cqe->offload_type); offload_type = rx_cqe->offload_type;
spnic_rx_csum(rxq, offload_type, status, skb); spnic_rx_csum(rxq, offload_type, status, skb);
spnic_rx_gro(rxq, offload_type, skb); spnic_rx_gro(rxq, offload_type, skb);
...@@ -867,7 +856,7 @@ static inline int recv_supper_cqe(struct spnic_rxq *rxq, struct spnic_rq_cqe *rx ...@@ -867,7 +856,7 @@ static inline int recv_supper_cqe(struct spnic_rxq *rxq, struct spnic_rq_cqe *rx
#define LRO_PKT_HDR_LEN_IPV4 66 #define LRO_PKT_HDR_LEN_IPV4 66
#define LRO_PKT_HDR_LEN_IPV6 86 #define LRO_PKT_HDR_LEN_IPV6 86
#define LRO_PKT_HDR_LEN(cqe) \ #define LRO_PKT_HDR_LEN(cqe) \
(SPNIC_GET_RX_IP_TYPE(sphw_hw_cpu32((cqe)->offload_type)) == \ (SPNIC_GET_RX_IP_TYPE((cqe)->offload_type) == \
SPNIC_RX_IPV6_PKT ? LRO_PKT_HDR_LEN_IPV6 : LRO_PKT_HDR_LEN_IPV4) SPNIC_RX_IPV6_PKT ? LRO_PKT_HDR_LEN_IPV6 : LRO_PKT_HDR_LEN_IPV4)
static void stub_rx_recv_jumbo_pkt(struct spnic_rxq *rxq, struct sk_buff *head_skb, static void stub_rx_recv_jumbo_pkt(struct spnic_rxq *rxq, struct sk_buff *head_skb,
...@@ -997,7 +986,7 @@ int spnic_rx_poll(struct spnic_rxq *rxq, int budget) ...@@ -997,7 +986,7 @@ int spnic_rx_poll(struct spnic_rxq *rxq, int budget)
while (likely(pkts < budget)) { while (likely(pkts < budget)) {
sw_ci = rxq->cons_idx & rxq->q_mask; sw_ci = rxq->cons_idx & rxq->q_mask;
rx_cqe = rxq->rx_info[sw_ci].cqe; rx_cqe = rxq->rx_info[sw_ci].cqe;
status = sphw_hw_cpu32(rx_cqe->status); status = rx_cqe->status;
if (!SPNIC_GET_RX_DONE(status)) if (!SPNIC_GET_RX_DONE(status))
break; break;
...@@ -1005,8 +994,8 @@ int spnic_rx_poll(struct spnic_rxq *rxq, int budget) ...@@ -1005,8 +994,8 @@ int spnic_rx_poll(struct spnic_rxq *rxq, int budget)
/* make sure we read rx_done before packet length */ /* make sure we read rx_done before packet length */
rmb(); rmb();
vlan_len = sphw_hw_cpu32(rx_cqe->vlan_len); vlan_len = rx_cqe->vlan_len;
pkt_info = sphw_hw_cpu32(rx_cqe->pkt_info); pkt_info = rx_cqe->pkt_info;
pkt_len = SPNIC_GET_RX_PKT_LEN(vlan_len); pkt_len = SPNIC_GET_RX_PKT_LEN(vlan_len);
if (unlikely(SPNIC_GET_SUPER_CQE_EN(pkt_info))) { if (unlikely(SPNIC_GET_SUPER_CQE_EN(pkt_info))) {
......
...@@ -86,9 +86,9 @@ static void txq_stats_init(struct spnic_txq *txq) ...@@ -86,9 +86,9 @@ static void txq_stats_init(struct spnic_txq *txq)
static inline void spnic_set_buf_desc(struct spnic_sq_bufdesc *buf_descs, dma_addr_t addr, u32 len) static inline void spnic_set_buf_desc(struct spnic_sq_bufdesc *buf_descs, dma_addr_t addr, u32 len)
{ {
buf_descs->hi_addr = sphw_hw_be32(upper_32_bits(addr)); buf_descs->hi_addr = upper_32_bits(addr);
buf_descs->lo_addr = sphw_hw_be32(lower_32_bits(addr)); buf_descs->lo_addr = lower_32_bits(addr);
buf_descs->len = sphw_hw_be32(len); buf_descs->len = len;
} }
static int tx_map_skb(struct spnic_nic_dev *nic_dev, struct sk_buff *skb, static int tx_map_skb(struct spnic_nic_dev *nic_dev, struct sk_buff *skb,
...@@ -112,8 +112,8 @@ static int tx_map_skb(struct spnic_nic_dev *nic_dev, struct sk_buff *skb, ...@@ -112,8 +112,8 @@ static int tx_map_skb(struct spnic_nic_dev *nic_dev, struct sk_buff *skb,
dma_info[0].len = skb_headlen(skb); dma_info[0].len = skb_headlen(skb);
wqe_desc->hi_addr = sphw_hw_be32(upper_32_bits(dma_info[0].dma)); wqe_desc->hi_addr = upper_32_bits(dma_info[0].dma);
wqe_desc->lo_addr = sphw_hw_be32(lower_32_bits(dma_info[0].dma)); wqe_desc->lo_addr = lower_32_bits(dma_info[0].dma);
wqe_desc->ctrl_len = dma_info[0].len; wqe_desc->ctrl_len = dma_info[0].len;
...@@ -525,12 +525,10 @@ static netdev_tx_t spnic_send_one_skb(struct sk_buff *skb, struct net_device *ne ...@@ -525,12 +525,10 @@ static netdev_tx_t spnic_send_one_skb(struct sk_buff *skb, struct net_device *ne
owner = spnic_set_wqe_combo(txq, &wqe_combo, offload, num_sge, &pi); owner = spnic_set_wqe_combo(txq, &wqe_combo, offload, num_sge, &pi);
if (offload) { if (offload) {
/* ip6_frag_id is big endiant, not need to transfer */ wqe_combo.task->ip_identify = task.ip_identify;
wqe_combo.task->ip_identify = sphw_hw_be32(task.ip_identify); wqe_combo.task->pkt_info0 = task.pkt_info0;
wqe_combo.task->pkt_info0 = sphw_hw_be32(task.pkt_info0); wqe_combo.task->pkt_info2 = task.pkt_info2;
wqe_combo.task->pkt_info2 = sphw_hw_be32(task.pkt_info2); wqe_combo.task->vlan_offload = task.vlan_offload;
wqe_combo.task->vlan_offload =
sphw_hw_be32(task.vlan_offload);
} }
tx_info = &txq->tx_info[pi]; tx_info = &txq->tx_info[pi];
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册