sfc: make capability checking a nic_type function
Various MCDI functions (especially in filter handling) need to check the datapath caps, but those live in nic_data (since they don't exist on Siena). Decouple from ef10-specific data structures by adding check_caps to the nic_type, to allow using these functions from non-ef10 drivers. Also add a convenience macro efx_has_cap() to reduce the amount of boilerplate involved in calling it. Signed-off-by: Edward Cree <ecree@solarflare.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
dfcabb0788
commit
be904b8552
@@ -3961,6 +3961,22 @@ out_unlock:
|
||||
return rc;
|
||||
}
|
||||
|
||||
static unsigned int ef10_check_caps(const struct efx_nic *efx,
|
||||
u8 flag,
|
||||
u32 offset)
|
||||
{
|
||||
const struct efx_ef10_nic_data *nic_data = efx->nic_data;
|
||||
|
||||
switch (offset) {
|
||||
case(MC_CMD_GET_CAPABILITIES_V4_OUT_FLAGS1_OFST):
|
||||
return nic_data->datapath_caps & BIT_ULL(flag);
|
||||
case(MC_CMD_GET_CAPABILITIES_V4_OUT_FLAGS2_OFST):
|
||||
return nic_data->datapath_caps2 & BIT_ULL(flag);
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
#define EF10_OFFLOAD_FEATURES \
|
||||
(NETIF_F_IP_CSUM | \
|
||||
NETIF_F_HW_VLAN_CTAG_FILTER | \
|
||||
@@ -4073,6 +4089,7 @@ const struct efx_nic_type efx_hunt_a0_vf_nic_type = {
|
||||
.hwtstamp_filters = 1 << HWTSTAMP_FILTER_NONE |
|
||||
1 << HWTSTAMP_FILTER_ALL,
|
||||
.rx_hash_key_size = 40,
|
||||
.check_caps = ef10_check_caps,
|
||||
};
|
||||
|
||||
const struct efx_nic_type efx_hunt_a0_nic_type = {
|
||||
@@ -4208,4 +4225,5 @@ const struct efx_nic_type efx_hunt_a0_nic_type = {
|
||||
.hwtstamp_filters = 1 << HWTSTAMP_FILTER_NONE |
|
||||
1 << HWTSTAMP_FILTER_ALL,
|
||||
.rx_hash_key_size = 40,
|
||||
.check_caps = ef10_check_caps,
|
||||
};
|
||||
|
Reference in New Issue
Block a user