qlcnic: bug fixes
Subsystems (3)
cover qlcnic: bug fixes
From: Himanshu Madhani <[email protected]>
Please apply to net.
Thanks,
Himanshu
Jitendra Kalsaria (1):
qlcnic: Fix initialization of work function.
Manish Chopra (2):
qlcnic: Fix setting Guest VLAN
qlcnic: Fix diagnostic interrupt test for 83xx adapters.
Pratik Pujar (1):
qlcnic: Fix operation type and command type.
.../net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c | 4 +-- drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c | 2 ++ .../ethernet/qlogic/qlcnic/qlcnic_sriov_common.c | 2 ++ .../net/ethernet/qlogic/qlcnic/qlcnic_sriov_pf.c | 30 +++++++++++++++++++--- 4 files changed, 32 insertions(+), 6 deletions(-)
Signature · 1 line
1.8.1.4
PATCH 1/4 qlcnic: Fix initialization of work function.
From: Jitendra Kalsaria <[email protected]>
Work function needs to be initialized before we participate in inter device communication (IDC).
--- drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c +2 -2
@@ -2123,6 +2123,8 @@ int qlcnic_83xx_init(struct qlcnic_adapter *adapter, int pci_using_dac)set_bit (QLC_83XX_MBX_READY , &adapter->ahw->idc.status);qlcnic_83xx_clear_function_resources (adapter); +INIT_DELAYED_WORK (&adapter->idc_aen_work, qlcnic_83xx_idc_aen_work); +/* register for NIC IDC AEN Events */ qlcnic_83xx_register_nic_idc_func (adapter,1 );
@@ -2140,8 +2142,6 @@ int qlcnic_83xx_init(struct qlcnic_adapter *adapter, int pci_using_dac)if (adapter->nic_ops->init_driver (adapter))return -EIO ; -INIT_DELAYED_WORK (&adapter->idc_aen_work, qlcnic_83xx_idc_aen_work); -/* Periodically monitor device status */ qlcnic_83xx_idc_poll_dev_state (&adapter->fw_work.work);
Signature · 1 line
1.8.1.4
PATCH 2/4 qlcnic: Fix operation type and command type.
In reply to Himanshu MadhaniFrom: Pratik Pujar <[email protected]>
Operation type and command type is not set correct in back channel response.
--- drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_common.c | 2 ++ drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_pf.c | 4 +--- 2 files changed, 3 insertions(+), 3 deletions(-)
drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_common.c +2 -0
@@ -762,6 +762,7 @@ static int qlcnic_sriov_alloc_bc_mbx_args(struct qlcnic_cmd_args *mbx, u32 type)memset (mbx->rsp.arg,0 ,sizeof (u32) * mbx->rsp.num); mbx->req.arg[0 ] = (type | (mbx->req.num <<16 ) | (3 <<29 )); + mbx->rsp.arg[0 ] = (type &0xffff ) | mbx->rsp.num <<16 ;return 0 ; } }
@@ -813,6 +814,7 @@ static int qlcnic_sriov_prepare_bc_hdr(struct qlcnic_bc_trans *trans, cmd->req.num = trans->req_pay_size /4 ; cmd->rsp.num = trans->rsp_pay_size /4 ; hdr = trans->rsp_hdr; + cmd->op_type = trans->req_hdr->op_type; } trans->trans_id = seq;
drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_pf.c +1 -3
@@ -641,8 +641,6 @@ static int qlcnic_sriov_pf_channel_cfg_cmd(struct qlcnic_bc_trans *trans,int err; adapter = vf->adapter; - cmd->rsp.arg[0 ] = trans->req_hdr->cmd_op; - cmd->rsp.arg[0 ] |= (1 <<16 );if (trans->req_hdr->cmd_op ==QLCNIC_BC_CMD_CHANNEL_INIT ) { err =qlcnic_sriov_pf_config_vport (adapter,1 , func);
@@ -1187,7 +1185,7 @@ static int qlcnic_sriov_pf_get_acl_cmd(struct qlcnic_bc_trans *trans,u8 cmd_op, mode = vp->vlan_mode; cmd_op = trans->req_hdr->cmd_op; - cmd->rsp.arg[0 ] = (cmd_op &0xffff ) |14 <<16 |1 <<25 ; + cmd->rsp.arg[0 ] |=1 <<25 ;switch (mode) {case QLC_GUEST_VLAN_MODE :
Signature · 1 line
1.8.1.4
PATCH 3/4 qlcnic: Fix setting Guest VLAN
In reply to Himanshu MadhaniFrom: Manish Chopra <[email protected]>
o When configuring guest VLAN after PVID configuration, VF was loading with previously configured PVID. Clear the PVID which was previously configured before configuring guest VLAN.
o Display guest VLAN when it is configured
--- .../net/ethernet/qlogic/qlcnic/qlcnic_sriov_pf.c | 26 +++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-)
drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_pf.c +25 -1
@@ -1749,6 +1749,7 @@ int qlcnic_sriov_set_vf_vlan(struct net_device *netdev, int vf,switch (vlan) {case 4095 : + vp->vlan =0 ; vp->vlan_mode =QLC_GUEST_VLAN_MODE ;break ;case 0 :
@@ -1767,6 +1768,29 @@ int qlcnic_sriov_set_vf_vlan(struct net_device *netdev, int vf,return 0 ; } +static inline __u32 qlcnic_sriov_get_vf_vlan (struct qlcnic_adapter *adapter, +struct qlcnic_vport *vp,int vf) +{ +__u32 vlan =0 ; + +switch (vp->vlan_mode) { +case QLC_PVID_MODE : + vlan = vp->vlan; +break ; +case QLC_GUEST_VLAN_MODE : + vlan =MAX_VLAN_ID ; +break ; +case QLC_NO_VLAN_MODE : + vlan =0 ; +break ; +default : +netdev_info (adapter->netdev,"Invalid VLAN mode = %d for VF %d\n" , + vp->vlan_mode, vf); + } + +return vlan; +} +int qlcnic_sriov_get_vf_config (struct net_device *netdev,int vf,struct ifla_vf_info *ivi) {
@@ -1782,7 +1806,7 @@ int qlcnic_sriov_get_vf_config(struct net_device *netdev, vp = sriov->vf_info[vf].vp;memcpy (&ivi->mac, vp->mac,ETH_ALEN ); - ivi->vlan = vp->vlan; + ivi->vlan =qlcnic_sriov_get_vf_vlan (adapter, vp, vf); ivi->qos = vp->qos; ivi->spoofchk = vp->spoofchk;if (vp->max_tx_bw ==MAX_BW )
Signature · 1 line
1.8.1.4
PATCH 4/4 qlcnic: Fix diagnostic interrupt test for 83xx adapters.
In reply to Himanshu MadhaniFrom: Manish Chopra <[email protected]>
o Initialize proper interrupt handler for 83xx.
--- drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c | 2 ++ 1 file changed, 2 insertions(+)
drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c +2 -0
@@ -1383,6 +1383,8 @@ qlcnic_request_irq(struct qlcnic_adapter *adapter)if (adapter->ahw->diag_test ==QLCNIC_INTERRUPT_TEST ) {if (qlcnic_82xx_check (adapter)) handler = qlcnic_tmp_intr; +else + handler = qlcnic_83xx_tmp_intr;if (!QLCNIC_IS_MSI_FAMILY (adapter)) flags |=IRQF_SHARED ;
Signature · 1 line
1.8.1.4
David Miller
maintainerFrom: Himanshu Madhani <[email protected]>
Date: Fri, 26 Jul 2013 16:23:59 -0400
Quoted 1 line
Please apply to net.
Series applied, thanks.