aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/sfc/net_driver.h
diff options
context:
space:
mode:
authorStuart Hodgson <smhodgson@solarflare.com>2012-07-18 04:52:11 -0400
committerBen Hutchings <bhutchings@solarflare.com>2012-09-07 16:13:39 -0400
commitc31e5f9f97fba32103c8bdd286eee8e3aefbee31 (patch)
tree33fd1ed248a3f4812686af9a2b749c6e6f4b4090 /drivers/net/ethernet/sfc/net_driver.h
parent79d68b370074044d7a9dd789ee103ffe5ef00bda (diff)
sfc: Add channel specific receive_skb handler and post_remove callback
Allows an extra channel to override the standard receive_skb handler and also for extra non generic operations to be performed on remove. Also set default rx strategy so only skbs can be delivered to the PTP receive function. Signed-off-by: Stuart Hodgson <smhodgson@solarflare.com> Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Diffstat (limited to 'drivers/net/ethernet/sfc/net_driver.h')
-rw-r--r--drivers/net/ethernet/sfc/net_driver.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/net/ethernet/sfc/net_driver.h b/drivers/net/ethernet/sfc/net_driver.h
index 24a78a35bddb..0f0926e68963 100644
--- a/drivers/net/ethernet/sfc/net_driver.h
+++ b/drivers/net/ethernet/sfc/net_driver.h
@@ -393,14 +393,17 @@ struct efx_channel {
393 * @get_name: Generate the channel's name (used for its IRQ handler) 393 * @get_name: Generate the channel's name (used for its IRQ handler)
394 * @copy: Copy the channel state prior to reallocation. May be %NULL if 394 * @copy: Copy the channel state prior to reallocation. May be %NULL if
395 * reallocation is not supported. 395 * reallocation is not supported.
396 * @receive_skb: Handle an skb ready to be passed to netif_receive_skb()
396 * @keep_eventq: Flag for whether event queue should be kept initialised 397 * @keep_eventq: Flag for whether event queue should be kept initialised
397 * while the device is stopped 398 * while the device is stopped
398 */ 399 */
399struct efx_channel_type { 400struct efx_channel_type {
400 void (*handle_no_channel)(struct efx_nic *); 401 void (*handle_no_channel)(struct efx_nic *);
401 int (*pre_probe)(struct efx_channel *); 402 int (*pre_probe)(struct efx_channel *);
403 void (*post_remove)(struct efx_channel *);
402 void (*get_name)(struct efx_channel *, char *buf, size_t len); 404 void (*get_name)(struct efx_channel *, char *buf, size_t len);
403 struct efx_channel *(*copy)(const struct efx_channel *); 405 struct efx_channel *(*copy)(const struct efx_channel *);
406 void (*receive_skb)(struct efx_channel *, struct sk_buff *);
404 bool keep_eventq; 407 bool keep_eventq;
405}; 408};
406 409