Skip to content

Commit

Permalink
qlcnic: Check FW capability for TSO
Browse files Browse the repository at this point in the history
Driver checks TSO capability from FW before enabling it.

Signed-off-by: Anirban Chakraborty <anirban.chakraborty@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Anirban Chakraborty authored and David S. Miller committed Jul 10, 2010
1 parent d775351 commit ac8d0c4
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 6 deletions.
7 changes: 4 additions & 3 deletions drivers/net/qlcnic/qlcnic.h
Original file line number Diff line number Diff line change
Expand Up @@ -821,9 +821,10 @@ struct qlcnic_nic_intr_coalesce {
#define QLCNIC_LRO_REQUEST_CLEANUP 4

/* Capabilites received */
#define QLCNIC_FW_CAPABILITY_BDG (1 << 8)
#define QLCNIC_FW_CAPABILITY_FVLANTX (1 << 9)
#define QLCNIC_FW_CAPABILITY_HW_LRO (1 << 10)
#define QLCNIC_FW_CAPABILITY_TSO BIT_1
#define QLCNIC_FW_CAPABILITY_BDG BIT_8
#define QLCNIC_FW_CAPABILITY_FVLANTX BIT_9
#define QLCNIC_FW_CAPABILITY_HW_LRO BIT_10

/* module types */
#define LINKEVENT_MODULE_NOT_PRESENT 1
Expand Down
3 changes: 3 additions & 0 deletions drivers/net/qlcnic/qlcnic_ethtool.c
Original file line number Diff line number Diff line change
Expand Up @@ -820,6 +820,9 @@ static u32 qlcnic_get_tso(struct net_device *dev)

static int qlcnic_set_tso(struct net_device *dev, u32 data)
{
struct qlcnic_adapter *adapter = netdev_priv(dev);
if (!(adapter->capabilities & QLCNIC_FW_CAPABILITY_TSO))
return -EOPNOTSUPP;
if (data)
dev->features |= (NETIF_F_TSO | NETIF_F_TSO6);
else
Expand Down
10 changes: 7 additions & 3 deletions drivers/net/qlcnic/qlcnic_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1226,10 +1226,14 @@ qlcnic_setup_netdev(struct qlcnic_adapter *adapter,
SET_ETHTOOL_OPS(netdev, &qlcnic_ethtool_ops);

netdev->features |= (NETIF_F_SG | NETIF_F_IP_CSUM |
NETIF_F_IPV6_CSUM | NETIF_F_GRO | NETIF_F_TSO | NETIF_F_TSO6);

NETIF_F_IPV6_CSUM | NETIF_F_GRO);
netdev->vlan_features |= (NETIF_F_SG | NETIF_F_IP_CSUM |
NETIF_F_IPV6_CSUM | NETIF_F_TSO | NETIF_F_TSO6);
NETIF_F_IPV6_CSUM);

if (adapter->capabilities & QLCNIC_FW_CAPABILITY_TSO) {
netdev->features |= (NETIF_F_TSO | NETIF_F_TSO6);
netdev->vlan_features |= (NETIF_F_TSO | NETIF_F_TSO6);
}

if (pci_using_dac) {
netdev->features |= NETIF_F_HIGHDMA;
Expand Down

0 comments on commit ac8d0c4

Please sign in to comment.