qlcnic: Fix tunnel offload for 82xx adapters
Qlogic's 82xx series adapter doesn't support tunnel offloads, driver incorrectly assumes that it is supported and causes firmware hang while running tunnel IO. This patch fixes this by not advertising tunnel offloads for 82xx adapters. Signed-off-by: Manish Chopra <manish.chopra@cavium.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

zatwierdzone przez
David S. Miller

rodzic
a53cb29b0a
commit
4bd7ef0b03
@@ -1824,22 +1824,44 @@ struct qlcnic_hardware_ops {
|
||||
u32 (*get_cap_size)(void *, int);
|
||||
void (*set_sys_info)(void *, int, u32);
|
||||
void (*store_cap_mask)(void *, u32);
|
||||
bool (*encap_rx_offload) (struct qlcnic_adapter *adapter);
|
||||
bool (*encap_tx_offload) (struct qlcnic_adapter *adapter);
|
||||
};
|
||||
|
||||
extern struct qlcnic_nic_template qlcnic_vf_ops;
|
||||
|
||||
static inline bool qlcnic_encap_tx_offload(struct qlcnic_adapter *adapter)
|
||||
static inline bool qlcnic_83xx_encap_tx_offload(struct qlcnic_adapter *adapter)
|
||||
{
|
||||
return adapter->ahw->extra_capability[0] &
|
||||
QLCNIC_83XX_FW_CAPAB_ENCAP_TX_OFFLOAD;
|
||||
}
|
||||
|
||||
static inline bool qlcnic_encap_rx_offload(struct qlcnic_adapter *adapter)
|
||||
static inline bool qlcnic_83xx_encap_rx_offload(struct qlcnic_adapter *adapter)
|
||||
{
|
||||
return adapter->ahw->extra_capability[0] &
|
||||
QLCNIC_83XX_FW_CAPAB_ENCAP_RX_OFFLOAD;
|
||||
}
|
||||
|
||||
static inline bool qlcnic_82xx_encap_tx_offload(struct qlcnic_adapter *adapter)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline bool qlcnic_82xx_encap_rx_offload(struct qlcnic_adapter *adapter)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline bool qlcnic_encap_rx_offload(struct qlcnic_adapter *adapter)
|
||||
{
|
||||
return adapter->ahw->hw_ops->encap_rx_offload(adapter);
|
||||
}
|
||||
|
||||
static inline bool qlcnic_encap_tx_offload(struct qlcnic_adapter *adapter)
|
||||
{
|
||||
return adapter->ahw->hw_ops->encap_tx_offload(adapter);
|
||||
}
|
||||
|
||||
static inline int qlcnic_start_firmware(struct qlcnic_adapter *adapter)
|
||||
{
|
||||
return adapter->nic_ops->start_firmware(adapter);
|
||||
|
Reference in New Issue
Block a user