mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
liquidio VF rx data and ctl path
Adds support for VF receive data control path. Signed-off-by: Raghu Vatsavayi <raghu.vatsavayi@caviumnetworks.com> Signed-off-by: Derek Chickles <derek.chickles@caviumnetworks.com> Signed-off-by: Satanand Burla <satananda.burla@caviumnetworks.com> Signed-off-by: Felix Manlunas <felix.manlunas@caviumnetworks.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
1 parent
9bdca5c66b
commit
9217c3cf84
4 files changed
+423
-4
No files matched your search
File diff suppressed because it is too large.
Load diff
@@ -1374,7 +1374,7 @@ void lio_enable_irq(struct octeon_droq *droq, struct octeon_instr_queue *iq)
|
||||
/*write resend. Writing RESEND in SLI_PKTX_CNTS should be enough
|
||||
*to trigger tx interrupts as well, if they are pending.
|
||||
*/
|
||||
if (oct && OCTEON_CN23XX_PF(oct)) {
|
||||
if (oct && (OCTEON_CN23XX_PF(oct) || OCTEON_CN23XX_VF(oct))) {
|
||||
if (droq)
|
||||
writeq(CN23XX_INTR_RESEND, droq->pkts_sent_reg);
|
||||
/*we race with firmrware here. read and write the IN_DONE_CNTS*/
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
#include "cn66xx_regs.h"
|
||||
#include "cn66xx_device.h"
|
||||
#include "cn23xx_pf_device.h"
|
||||
#include "cn23xx_vf_device.h"
|
||||
|
||||
struct niclist {
|
||||
struct list_head list;
|
||||
@@ -259,6 +260,11 @@ int octeon_init_droq(struct octeon_device *oct,
|
||||
} else if (OCTEON_CN23XX_PF(oct)) {
|
||||
struct octeon_config *conf23 = CHIP_CONF(oct, cn23xx_pf);
|
||||
|
||||
c_pkts_per_intr = (u32)CFG_GET_OQ_PKTS_PER_INTR(conf23);
|
||||
c_refill_threshold = (u32)CFG_GET_OQ_REFILL_THRESHOLD(conf23);
|
||||
} else if (OCTEON_CN23XX_VF(oct)) {
|
||||
struct octeon_config *conf23 = CHIP_CONF(oct, cn23xx_vf);
|
||||
|
||||
c_pkts_per_intr = (u32)CFG_GET_OQ_PKTS_PER_INTR(conf23);
|
||||
c_refill_threshold = (u32)CFG_GET_OQ_REFILL_THRESHOLD(conf23);
|
||||
} else {
|
||||
@@ -889,6 +895,10 @@ octeon_process_droq_poll_cmd(struct octeon_device *oct, u32 q_no, int cmd,
|
||||
lio_enable_irq(oct->droq[q_no], oct->instr_queue[q_no]);
|
||||
}
|
||||
break;
|
||||
|
||||
case OCTEON_CN23XX_VF_VID:
|
||||
lio_enable_irq(oct->droq[q_no], oct->instr_queue[q_no]);
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -84,7 +84,8 @@ int lio_process_ordered_list(struct octeon_device *octeon_dev,
|
||||
|
||||
sc = (struct octeon_soft_command *)ordered_sc_list->
|
||||
head.next;
|
||||
if (OCTEON_CN23XX_PF(octeon_dev)) {
|
||||
if (OCTEON_CN23XX_PF(octeon_dev) ||
|
||||
OCTEON_CN23XX_VF(octeon_dev)) {
|
||||
rdp = (struct octeon_instr_rdp *)&sc->cmd.cmd3.rdp;
|
||||
rptr = sc->cmd.cmd3.rptr;
|
||||
} else {
|
||||
|
||||
Reference in new issue
Block a user