br_handle_frame()函数

/* * Called via br_handle_frame_hook. * Return 0 if *pskb should be processed furthur * 1 if *pskb is handled * note: already called with rcu_read_lock (preempt_disabled) */ int br_handle_frame(struct net_bridge_port *p, struct sk_buff **pskb) { struct sk_buff *skb = *pskb; const unsigned char *dest = eth_hdr(skb)->h_dest; if (!is_valid_ether_addr(eth_hdr(skb)->h_source)) goto err; if (unlikely(is_link_local(dest))) { skb->pkt_type = PACKET_HOST; return NF_HOOK(PF_BRIDGE, NF_BR_LOCAL_IN, skb, skb->dev, NULL, br_handle_local_finish) != 0; } if (p->state == BR_STATE_FORWARDING || p->state == BR_STATE_LEARNING) { if (br_should_route_hook) { if (br_should_route_hook(pskb)) return 0; skb = *pskb; dest = eth_hdr(skb)->h_dest; } if (!compare_ether_addr(p->br->dev->dev_addr, dest)) skb->pkt_type = PACKET_HOST; NF_HOOK(PF_BRIDGE, NF_BR_PRE_ROUTING, skb, skb->dev, NULL, br_handle_frame_finish); return 1; } err: kfree_skb(skb); return 1; }
`smblib_handle_rp_change` 函数是一个处理 Type-C 口模式变化的函数。其定义可能在代码的其他地方,不在你提供的这段代码中,所以以下是该函数可能的定义和作用。 ```c void smblib_handle_rp_change(struct charger *chg, int typec_mode) { if (typec_mode == TYPEC_MODE_AUDIO_ACCESSORY) { // 当 Type-C 口模式为音频附件时,更新充电管理器的配置 chg->typec_mode = TYPEC_MODE_AUDIO_ACCESSORY; chg->chg_param.dcp_curr_max = DCP_CURRENT_MAX; chg->chg_param.dcp_volt_max = DCP_VOLTAGE_MAX; chg->chg_param.dcp_icl = DCP_CURRENT_MAX; chg->chg_param.aicl = AICL_RERUN_THRESHOLD; chg->chg_param.iterm_ma = TERM_CURRENT_MAX; } else if (typec_mode == TYPEC_MODE_DEBUG_ACCESSORY) { // 当 Type-C 口模式为调试附件时,更新充电管理器的配置 chg->typec_mode = TYPEC_MODE_DEBUG_ACCESSORY; chg->chg_param.dcp_curr_max = DCP_CURRENT_MAX; chg->chg_param.dcp_volt_max = DCP_VOLTAGE_MAX; chg->chg_param.dcp_icl = DCP_CURRENT_MAX; chg->chg_param.aicl = AICL_RERUN_THRESHOLD; chg->chg_param.iterm_ma = TERM_CURRENT_MAX; } else { // 当 Type-C 口模式为其他模式时,更新充电管理器的配置 chg->typec_mode = TYPEC_MODE_DEFAULT; chg->chg_param.dcp_curr_max = DCP_CURRENT_MAX; chg->chg_param.dcp_volt_max = DCP_VOLTAGE_MAX; chg->chg_param.dcp_icl = DCP_CURRENT_MAX; chg->chg_param.aicl = AICL_RERUN_THRESHOLD; chg->chg_param.iterm_ma = TERM_CURRENT_MAX; } // 更新完充电管理器的配置后,执行其他操作 ... } ``` 该函数的作用是根据输入的 Type-C 口模式更新充电管理器的配置。在函数内部,首先判断 Type-C 口模式的类型,然后根据类型更新充电管理器的配置。更新完充电管理器的配置后,该函数还可能执行其他操作。 需要注意的是,该函数的具体实现可能因系统和设备的不同而不同,上述代码仅供参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值