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)
|
||||
{
|
||||
struct qed_hw_cid_data *p_rx_cid;
|
||||
u64 init_prod_val = 0;
|
||||
u32 init_prod_val = 0;
|
||||
u16 abs_l2_queue = 0;
|
||||
u8 abs_stats_id = 0;
|
||||
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);
|
||||
|
||||
/* 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));
|
||||
|
||||
/* 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 */
|
||||
if (pp_prod) {
|
||||
u64 init_prod_val = 0;
|
||||
u32 init_prod_val = 0;
|
||||
|
||||
*pp_prod = (u8 __iomem *)p_hwfn->regview + resp->offset;
|
||||
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);
|
||||
|
||||
/* 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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue