mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-23 14:24:25 +08:00
qed: Don't over-do producer cleanup for Rx
Before requesting the firmware to start Rx queues, driver goes and sets the queue producer in the device to 0. But while the producer is 32-bit, the driver currently clears 64 bits, effectively zeroing an additional CID's producer as well. Signed-off-by: Yuval Mintz <Yuval.Mintz@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
cb1fa08877
commit
b21290b77f
@ -590,7 +590,7 @@ qed_sp_eth_rx_queue_start(struct qed_hwfn *p_hwfn,
|
|||||||
u16 cqe_pbl_size, void __iomem **pp_prod)
|
u16 cqe_pbl_size, void __iomem **pp_prod)
|
||||||
{
|
{
|
||||||
struct qed_hw_cid_data *p_rx_cid;
|
struct qed_hw_cid_data *p_rx_cid;
|
||||||
u64 init_prod_val = 0;
|
u32 init_prod_val = 0;
|
||||||
u16 abs_l2_queue = 0;
|
u16 abs_l2_queue = 0;
|
||||||
u8 abs_stats_id = 0;
|
u8 abs_stats_id = 0;
|
||||||
int rc;
|
int rc;
|
||||||
@ -618,7 +618,7 @@ qed_sp_eth_rx_queue_start(struct qed_hwfn *p_hwfn,
|
|||||||
MSTORM_ETH_PF_PRODS_OFFSET(abs_l2_queue);
|
MSTORM_ETH_PF_PRODS_OFFSET(abs_l2_queue);
|
||||||
|
|
||||||
/* Init the rcq, rx bd and rx sge (if valid) producers to 0 */
|
/* Init the rcq, rx bd and rx sge (if valid) producers to 0 */
|
||||||
__internal_ram_wr(p_hwfn, *pp_prod, sizeof(u64),
|
__internal_ram_wr(p_hwfn, *pp_prod, sizeof(u32),
|
||||||
(u32 *)(&init_prod_val));
|
(u32 *)(&init_prod_val));
|
||||||
|
|
||||||
/* Allocate a CID for the queue */
|
/* Allocate a CID for the queue */
|
||||||
|
@ -388,7 +388,7 @@ int qed_vf_pf_rxq_start(struct qed_hwfn *p_hwfn,
|
|||||||
|
|
||||||
/* Learn the address of the producer from the response */
|
/* Learn the address of the producer from the response */
|
||||||
if (pp_prod) {
|
if (pp_prod) {
|
||||||
u64 init_prod_val = 0;
|
u32 init_prod_val = 0;
|
||||||
|
|
||||||
*pp_prod = (u8 __iomem *)p_hwfn->regview + resp->offset;
|
*pp_prod = (u8 __iomem *)p_hwfn->regview + resp->offset;
|
||||||
DP_VERBOSE(p_hwfn, QED_MSG_IOV,
|
DP_VERBOSE(p_hwfn, QED_MSG_IOV,
|
||||||
@ -396,7 +396,7 @@ int qed_vf_pf_rxq_start(struct qed_hwfn *p_hwfn,
|
|||||||
rx_qid, *pp_prod, resp->offset);
|
rx_qid, *pp_prod, resp->offset);
|
||||||
|
|
||||||
/* Init the rcq, rx bd and rx sge (if valid) producers to 0 */
|
/* Init the rcq, rx bd and rx sge (if valid) producers to 0 */
|
||||||
__internal_ram_wr(p_hwfn, *pp_prod, sizeof(u64),
|
__internal_ram_wr(p_hwfn, *pp_prod, sizeof(u32),
|
||||||
(u32 *)&init_prod_val);
|
(u32 *)&init_prod_val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user