mirror of
https://github.com/torvalds/linux.git
synced 2026-06-03 20:14:06 +02:00
firewire: core: add flags member for isochronous context structure
This is minor code refactoring to add a flag member to the isochronous context structure. At present, it is used only for the option to drop packets when the context header overflows. Link: https://lore.kernel.org/r/20260117142823.440811-6-o-takashi@sakamocchi.jp Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
This commit is contained in:
parent
ea6fdb1cbd
commit
090ac65200
|
|
@ -1064,7 +1064,7 @@ static int ioctl_create_iso_context(struct client *client, union ioctl_arg *arg)
|
|||
if (IS_ERR(context))
|
||||
return PTR_ERR(context);
|
||||
if (client->version < FW_CDEV_VERSION_AUTO_FLUSH_ISO_OVERFLOW)
|
||||
context->drop_overflow_headers = true;
|
||||
context->flags |= FW_ISO_CONTEXT_FLAG_DROP_OVERFLOW_HEADERS;
|
||||
|
||||
// We only support one context at this time.
|
||||
scoped_guard(mutex, &client->iso_context_mutex) {
|
||||
|
|
|
|||
|
|
@ -151,6 +151,7 @@ struct fw_iso_context *__fw_iso_context_create(struct fw_card *card, int type, i
|
|||
ctx->type = type;
|
||||
ctx->channel = channel;
|
||||
ctx->speed = speed;
|
||||
ctx->flags = 0;
|
||||
ctx->header_size = header_size;
|
||||
ctx->callback = callback;
|
||||
ctx->callback_data = callback_data;
|
||||
|
|
|
|||
|
|
@ -2756,7 +2756,7 @@ static void copy_iso_headers(struct iso_context *ctx, const u32 *dma_hdr)
|
|||
u32 *ctx_hdr;
|
||||
|
||||
if (ctx->sc.header_length + ctx->base.header_size > PAGE_SIZE) {
|
||||
if (ctx->base.drop_overflow_headers)
|
||||
if (ctx->base.flags & FW_ISO_CONTEXT_FLAG_DROP_OVERFLOW_HEADERS)
|
||||
return;
|
||||
flush_iso_completions(ctx, FW_ISO_CONTEXT_COMPLETIONS_CAUSE_HEADER_OVERFLOW);
|
||||
}
|
||||
|
|
@ -2925,7 +2925,7 @@ static int handle_it_packet(struct context *context,
|
|||
sync_it_packet_for_cpu(context, d);
|
||||
|
||||
if (ctx->sc.header_length + 4 > PAGE_SIZE) {
|
||||
if (ctx->base.drop_overflow_headers)
|
||||
if (ctx->base.flags & FW_ISO_CONTEXT_FLAG_DROP_OVERFLOW_HEADERS)
|
||||
return 1;
|
||||
flush_iso_completions(ctx, FW_ISO_CONTEXT_COMPLETIONS_CAUSE_HEADER_OVERFLOW);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -546,13 +546,17 @@ union fw_iso_callback {
|
|||
fw_iso_mc_callback_t mc;
|
||||
};
|
||||
|
||||
enum fw_iso_context_flag {
|
||||
FW_ISO_CONTEXT_FLAG_DROP_OVERFLOW_HEADERS = BIT(0),
|
||||
};
|
||||
|
||||
struct fw_iso_context {
|
||||
struct fw_card *card;
|
||||
struct work_struct work;
|
||||
int type;
|
||||
int channel;
|
||||
int speed;
|
||||
bool drop_overflow_headers;
|
||||
int flags;
|
||||
size_t header_size;
|
||||
union fw_iso_callback callback;
|
||||
void *callback_data;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user